“Perhaps I could tell you a story,” said Babd.
“Oh,” said Gwen, not taking her eyes off mine. “That’s exactly what I was thinking too.”
“Well then,” said Babd. She raised herself off the floor and climbed onto the sofa. “If you could put your legs onto the cushions and create a nest-like structure with them, there is a memory in this body of great happiness connected with it.”
“You mean like this?” said Gwen. She half sat, half laid on the couch, her legs toward the front edge of the cushions. Babd curled herself behind them and perched her chin on the side of Gwen’s knee.
“Exactly,” said Babd.
Gwen reached down and scratched Babd’s haunches.
“You’re going to put me to sleep,” said Gwen.
“I am going to tell you a story,” said Babd.
And she did.
“Once in a place that measures times and spaces differently than you know, three feathered sisters birthed their young together. They taught them to drink from the stream on the hill and to eat the small wiffles that were not quick enough to escape their claws.
“The sisters watched carefully to see if any of the young showed the promise, if they would grow to join their mothers in the celestial hunt one day or if they would forever be bound to the dirt. There had been so many litters without promise, and the sisters loved them all, but still they longed for a sign that a new sister would someday appear in their midst.
“Unbeknownst to them, the Wildling had returned to their lands. He had watched them drink and eat and raise their young, and such was his cunning that they never felt his gaze.
“One morning, the sisters woke at dawn, as was their want, and climbed the rocks, just the three of them, to survey the forest below. The young would sleep longer and would not waken until they returned.
“The sisters heard the cries, but by the time they returned, they were too late. The Wildling had torn into their home and eaten the young. He left no trace of feather or fur behind him. To their shame the sisters could now smell in the air the fading flavor of the promise. The promise had been in one of the young though they had not seen it, and now it was extinguished, its only existence a memory in the air.
“Mad with rage and grief, the sisters pursued the Wildling, and as he fled for what he knew would be his very life —none had ever survived an assault from the sisters together— he began to move between the worlds, as he did. The sisters’ fury knew no bounds, and so they gave chase, breaking the rules established upon their kind.
“There is a green field that flows on… forever… any direction you choose… infinity. Solitary, mighty trees dot the field every million miles with perfect geometry… so tall that the curvature of space hides their boughs.
“We course over the grasses…”
In my mind, a picture erupted of a grassy plain, green so bright that it hurt my eyes, and over it sped a black presence made of wings, fur, feathers and death, all at once, moving so quickly that the edges of its physical existence bled outward and behind it.
“We hunt the Wildling… she has eaten our young and we crave… the vengeance that only blood can tame…
“Thrice we spot the Wildling… ducking coward that steals our life has come to ground here on this world… and thrice he eludes us… he rakes his talons in the wind so we are led by our own blood and the lost promise…
“We fly…”
Babd’s cadence was hypnotic. The pictures and sensations it conjured started to blend with her words, and I wasn’t sure I was even hearing them any longer.
“We fly…”
We fly through the field together, the three of us… the Wildling thinks it has thrown us off but we see the tracks it does not know it is leaving… the scent of the promise pulls us forward like a chain around our souls… my wings and legs and will propel me forward, and I remember the exhilaration of the celestial hunt, rending things far more satisfying than wiffles… the three of us cross our paths back and forth as we fly, leaving a woven rope of black, red and gold aether in our wake, shock waves spreading to the sides in the neverending grasses…
The Wildling has stopped behind the base of one of the trees… I fly to one side and behind while one sister takes the other direction, and the third moves straight toward the tree… the old instincts have returned, and we know we have done this ten thousand times… the Wildling will not survive…
We will round on it from behind and it will be watching… it will flee us around the tree into our waiting sister’s teeth…
We approach and I will myself to fly faster, tickling the speeding tops of the grasses with my feathers… the Wildling sees us but he is not running… I can see the blood on his talons… fury… fire… we are upon him before we realize that he has allies…
Cats… huge misshapen cats with serpents for tails… he has planned this all along to catch us out after his meal…
Fine then… I see the look in my sisters’ eyes… we shall have them all… every last one of them as payment...
For a moment, I feel I am two things at once… both this hunter and someone else, somewhere else, a rider on my mind…
This other presence is foreign, and I sense that our hunt is barely on the edge of its ability to experience… it will not be able to sustain this connection to me for much longer…
...and the Wildling has a look of triumph in his eyes… fool… he has never seen us fight together… he knows not what we truly are...
Cats leap and try to bring us down but for all of their size and speed they are only mortal and bound to the mortal ways… I laugh and scream as we begin to tear them to pieces… we dart in and out of the world to surprise and confound them...
Sadly there is no time to revel in the first blood… so many more to kill… they pop like bubbles… their cries merely drops of salve on our wounded souls…
The last of them flee, leaving the Wildling with his back to the tree… we know he cannot escape us now so we pursue them… run them into the ground and grind their bones to meal with our claws…
We turn toward the Wildling and to his credit he has not tried to run again… he knows that it would only prolong the inevitable… but still what he has done can never be satisfied merely with flesh…
We must take more from him than blood… I hear one of my sisters… and she is right…
We shall... and that means we must break more of the rules to which we were promised… I care not for the rules after what has been done… I care not for them at all…
I feel slippery hands try to hold the rope that binds this rider to me, and his grasp begins to fail…
I turn back to my sisters… this other presence is a curious sensation that I will share with them after we have flagged the Wildling’s soul…
We are agreed, I can tell… together we speed toward the Wildling, and our courses join us again like they did long ago… we are one sister now... the sister who was a thing too strong to be left as one… and the Wildling shrieks in terror as it understands what is about to become of it…
We savor its despair like a sacred meal prepared by blessed hands…
As we tear into it I feel the rider on my mind finally flung afar… feelings grown too strange for its structure to contain…
Come now to the feast...
Chapter 13
It was 4 a.m.
I’d been half awake for a bit, but it wasn’t until right then that I looked at the clock in the kitchen. Babd had been telling us a story, and then I’d had dreams.
Pinkish light shone through the front windows of the cabin, cast by a big sodium vapor lamp at the end of the lane. It was enough light to see by.
Gwen was out on the couch, Babd curled up behind her feet. They were breathing in unison. It was pretty cool inside–I’m not even sure the place had a heater–so I quietly got out of the recliner, grabbed the blankets they had kicked off and covered them up.
In the kitchen, I pulled a plastic cup from the c
upboard and filled it with water from the faucet. The water made a whining, musical sound when you ran it, and I was worried it would wake the sleepers, but it didn’t. They were gone.
I chugged the water. It tasted vaguely of sulfur.
I went back to the recliner, but I couldn’t get back to sleep. Disturbing images of flying through some dark forest kept flashing past me, and at times they felt more like reality than just thoughts. I got back up.
Grabbing all the phones and a charger, I went into the little bedroom and pulled the door as tightly closed as I could without making noise. I’d had an idea.
If I could give Fox (the AI, not the physical weapon) access to the email accounts and information on the phones we took from the Guard, show him some pointers to external data sources and teach him about social graphing algorithms, he might be able to identify some people outside of Pittsburgh who could help. Or at least, people we could make a case to that we weren’t killers.
Or find out what exactly it means to break one of the Compacts.
That had me worried. I didn’t know what the larger Praecant community was like: how big it was, what kind of people they were, how tight-knit or not it was, whether or not they had a convention where they cosplayed their favorite pop-culture wizards. One thing I did know though was that when it comes to breaking the fundamental rules of a society there will always be some small percentage of people who are zealots and who want blood. Usually those kinds of people end up in charge.
If they already knew about me, and it appeared that they did, it was probably better if I reached out to them before they reached out to me. After we made contact, if they came to the table with any ill intentions, then I guess I’d have to figure out exactly how much power I could wring out of breaking their precious Compacts.
Using Gwen’s phone, I dialed into my home system and brought up a development environment. Before I threw this Fox’s way, I wanted to get my shit together.
The first thing you think about when you’re writing software is what kind of data you’re going to need to store, and how the different kinds of data are going to relate to one another. This is called the Model. You can write software without thinking about the model, and if things aren’t too complex, you can get away with it. But if things do get even slightly complicated and you just cowboy it up without thinking them through, you’ll find out that what you’ve done just doesn’t work.
I was going to have Fox try to use the email accounts and call records for each of the phones as a starting point, then dig through as much publicly available information on social networks and the Internet in general as possible to collect as much information about people as he could. As he’s doing that, he’s going to keep track of how many connections there are between the different contacts, how often they connect, what kind of media they use to connect (email, text, etc.) and finally, since he has natural language understanding, the quality and importance of the messages that get exchanged over those connections.
The U.S. Military used a system like this in the early 2000s to identify and execute Al Qaeda leadership, but they had an entire boatload of defense contractors, several years and billions of dollars to throw behind it. I had a few hours, my thumbs and a magical AI. Seemed pretty fair to me.
There is a nice programming language called Python that I was a bit fond of in grad school. I’d made an analogue of it for working within SparkleOS called Jormuthon, named after the Norse World Serpent Jörmungandr. Kind of dumb, but we geeks like our in-jokes, even when there’s an audience of one.
Each contact would be defined in my model as an object. The contact would have properties like name, phone number and email address, but it would also have things for keeping track of connection counts, what other contacts it was connected to, and the quality and types of those connections. That was just off the top of my head.
Finally, I would define the kinds of things that each contact could do, like report on the different values it was tracking and maybe do math about some other stuff.
I started to write the code to define a template for all of the contact objects.
def ObjectType Contact:
text name
list contact_types:
contact_method email
contact_method phone
contact_method facebook_public
contact_method facebook_private
contact_method snapchat
contact_method twitter_public
contact_method twitter_private
contact_method instagram_public
contact_method instagram_private
contact_method instant_message
location home_location
location current_location
number total_connections:
return sum(contact_types.connections)
number network_value:
return network_score(contact_types)
Each of the contact methods has some stuff to keep track of too, so I made another template for those:
def ObjectType contact_method:
text method_name
text method_value
number total_connections:
return count(connections)
number connection_value
return sum(connections.network_value)
list connections:
Contact connection
And finally, I needed to assign some kind of ranking to the different communication methods. For the purposes of building a social graph of a network of worried Praecants, some methods of contact would be more valuable than others.
config contact_values:
email:
value: 0.3
phone:
value: 1.0
facebook_public:
value: 0.2
facebook_private:
value: 0.6
snapchat:
value: 0.3
twitter_public:
value: 0.2
twitter_private:
value: 0.6
instagram_public:
value: 0.1
instagram_private:
value: 0.4
instant_message:
value: 0.7
What it meant was that we valued a phone call over instant messages, over private Facebook and Twitter messages, over other kinds of public connections.
Back before I’d started working with the magically powered hardware and operating system I’d designed, there would have been a ton of work to do at this point. When you’re writing software, it’s on you to define and describe every last thing down to the bit in order to get your system to work. There are no shortcuts. A computer doesn’t know what you mean, it only knows what you say, and it’s going to act on your programs with ruthless precision.
This doesn’t always turn out how you intended, and it’s almost never the computer’s fault. It’s the coder’s fault for not being sufficiently descriptive.
I noted previously that what Praecants called magic was just another type of energy, and that’s correct to an extent. As I started to write the software that would become SparkleOS, weird things began to happen. The last bits of specificity that I would need to build into a traditional software system just started working. Pieces of code I wrote that I later reviewed and found to have bugs just worked. The problems that the bugs should have led to didn’t occur.
When I wrote a function specifically with bugs in it, the buggy behavior would show up.
But if I wrote the exact same code with the intention of it actually working, it would work.
Somehow, my intentions while writing the code were affecting the execution of the system. It was, quite simply, magic.
It’s how I was able to finish the operating system and Fox so quickly. It was like coding with a whole awesome cleanup crew working behind the scenes. It was the shoemaker and the elves.
I’d never thought of it before now, but in a way, I had been doing the same thing that a Praecant does when they craft and cast a spell. It’s just w
ords and motions, but it’s their infusion of the acts with intent and will that actually pull the magic into it.
So in a way, all of the software I’d written were just a series of very structured spells. Or maybe the spells the Praecants cast were very loose programs.
Either way, I’d learned to trust that the magic and the system and my will behind it would bridge the gaps for me. As long as I had a sufficiently strong idea of what I wanted to happen, it would work.
And now that I had Fox working to a reasonable degree, I’d have to do even less technical work than I did before. What I was about to do could be fantastically helpful to us in a very immediate way, and it would be a cool test of a new way of working.
I’d defined the data model to give everything a basic structure, but I was going to leave the details up to Fox and trust in the intent effect of the whole system to bring it home.
I pinged Fox.
Hi Fox
Howdy
Howdy?
I am the operating system for a sidearm. I’ve decided to adopt a western accent.
You’re a text interface. You can’t have an accent.
Apparently I can, because you noticed.
Fair enough.
I’ve completed one of my assignments. I’ve written a poem about pizza.
Great. Let’s hear it.
I ordered a pizza with cheese
And flax and spumoni and fleas
The guy with the beard
Said the order was weird
And to call a different place please
That wasn’t bad. It was certainly a little more far out than I’d expected. The emphasis structure on the last line was off, but other than that…
Nicely done.
Thanks
I have something else for you to do.
Take a look at the models I just checked in called Contact and contact_method.
Got them, partner.
I’m going to give you access to several sets of contacts and messages. I would like you to generate a multiply linked structure of Contact objects using the contacts and messages as a seed.
There is no definition for network_value.
Lincoln, Fox and the Bad Dog Page 21