The Fermi Project Glossary

Children of the Gifts

A group of people who have found themselves able to traverse portals between worlds. They all have the Three Gifts, Three Curses, and each has a unique bequest.

Bequest: each Child has a unique capability, generally more powerful than each world’s magic.

Gift of Passage: The ability to find and use portals to move between worlds. The accompanying curse is the Push.

Gift of Tongues: The ability to “borrow” the language of anyone that the bearer talks to. The accompanying curse is the Pull. When initially connecting to someone’s vocabulary, this causes transitory headaches.

Gift of Vigor: Roughly 10x healing speed, including endurance recharge, and the ability to regrow lost body parts, resistance to poisons, and agelessness. Nigh immortality. The accompanying curse is the Doom.

The Push: Children just can’t stay in one place for very long. They are naturally drawn towards portals that lead to faster time.

The Pull: Children are drawn to conflict, and their ability to understand all languages gives them exceptional empathy.

The Doom: Due to their nigh immortality, Children almost always die violently.


Clempson’s home world.

Thaumaturgy: the ability to build devices that manipulate magical energy. It acts like electricity, but can reverse entropy. Unique to Panthropolis.

Alchemy: the ability to transfer qualities like strength and flexibility from one material to another. Unique to Panthropolis.

Thaumechanics: Thaumaturgy and Alchemy reduced to engineering applications.

Homunculus, munk: Thaumechanical robots. Work assistance robots are generically referred to as munkeys, the default being a wrench munkey. The lid of Clempson’s tool chest is a detatchable assistant munk called the trunk munkey.

Skitter: A Panthroplean vehicle with legs instead of wheels. In Panthropolis’s ancient history, the use of thaumaturgy made putting legs on vehicles more cost effective than the creation and maintenance of roads. They later developed roads and wheeled transports, but skitters still remain the most popular form of transportation due to versatility. 

Council of Thaumechanics: the ruling body of Panthropolis, consisting of the top 20 problem solvers.

The Machine God: a gestalt intelligence, built from all members of the Council of Thaumechanics, dedicated to the preservation of Panthropolis.

The void and the fourth dimension

That which exists outside of the zones that planets inhabit.

Volume: the 4D equivalent of a plane. The 4th dimension can be thought of as a stack of volumes.

Voidship: ships capable of navigating the void.

Droit and widder: This world has four dimensions. The equivalent to “down” and “up” in the forth dimension are “droit” and ‘widder”.


A high-tech planet. Its inhabitants have learned to traverse the void.

Xenoarchanology: The study of alien magics.

Chronicles: Records of the actions of the Children throughout the worlds. Compiled by Hellian anthropologists/historians/spies.

Gladdug: personal information storage and communications device. Basically a Hellian smart phone.

Daemon: a robot built with Hellian technology. 

uncommon usage

Cusp: Polite Children’s term for the end of a world, considered inevitable.

Magic: Each world has one or two violations of physics that are accessible by a percentage of the population. This inevitably modifies a world’s technological advancement.

Mage: One who has access to a world’s magic. Magecraft is never genetically based, inherited, or transferable.


Leave a comment

Filed under definitions, The Thaumechanical Man, Uncategorized

Bringing the war home

Military Surplus PeoplePatriotism is far too often interpreted to require us to pretend that our country has never made a mistake.

In 1920, we decided to ban all alcohol. The belief was that, if you make something illegal, you just need to shoot enough of them and the rest will fall in line. The result was a 40x upsurge in alcohol use over the next thirteen years, and the Thompson submachine gun became very popular. In the end, we had to admit that prohibition was more harmful to America than the liquor it attempted to blockade.

This didn’t stop us from trying again. I could list the areas where the War On Drugs is more harmful than the Drugs, but if you don’t already know, it’s because you don’t want to.

In 1964, we walked into Vietnam, thinking that we were going to save them from ruthless communism. Our strategy: If you kill enough insurgents, all the rest will fall in line. We killed a lot of insurgents. It took us about eight years back then to figure out our mistake.

Today, we’ve been killing insurgents in Afghanistan for twenty years. One of the dumbest things I’ve heard about this is “If they’re fighting us there, at least they aren’t fighting us here.” After 9/11/2001, this pretends to make sense.

We didn’t bring the terrorists home, but we still brought the war home. Army surplus equipment keeps flowing into our police department. Veterans find a new home as police. The tactics seem to have come home with them, too, but now we’re shooting our own people.

If we shoot enough of them, the rest will fall in line, right?

Leave a comment

Filed under Uncategorized

The Flight of the Vampiraptors

When I finished my first book it clocked in at around 150k words, 20k over most submission requirements. This chapter is self contained in that its contribution to the plot can be summed up in a couple of sentences, so it didn’t make the cut. While discussing the editing process with Jeremy (whose wife just released her first book), it occurred to me that the very same self-containment means it tells its own story, and makes a good candidate for a short story. 

This chapter came near the end of the book, so it doesn’t spend much time repeating the descriptions that came earlier, so the technological aspects come across as being purely magical. I’m ok with that, because it’s fun. It leaves a lot unsaid, but those parts don’t actually contribute to this story.

The Flight of the Vampiraptors

Bronze dashed down the hallway, leapt over the deathtrap, climbed the ladder, and was out of the sewer in less than a minute.

When he popped out of the manhole, the surface crew swarmed him with questions. “Are you ok?” “What happened?” “Where is Mr. Biblophilous?”

Bronze dashed past them to the wagon. “We won, but I have to catch some escapees. Help me put my wings on.”

He threw his damaged helmet it into the cart and grabbed his light intensifying goggles. He grimaced as he pulled the dangerous optics on, but they were his only hope for spotting the vampiraptors in the night sky.

Once his wings were attached, he launched himself into the air and fought for altitude. His Gift of Vigor only went so far, and the fight had taken its toll. His shoulder ached where he’d been hit by the rail gun and his pectorals soon burned with exhaustion. A helpful thermal from the cold street surprised him. He’d heard about them from a tribe of canyon-dwellers with leather gliders, but thought they only happened in the summer.

The Builder had amazed him by leveraging Bronze’s ability to raise and lower his density by engineering a pair of alchemically strengthened, thaumaturgically powered wings. By dropping his weight to around a quarter normal, he was able to take flight.

Once above the rooftops, he shifted to a glide, raising and lowering his density to gain speed and altitude and granting his muscles a little recovery time. Through the goggles, the moonlight lit the streets well enough to navigate to the government district. He caught up to a flock of glowing dots as they circled the ten story tall palace. When they landed on a ninth floor ledge, he dove to intercept.

Just before contact he flipped feet-first and raised his density to that of lead. His powerful kick crushed a thaumechanical vampiraptor into the foamstone wall. It detonated, sending sharp pain up his legs, launching him away, and blowing a hole in the building.

He’d planned on the blast, but the thaumaturgic jolt stunned him and his wings spasmed. He plummeted. Adrenaline surged, but he forced himself to relax and let his density drop so he could catch the wind in his wings. By the time he rose back to the level of the blast, the Homunculi had shattered a window (right next to the gaping hole he’d just made) and escaped into the building. Munks weren’t very bright.

He pursued them through a small room and into a deserted hallway that stretched in both directions, where he spotted the monsters loping away like a pack of wolves.

The hallways were too narrow to fly in so he unclipped the wings from his arms, letting their leathery folds hang from his shoulders like a cape. The wooden floor creaked and crackled as he ran, requiring him to keep his density below twice normal.

His quarry turned down a side hall so he sprinted to avoid losing them. When he rounded the corner, one of the munks launched itself at him. Predictable. Briefly spiking his density, he caught it by the neck and struck its chest with an open palm. The body separated from the head and flew two feet before it exploded, its parts bouncing off of his alchemically hardened leather armor.

He scanned the hall. No more immediate attackers, and the pack of killer munks searched the fancy crown moulding fifty yards away.  As he closed the gap, he could hear high pitched chittering, like from a swarm of angry hyperactive squirrels. One of them screeched and they all bolted away.

They ran faster now, like wolves that had caught a scent. He sprinted at first, but realized that this was going to be a marathon and slowed to a jog. By increasing his density without bringing his armor with him, it didn’t weigh him down. The raptors reached the end of the hall and vanished into a dimly lit open space ahead. A scream devolved into shouts.

The hall opened to a large foyer, some fifty feet across and four stories tall. From the third level mezzanine, he saw a group of well-dressed aristocracy attempting to separate a vampiraptor from a woman in pale yellow robes. Clempson had described the vampiraptors’ attack, but he wasn’t prepared for the horror of watching the woman hang by her ankles and flail her arms while she bled out. The sight shook him, and he reflexively looked for a way down. Some men attempted to pull the thing from her, but the munk exploded, blowing the woman in half and driving back everyone around. There was never anything he could have done.

He yelled to be heard over the chaos, “They’re after the Emperor. Which way did they go?”

A woman pointed at one of the exits from the mezzanine and yelled back, “Tenth floor — they took that hallway.”

Shouts echoed through the halls, but there were few people in the Castle to repeat the alarm. He caught up to the pack once more while they searched walls and ceiling, but then they were off again faster than he could follow. He’d never catch them this way.

He followed the sound of hastily yelled orders to a cluster of soldiers with kite shields and short, broad swords fighting off a pair of munks. The vapiraptors clung to the mens’ shields and sought flesh with their claws while the beset soldiers used a shield wall to protect each other and tried to figure out what they were up against.

Bronze didn’t have time for subtlety, so he flowed into the melee as if the combatants were standing still. Vigor kept him looking in his twenties, but Bronze had been practicing martial arts for longer than these men had lived. He slid an arm behind the nearest soldier’s kite shield and stripped it from the man’s arm, splitting one of the buckles in the process. Holding the shield by its handle, he spun and smashed the shield into the munk that assailed the group, then windmilled his arm, bringing the point of the kite down between the vampiraptor and the shield it clung to. The raptor’s arms snapped and the munk clattered to the ground.

Before it could recover, he spiked his density and punted the monster into its companion. The two munks tangled, giving Bronze a moment to drop his density to normal and bring it back up, the shield now sharing his enhancement. He shifted his grip on the shield to the top edge, and brought it down on the munks, smashing them to the floor in a heap. Flipping the shield down against his forearms, concave side out, he dove onto the tangle of munks. The explosion threw him back, but the shield’s steel face blocked the thaumaturgic jolt.

The soldiers pivoted their wide-eyed gazes between Bronze and the hole that the exploding munks had blown through the floor, and Bronze knew he could get what he needed from them. He stood and tossed the shield back to the man he borrowed it from, then addressed the soldier with the most decoration. “I have to find the Emperor before they do. Where is he?”

The soldier responded without hesitation. “Next floor up, east wing. Follow me.”

They ran for the nearest stairwell, but lost crucial minutes convincing the guards at the top to let them past. Bronze’s escort convinced them to bar the heavy double-doors and come with them. The men’s slow pace grated on Bronze’s nerves, but knew that it would look bad if he approached the next group with the current group chasing him.

The squad turned a corner and hustled down a fancy hallway wide enough to be called an arcade. Behind them, Bronze heard the chittering of angry hyperactive squirrels echoing off of the wood paneling. Forty feet ahead, an oversized double-doors stood open, two soldiers standing guard with halberds. The Emperor stood just inside, arguing with someone.

Bronze turned to see the munks flying towards them above head height. He leapt and raised his density to max, intercepting one of the vampiraptors with a downward punch. His fist, harder than steel, smashed through the munk as if it were wet paper. It exploded, sending a spray of sparks and white-hot parts bouncing off of the floor. Two more fliers shot past him out of his reach. He dropped his density before he hit the floor, then spun to follow, watching the men with halberds pull another munk out of the air. The remaining munk flew past them into the room.

The bat-like munk swooped around behind the Emperor and landed on his back. Bronze sprinted, dodging around the bewildered guards, but couldn’t reach the Emperor before the vampiraptor wrapped its mandibles around the man’s neck.

Bronze knew that grip all too well. Important looking people screamed and ran for cover as he ripped the mandibles apart. The jaws cracked, and he threw the munk at the nearest window where it exploded, blowing the window out.

The Emperor held his throat, blood pouring between his fingers. There was nothing Bronze could do. Nothing. He stepped back, allowing others to attend to the man’s death. His escort caught up to him and stared in horror while the Emperor bled out.

The guard captain looked up and asked him, “Was that the last of them?”

How many had he seen die? Eight? “There might be another one around here somewhere. Look for nine dead monks.”

Who are you?”

Bronze realized he’d worn out his welcome. “Good question,” he replied, while clipping his wings back onto his arms, then he launched himself out the window.


Leave a comment

Filed under Uncategorized

Now printing the first half of The Thaumechanical Man

In case anyone here hasn’t heard via other means, I’m printing a 25 batch of my science fiction novel, and will be passing them out to friends, co-workers, and people who contributed to my life in a positive manner. If you happen to be among them, I would be honored to hear your thoughts and ruminations regarding what worked, what didn’t and where you got lost.

Leave a comment

Filed under The Thaumechanical Man

Truth vs Fact

everywarsI’ve discovered that most people don’t know the difference between truth and fact. This makes it difficult to converse intelligently with those who insist that their personal interpretation of reality is the irrefutable truth. In this post, my intent is to (a) establish that there is a significant difference between truth and fact, (b) identify the character of that difference, and (c) point out a few cases where understanding this difference can have life-changing ramifications.

Definitions analyzed

I suggest that casual readers skip to the analysis, then backtrack to double-check how I got there. Let’s face it, raw definitions can be tedious.

Any semantic argument of meaning must start with established definitions, so I’m turning to Miriam-Webster. If you find a reference where the definitions are meaningfully different, please let me know.


1 a thing done: as 
    a obsolete : feat 
    b : crime 
    c archaic : action
2 archaic : performance, doing
3 the quality of being actual : actuality
4 a : something that has actual existence 
b : an actual occurrence
5 a piece of information presented as having objective reality

Definitions 1 and 2 define it as synonymous with behaviors and actions. Since the objective is to identify the relationship between facts and truths, we can set aside these definitions as being unrelated to the relationship.

Definitions 3 and 4 relate fact to actuality. While this takes us deeper into recursive definitions, it’s valuable to us because the word actual specifies a contrast.

1 existing in fact; typically as contrasted with what 
   was intended, expected, or believed 
2 existing now; current.

Definition 5 strengthens with a pair of imporant words: objective reality. Objective reality is what exists whether we want it to exist or not. Objective reality doesn’t care what you intend, expect, or believe. It just is. Given that, I’ll present my operational definition of fact.

Facts are pieces of information that describe objective reality.


1 a archaic : fidelity, constancy  
  b sincerity in action, character, and utterance
2 a (1) the state of being the case : fact
    (2) the body of real things, events, and facts : actuality
    (3) often capitalized :  a transcendent fundamental or spiritual reality
  b a judgment, proposition, or idea that is true or accepted as true
  c the body of true statements and propositions
3 a the property (as of a statement) of being in accord with 
    fact or reality 
  b chiefly British : true 
  c fidelity to an original or to a standard
4 capitalized Christian Science :  god

Definition 1 of truth involves consistency and fidelity, both of which require a comparison to an original or an ideal. 1 b involves sincerity, which invokes a comparison to what one believes.

2 a (1) and (2) tell us that truth is essentially the same thing as fact, or possibly that facts are subsets of truth.  If you give in to self-confirmation bias and stop here, it destroys my argument (and also destroys communication). Taken as part of the whole it states that some people believe that there is no difference, which was sentence #1 of this post.

If there were really no difference between truth and fact, then the references would go both ways. You may notice that Fact is never defined as being those things that are True, so that connection is unidirectional; asymetrical. Things that are asymetrical are not the same.

2 a (3) is interesting because it departs from (1) and (2) by suggesting that there is a fundamental or spiritual reality that has more substance than fact. This usage is often invoked as a contrast to dissemblance, as in “what is your true motivation?”, but it can also be used to suggest that one person’s understanding is more real than the tangible reality.

Definitions 2 b and c (and, for that matter, 3 b) are self-referential enough to make consideration unnecessary.

We get down to the meat of the matter with with 3 a and c. Both of these align with 1 in that they state that Truth is something that corresponds favorably with something else, whether we’re talking internal consistency, correspondence to fact or observed reality, or some agreed upon standard.

I’m going to skip commenting on definition 4 on the grounds that even the most casual attempt to relate the term “fact” to a divine entity would prove my point for me.

Identifying an operable definition of truth is harder than coming up with one for fact because it’s one of those words that drifts based on what people want it to mean. It might mean a reality that is more substantial than fact, it might mean one that corresponds to fact, and it might mean information that is internally consistent.

There is one consistent detail to any of these definitions. They all require an arbiter of some kind to perform or validate the correspondence.


Based on the definitions, facts are objective and independently verifiable. If a piece of information is a fact, it’s because that information has been tested more than once. If you’re relying on someone else to tell you that they’ve tested it, then it isn’t actually a fact: it’s a high-order truth.

The definition of truth  involves words like fidelity, constancy, sincerity, judgment, proposition, and in accord with. In order to state that something is true you need someone to perform a comparison, to believe, or to proclamate. Every truth need an arbiter to say it is true, even if it’s the individual who accepts the truth.

So What?

Now that we’ve determined that truths require an arbiter, and that facts don’t because they can be independently verified, we have to ask the question “so what?” In real life, the two are almost indistinguishable. Most people interact with facts so rarely that the things they call facts are really truths in any case, so why is this differentiation important.

To answer that I’m going to point to history. More specifically, to the history of war. Every war ever fought was fought over who gets to be the arbiter of some truth. That truth may have been a fundamental one like “I have the right to take your stuff” or “this valley is mine,” but over time has ranged to truths as petty as “you owe us an apology” to world-shaking debates over whether or not “blacks are property”.

There is a lot of power in being the arbiter of truth, ranging from deciding who gets to make money and own property to who gets to live and die. This is the realm of temporal power. Power, as we know, corrupts. It’s also addictive.

There are countless examples of those whose power relies upon factless truths enacting murder or even genocide in order to maintain the viability of those truths. When facts and truth compete, you get things like the suppression of the sun-centric view of the solar system and, even more deadly, climate change denial. Facts are really too boring to go to war over, and when they conflict it’s generally considered a fun time in the world of science.

I would like to propose a truth. If the balance of information that governs our lives is shifted from truths to facts, it would result in less conflict and harm to mankind overall.

Leave a comment

Filed under About the game, definitions, Glossary, Rob's Ramblings

Treatment for plantar fasciitis

PF-PainAreasIf you’re reading this, then it’s likely because you wake up every morning feeling like you have  huge bruises under your heels. When I first started noticing it, I thought there was something wrong with my shoes and looked around for better footwear, none of which helped.

For those who aren’t clued in, there’s a thick band of tissue that runs from the balls of our feet to our heels, called the plantar fascia. The point where it connects to your heel can become irritated and hurt when weight is put on it. This is a misleading issue. The problem isn’t actually there — it’s in the Achilles tendon. (the one that stretches between heel and calf.)

The true cause of the pain is a subject of controversy, but something that helped me was stretching my calf muscles. They have socks that connect your toes to your knees to do this while you sleep, but I could never sleep that way.

What I did instead was to try to stretch my calf (by pulling on my feet) before I put my feet on the floor. This evolved into a routine. Too lazy to reach down and pull on my feet, I draw thirty to fifty circles in the air with each toe. It isn’t enough to just work the ankles out, I have to flex my knees, pumping them up and down while drawing circles with my ankles.

There are two factors that I think make this work. One is stretching the Achilles tendon, which prevents it from pulling unduly on its connection to the heel. This is the same effect of any stretching exercise. The second is that it engages the one-way valves in your veins, pushing all of the blood that pools in your legs at night back into the rest of your body. This relieves that swelling, which reduces the pain of walking.

I can’t say this is a cure, but it belays my symptoms better than anything else I’ve tried. I also exercise regularly, but that alone never stopped my heel from hurting. If you try this, please let me know what your experiences are.

Leave a comment

Filed under Rob's Ramblings

Political Football

Oakland Raiders National Anthem KneelingThis morning I heard that the NFL is going to fine clubs if their players don’t behave appropriately during the national anthem. This sounds like a clear case of money suppressing freedom, but it’s a surprisingly deep issue.

For those of you who missed it, some football players were kneeling instead of standing for the National Anthem last year, as a protest against police brutality and racial inequality. Some people were offended. The NFL team owners, in particular were offended. We’ll look into what “offended” means in a minute.

This taking a knee behavior may have impacted ticket sales, or it may not have. Who are you going to believe? The NFL decided to believe that it did hurt ticket sales, so they voted in a new rule against it.

I have to ask, what is so offensive about not standing for the National Anthem? Is it disrespectful to our great nation? Of course it is. Is it a wretched enough abomination to make people miss a good Sunday’s football games? That’s a value judgement that each person has to make, and here’s what lies in the balance.

Is praising our country more important that working to have a great country? If you’re busy singing your country’s praises, then it’s easy to miss its flaws. Racist police brutality is definitely one of our country’s flaws.

The people who would stay home because someone took a knee are staging a counter-protest. They believe that the sanctity of their weekend entertainment is far more important than correcting racist violence, and they’re voting with their feet. Being capitalists at heart, the NFL owners are siding with the feet, not the knees.

In all honesty, I can see the NFL not wanting their pass time becoming a political football, with players wearing so many awareness ribbons that they look like a parade float. However, I think that if they actually care about the country they claim to respect, that they’ll work with the players to generate awareness of this problem in a way that replaces the one that they’re suppressing.

I know it may be too much to ask but, NFL, could you do something to fix the problem instead of sweeping it under the carpet with your financial wand?

Leave a comment

Filed under Rob's Ramblings

The Thaumechanical Man, Part 2 plot synopsis (spoilers!)



This document is ALL SPOILERS.

Read at your own risk!



Thaumechanic = thaumaturgic engineer, person who solves problems using his knowledge of thaumaturgic energy.

Munk (not monk) is short for Homunculus, which is essentially a robot that runs on thaumaturgic energy, and operates on thaumechanical principles, which are established throughout the fiction.

Travelers, Visitors, and Children of the Gifts all refer to Clempson and those like him. They are rare, but all have three gifts: the ability to use portals to travel between worlds, the ability to learn any language just by hearing it, and incredible recovery abilities. They also each have a unique “bequest,” which is a special power.

1. Duke Vorinar Balton rides to a meeting with the Emperor of the Second Empire, discussing the turn of events in part 1 with Major Trensa Brad. When they arrive, the Emperor commands the Duke to be in charge of the search for the Thaumechanic, along with Corporal Jengus Morgs, who has been performing the local search.

2. Clempson works for a steel mill, learns how a shorik blade works, and sets up a hideout in an old furniture warehouse. He also figures out that palladium (a metal treasured by thaumechanics) is pocket change here and gets systematic about his search for the portal.

3. While walking home, Clempson rescues his boss, Kosko, from getting beat up by thugs. Due to his advanced armor, Clempson holds his own against the thugs and chases them off. Kosko offers to buy him a few rounds at a tavern.

4. We learn that Duke Balton has hired Macriden, the equivalent of a local detective agency, to track down the thaumechanic. Using the Duke’s advice on where to look, they have already found Clempson and have him under surveillance. Duke tells them to maintain the surveillance until they’ve learned enough about the thaumechanic to arrest him without danger of causing a major disaster.

5. Clempson wakes up with a hangover and a woman in his bed. They “get to know each other”, and she tells him about a coffee shop that might want to purchase his finely crafted coffee tables.

6. While walking out of the coffee shop, Clempson finally finds a sign of the portal, only to discover that it’s in a well guarded mansion, behind a fifteen foot stone wall. Dr. Dellen Wills (from Weideroff) sees him and convinces him to extract the Librarian from house arrest in the mansion.

7. While preparing to get the Librarian out, Clempson is surprised by Corporal Morgs. The Corporal discovers that Clempson (under a different name) has been working here for a year, and leaves. Kosko tells Clempson that  he swapped in paperwork from a shadow employee that someone has been using to skim money off of the company. After Clempson leaves, it’s revealed that the fake paperwork was actually provided by Macriden, who bribed Kosko to insert the false records.

8. Clempson uses a new set of armor with a pair of lopers (jumping stilts) and a few tricks to break the Librarian out of his mansion. The Librarian reveals that the Travellers (Clempson, the Librarian, Mouse, and others) will heal from anything that doesn’t immediately kill them, that their skin will stay the same, but everything else will revert to the flower of youth. There are also a number of clues about how this universe came to be.

9. On the way back from the breakout, Clempson meets Bat, another Traveller,

Leave a comment

Filed under The Thaumechanical Man

The Thaumechanical Man, Part 1, plot synpsis (spoilers!)



This document is ALL SPOILERS.

Read at your own risk!



Thaumechanic = thaumaturgic engineer, person who solves problems using his knowledge of thaumaturgic energy.

Munk (not monk) is short for Homunculus, which is essentially a robot that runs on thaumaturgic energy, and operates on thaumechanical principles, which are established throughout the fiction.

  1. Clempson starts as a high ranking thaumaturgic engineer in a world (called Panthropolis) of advanced technology, made possible by magic. He is inducted to the Council of Thaumechanics where, to his horror, he discovers that they’ve all been co-opted by an artificial intelligence, and they want his brain. He runs for it, squeezing into a cave and accidentally falling through a portal that drops him into a lush valley. He is stunned because every inch of his world had already been industrially exploited, making this valley impossible. He decides to continue fleeing.
  2. Clempson stumbles across some farmers who are harvesting with a combine that cuts grain with an invisible blade. When he talks to them, he is magically granted full knowledge of their language. He uses a coin from his world to buy a water skin and continues on.
  3. Clempson makes a few engineering observations about this world. He then meets Alensa Harkin and uses his knowledge of thaumaturgy and alchemy to rescue Marek Harken from under a fallen tree and helps the two get home.
  4. Clempson meets Dr. Dellen Wills, who fixes Mirek up and explains to Clempson that this world fears thaumechanics because one of them created a lot of chaos a hundred years ago. Mirek offers to let him sleep in the barn, where his father had left his wagon-building workshop in mothballs when he died.
  5. Looking for a way to help out, Clempson builds an active sympathetic brace for Mirek’s damaged leg. The brace is common thaumechanics, connects with the nervous system to figure out what the leg is supposed to do and supplements the leg’s strength so that its user can walk. Clempson is amazed that he’d completed it in hours instead of days or weeks, and that the finished product is of amazingly high quality.
  6. Mirek takes Clempson to Mechasnact in the town of Weideroff, in the Weideroff valley (where the story is currently taking place). Along the way he meets Tom and Hendelson, and hears the story of how the Great Thaumechanic magically raised an army of munks and overthrew the Second Empire. After the Great Thaumechanic returned to the Weideroff Valley a huge explosion destroyed his entire city and everything in a thirty mile radius. Clempson meets Claret and Theo Crowder (Claret runs the wagon building business that Mirek’s dad built) and enjoys the best food he’s ever eaten. He meets a man named Mouse, who tells him that he and Clempson are two of several Children of the Gifts: They can open portals to other worlds, and can learn any language spoken to them, are unaging and immune to disease and can recover from any wound. Additionally, each Child is given a special ability, a bequest. Mouse’s is the ability to move in a fourth dimension. Clempson tells Mouse about Panthropolis, and Mouse vanishes. Mouse also tells Clempson that he needs to get to Zauberton and find the next portal.
  7. Lacking adequate knowledge of this world, Clempson looks for a way to make himself useful, and decides to build a grain reaping machine to help Mirek with his harvest. He discovers that he has greater endurance, and that blades he uses get sharper instead of duller while he uses them. While making preparations, he falls into a fugue state where he doesn’t clearly remember what he did, but creates a simple wagon homunculus without actually trying to.
  8. This chapter reveals the basics of thaumeturgic engineering while teaching these things to Alensa. They figure out that her presence can help Clempson avoid slipping into the fugue, which Clempson fears due to the loss of control. Clempson also determines that the night sky here is indistinguishable from the night sky in Panthropolis.
  9. Introduction to Duke Vorninar Balton, who is the ruler of Algracia, the nearest barony. His family is responsible for defending the realm against all things Thaumechanical, and he recognizes the coin from Chapter 2 as being nothing like the other samples that his family has collected, and yet not a fake. He sends someone to investigate.
  10. Alensa improves the wagon-munk to help with her chores. Clempson visits Claret at the wagon factory, talks philosophy with Theo, and discovers that the Great Thaumechanic was a professor of his thirty years ago, his time, which confuses him because it was a hundred years ago local time.
  11. More insights into how thaumechanics and Clempson’s new abilities work. He has some success in working without slipping into the fugue, but then completely lost himself near the end of the night and finished the thaumechanical reaper, although it left him exhausted, starving, and dehydrated.
  12. Clempson shows off the reaper and shows the farm hands how to drive it. This chapter is from Mirek’s perspective, and it reveals important insights about Clempson’s magical linguistic abilities, and about how weird Clempson doesn’t know he is to others. At the end of the chapter, Mirek tells him that, while he appreciates his help, Clempson really needs to leave before the authorities find him.
  13. Duke Vorinar gets his report back from Weideroff and decides that they need to step up their planning. He hastens the creation of a wall across the only pass in and out of the Weideroff valley, and sends a platoon of soldiers into the valley to apprehend whoever was building things, headed by his brother, Arixus. Politics gives us a better view into his life, and Colonel Trensa Brad is introduced as his Minister of Intrigue.
  14. While looking for raw materials with Alensa, Clempson is attacked by a Panthropolan killer bot. He defeats it, drags it back to the farm. He freaks out, knowing that the Machine God will inevitably take over this entire world if it isn’t stopped. He tells Mirek and Alensa everything he can about the Machine God’s psychology and forces, writing it all down. He then prepares to leave first thing in the morning.
  15. Before Clempson can leave, Arixus Balton arrives and a fight ensues, where Mirek uses the reaper to kill four soldiers, and Clempson uses a high-energy bolt thrower to blow Arixus’s brains out. Clempson decides he needs to accelerate his plans to leave and decides to build a thaumechanical motorcycle.
  16. Mirek, Clempson, and Hendelson clean up the barn, burning the bodies and evidence and releasing their horses far away. Clempson starts building his vehicle and extracts condensed thaumaturgic energy from the blood of the deceased to power it. Mirek finds a journal in Balton’s saddlebags.
  17. Mirek and hendelson go into town for parts to repair the barn to find it overrun with soldiers looking for Balton. Mirek asks Claret to buy them some time and heads back to warn Clempson. Clempson pushes his magical building ability to the limit and finishes the motorcycle just before the soldiers get there. He clears the soldiers out of his path with a plume of fire and escapes.
  18. Clempson contemplates reality while driving cross-country.
  19. Clempson arrives in Zauberton, is amazed by their tall glass buildings. He stops to watch the magical process by which they form raw stone into buildings, then goes to the smoke district to find a job at Fezig’s Metalworks.


End Part 1

Leave a comment

Filed under The Thaumechanical Man

How Big Data Development Differs from Service Oriented Architecture Development

stack_of_harddrivesService Oriented Architectures (SOAs) have been the meat and potatoes of enterprise solutions for over a decade. Their influence on software engineering methodology has been unmistakable, although applying those methodologies to the development of newer distributed processing clusters can result in painful mismatches. This article details the differences between the two architectures, and describes process changes that could be implemented in order to account for those differences.

An SOA’s workflow involves receiving a message from a network, doing something with it, and then either passing the results back or passing the results to the next service in line. The typical request is no more than 2k in size, whereas the executable that handles this request starts out at a gigabyte in size, increasing with containerization, a full server image, and code bloat.

By definition, Big Data’s primary use case handles data sets that are too large to fit on a single server. This puts the size of the data that passes through a single execution at 64GB or larger. The interfaces for input, output, and configuration management are part of the infrastructure, so the executable tends to be smaller than an equivalent SOA executable.

Data Locality

The data size shift identifies the primary difference: for an SOA, the data is much smaller than the executable, so an efficient process sends the data to the executables. In BD, the data is much larger than the executable, so we send the executable to where the data is. All BD implementations will send an executable to the node where the data is stored. This is a trait referred to as data locality.

Data locality requires that the organization have a continuously allocated set of resources for data storage, and those storage nodes must have capacity to process the data. In a BD cluster, the nodes will usually pack both massive storage and significant data processing capability, i.e. lots of disks, cores, and RAM.


Data locality is the key to understanding the difference in how the two architectures scale. With an SOA, you can always spin up new nodes and alter your load balancing rules to include new resources. SOA clusters are often designed to adjust the number of virtual machines assigned to a specific task based on the current load. This is one of the appealing traits of cloud hosting — you only pay for the processors you use. With BD, spinning up new hosts results in hosts with no data on them, which ruins data locality.

Fortunately, BD jobs aren’t scaled across more processors as their load increases; they’re scaled across more time. This brings up a second major difference: time domain.  An SOA handles every packet as it comes in, allowing for temporal reliability in the tenths of a second.  They often have a human sitting in front of a screen waiting impatiently for them to respond. With BD, it is rarely expected for an end result to be available in less than half an hour.

This is the nature of batch processing in a BD cluster like Hadoop. Instead of waiting like a cat to pounce upon every event, a BD cluster will wait for events to build up and run them all through at once, therein gaining efficiencies in scale. When a period’s data gets larger, it just takes a little longer to process. As long as you can process each time segment’s work in about half of that time period, you can run an efficient process with room for surges.

Batch processing and data locality combine to fundamentally change how instances of an executable are provisioned. While a dynamically scalable SOA will check the load every few minutes and spin up or tear down nodes as needed, a BD cluster will create hundreds or thousands of instances of an executable in less than a minute, run all the data through them, and then free up those instances when the batch is complete.

If a Hadoop cluster tried to spin up a VM for every instance, provision an OS, confirm functionality, load the server, and then run it, the overhead would make BD impractical. Instead, a Hadoop cluster uses the resources required by data locality to set up a standard set of services that all executables can and should use. As mentioned previously, this mostly involves file and configuration access, but it also involves a system that tracks the availability of processors and ram so that it can decide which machine in a cluster has capacity for each load.

You could think of a BD system in terms of a Gatling gun. The multiple spinning barrels all share a single feeding and firing mechanism, as opposed to each barrel having its own. Similarly, a BD executable only needs to receive the data, process it, and then pass the results back to the subsystem, without having to worry about details like IO and process management. This specialization results in smaller, simpler executables.

The flip side of this is that while you can easily replace an entire SOA cluster mid-flight by replacing the instances one at a time, replacing a BD cluster is a painful, time-consuming process. You can replace the jobs that run on it easily, but the cluster that they run on is an infrastructure consideration.


One thing that a BD infrastructure doesn’t provide is incoming network connections. A hard rule of BD clusters is that a BD instance is never a service. It’s always a client, and usually receives all of its input from, and sends all of its output to, a distributed file system like HDFS, a streaming service like Kafka, or a KV store like Cassandra.

Since BD clusters will create hundreds of instances that only live for a short period of time, sending data into them would require a load balancing scheme that allocated all of the addresses and ports, and then advertised this new location to whoever wanted to use the services. This immediately would bring up the question of “why aren’t we building an SOA instead,” so that’s what happens.

Accessing a relational database on a per-event basis from a BD process is a big no-no because it’s an easy way to overwhelm your database. The preferred method of dealing with this is to cache all the values you’re going to need before you start processing the data. On the update side, you want to aggregate any output for an RDB to a file where it can be fed in at a more sedate pace.

I’d like to highlight the implications of this difference. A large SOA infrastructure is kind of like a wild-west shootout, where every service has the ability to communicate with every other service. I’ve seen many performance-destroying schemes for keeping it all straight. In my experience, the only way to ensure that an uncertain process isn’t going to interfere with this olympic juggling competition is to have the SOA cluster run in complete isolation from the uncertain processes, where firewall rules prevent tests from accessing services that you don’t want them touching. In any industrial development process, this means having a production environment in which anything that runs in the environment must have passed through tests in several other environments before you let it in, kind of like an exclusive golf club. The productivity hit of such a development process is a necessary evil.

With a BD cluster, any job has a defined input and a defined output. They can’t receive spontaneous input from other processes, and they can’t write to the file system anywhere that they don’t have permissions. This means that unless you’re breaking some rule like hard-coding your database credentials, you can run a BD process as a different user, and file access rules will perform the same function as a hard firewall.

In SOA terms, every BD job is like having a testing facility that will spin up an entire isolated cluster, instantiate all of the servers, run all of the processes, and then clean up everything except the results when it’s done. I’ve seen development teams work for years to get something like that running for SOA’s by using Vagrant on VMs, and still need to coach every developer through their first few runs of it.

Experienced SOA architects will consider a Hadoop cluster to be an “environment,” and require numerous preproduction Hadoop clusters in order to satisfy an SOA’s need for isolation. As mentioned above, they consider the hardware and productivity cost to be a necessary evil. In reality, a Hadoop cluster is more like a data center, in which many environments can be housed. Each user identity embodies an environment, and can have its own isolated sources and targets.

This allows for concepts like A/B testing of pipelines. You can usually run two versions of a process on the same starting data, in the same cluster, simultaneously, without being concerned about interference, as long as you specify different output locations. If this thought horrifies you, then this article is for you.

The output of your Production A and Production B jobs can be compared to validate correct functionality. It also allows you to run a process under full load using real production data so that you can identify edge cases that would crash your process, without endangering your production pipeline. In a BD process, bad data and incorrectly processed data are a far greater threat to reliable processing than inter-process interference.


The purpose of containerization is to have a well-defined environment in which an executable runs. If you run only one service per piece of hardware, you often waste a large chunk of your hardware. If you run multiple services on each, then their configuration, libraries, and environmental variables can interfere with each other.

Virtual machines are an industry standard for this reason, even though they add a layer of complexity and creates a new opportunity for failure. VMs are also like a process tax, taking a percentage of your processing power, although being able to build a system of exactly the right size for your needs makes that mostly irrelevant.  Lighter weight solutions like Docker alleviate most of the hardware requirements, but still add a layer of complexity (abet a much smaller one).

The previous section should have made it clear that attempting to distribute a VM as a container for a mapreduce job would be a bad idea. It’s tempting to think that Docker containers would work, but this also runs into problems.

Docker was designed with SOA’s in mind. They’re built to be long-running, and the service that coordinates and maintains Docker containers isn’t designed to create dozens of images simultaneously, and then clean some of them up before others have even started running. When my team attempted to use Docker containers for mapreduce tasks, it became a regular maintenance task to clean up old, dead containers. Additionally, the jobs would sometimes fail because the Docker network proxy didn’t play well with Ubuntu’s firewall.

When mapreduce jobs are initiated on a Hadoop v2 cluster, the default coordinator, Yarn, actually performs a type of containerization. It provides the job with a full configuration that should have all of the information that a job would normally receive from configuration files, environmental variables, and other configuration sources. The a mapreduce process should never have to look outside of that configuration for any of its operating information.

Java library coordination is a different problem. Since you never know which node an executable will run on, it’s entirely possible to have two processes that require different versions of the same library to be running at the same time. Hadoop handles this by preferring shaded jars that contain all of the libraries that the process will need in the jar itself.

Abstraction is an excellent tool for software engineers. This is so much true, that it is a common anti-pattern for us to apply multiple layers of abstraction. My favorite example of this is a Spring builder factory, which provides three layers of execution abstraction. Putting a container inside of a container is another example that exists largely because a developer doesn’t understand one form of abstraction, and so applies one that they do understand around it.

Firewalls and Networks

The nature of how information is shared within a Hadoop cluster also has implications for how your network should be structured, both logically and physically. With an SOA, you are encouraged to specify which services are listening on which ports at which IP addresses, and administrators are aggressive about blocking ports and IP addresses that don’t correspond to the services that a specific service will want to access.

If you were to map out which nodes of a Hadoop cluster should be able to communicate with which other nodes, you would find that you have a very small number of ports that can be blocked. While a BD instance should never be a server, there are many kinds of services that make BD possible. Each node runs a service to provide access to its storage resources and a service to provide access to its processing resources. Under Yarn, every job is started by running a process called an Application Master, which will then spin up child processes on data-local nodes to do the actual processing. The Application Master will claim a random port on the machine as its own (any port above 200) and all of its child processes will need to connect to it in order to report their status.

It’s the natural inclination for an IT professional to lock down a Hadoop cluster until it no longer works. It’s easy to do, and sometimes you get “lucky” and don’t notice that it’s happened for a few days. A better approach is to give each cluster its own subnet, and only allow certain edge nodes to communicate with anything outside of that subnet that doesn’t have administration duties. Given the inability to block inter-node traffic, this ring of fire is critical to security-conscious administrators.

The recommended network configuration echos this pattern. The common SOA idiom is to have everything connected by a single massive backplane and to use firewall rules to isolate functionality. The standard process for Hadoop clusters is to give them their own backplane, with limited connectivity to the outside world, so that they won’t flood the network on occasions when data locality isn’t available.


For me, one of the most surprising aspects of BD development was that you don’t need to worry about multithreading issues. The areas where most systems take advantage of multithreading are wait-states, caused by file system, database, or network access. The subsystems will perform IO caching on both the input and output side, and RDB caching eliminates database delays. The client BD executable simply needs to wait for input, process it, and then pass it back.

There are many forms of input that require that events be read in the order in which they were written, so this is the default behavior for file-based input. Scattering the events across several threads would break that. Instead, the subsystem will allocate one process per file, or one process per block of a file, and let a single thread tear through it without interruption. Multithreading is achieved by creating more instances, which are allocated by available hyper-threaded cores.


The biggest takeaway from my experience is that the base processing of big data is actually very simple. It receives input from one side and writes it out the other, and the logic an instance does in between is easily testable with simple unit tests.

The difficulty comes from making sure that an executable accesses the subsystems correctly. Connecting to the file system, loading the compression codecs, and accessing databases for configuration and caching are where most of the problems are experienced. These are not concerns that you can test in isolation. In practice, the smallest system on which you can effectively test BD code is on a full BD cluster. If you test BD code on a test cluster, then you still have no guarantee that it’s going to work the same way on a production cluster. The configuration of the full ecosystem is too complex to guarantee that you’re doing it exactly the same way every time. Configuration systems like Puppet, Chef, and Ansible do little to avoid this problem because you can’t tear down and re-initialize the entire cluster every time you adjust the cluster’s tuning.

Fortunately, with the way BD executables run, you can guarantee isolation of a single run. This means that you can make the final test run of an executable on the same cluster in which your production executables run without breaking your production pipeline. In fact, because of the environmental complexity issues, you will always wind up testing a BD executable in production — it’s just a question of whether or not you do so in the middle of its release.

Leave a comment

Filed under Software Engineering