home

search

Chapter 2

  This was not possible. This was absolutely, completely, and in every way just…not a thing that could happen. There had to have been an error, because the idea that there was that much time to be saved was simply unthinkable, and even if it was somehow possible, it was going to be the result of someone writing a brilliant new algorithm, not a one-line bugfix. I considered the idea that perhaps the algorithm had already been written and simply wasn’t active until I fixed the bug, but I didn’t think that was incredibly likely; the nature of the particur change I’d made was a lot more likely to cause something to stop happening than to start.

  It could have simply been an error in my diagnostic routine, of course, but I didn’t really believe that; I’d been running the same scripts over and over again for years, and while the conformance testing part sometimes failed because I’d broken something, I’d never had a problem running the benchmarks. The most likely expnation was that when I’d run the previous diagnostic two days ago, something had hampered my computer’s performance, causing it to take a lot longer to run the benchmarks, for some reason that I would clearly need to investigate. There were still too many unknowns, and I needed to start pruning them or I was just going to vibrate myself to pieces.

  First things first, I needed a real benchmark comparison, not something from two days ago. I picked up the headset again, but rather than putting it on, I just held the mic in front of my mouth. “Revert to backup knowledgebase, and then try that again,” I murmured. The confirmation split itself onto two lines, showing that it recognized I wanted to perform two actions in sequence, and I gnced at the sigils on the second line and frowned. “Not that. The diagnostic,” I crified. The line rewrote itself as it adjusted its understanding of “try that again,” now showing a scroll with a py button that represented running a script, the cssic Starfleet delta, and once again, the redo arrow. Good.

  Next up, I needed some independent confirmation. I grabbed my work computer, unplugged it and thumbed the power button, and then I got up and strode over to the unoccupied cubicle across the aisle. By this point the computer had woken up to the point that it was ready to accept input, so I pressed my thumb to the screen to unlock it and dropped it into the cradle. The monitor groggily flickered to life, and I was already typing before the backlight even had a chance to warm up. I hadn’t bothered to pull out the chair to sit on.

  It was much easier to locate the offending axiom the second time, and I loomed over the desk with every inch of my five-foot height, reading through the programmer-speak implementation over and over again to make sure I understood its functionality. Reading axioms (or, to be honest, commercial code in general) was a somewhat more difficult skill than working on open-source code. In order to save on storage space, axioms and corolries are recorded in a standard format that doesn’t include all the details from the original code. In particur, it omits the human-nguage comments that programmers use to describe why an algorithm does what it does, along with any shorthand abbreviations and alternative idioms that might have been used to simplify the logic. This standardized, more-verbose (but still human-readable) code format is technically called “Superset Canonical Normalized Form,” but most everyone uses its informal moniker, which is significantly shorter and easier to remember: programmer-speak.1Programmer-speak, along with the Superset programming nguage itself, does not (yet) exist. The closest modern equivalent would be something akin to the assembly-like CIL nguage produced by compiling C#, in terms of how much of the original source code is retained. In AxiomOS, the binary form of programmer-speak is the lowest-level code avaible, used directly by the microprocessor.

  Reading programmer-speak could be confusing for newer developers, in the same way that reading text with all the spaces removed could be. You needed to be able to recognize patterns and isote them from surrounding code based on your guesses at the intended meaning, much like inserting spaces back into an unbroken string of letters. There were any number of tools that made the process simpler, by using heuristics to isote certain common patterns; I never used them, because I was always afraid they would make the wrong assumptions and I’d never even know until those assumptions came back to bite me in the butt.

  Once you’ve looked at a lot of code, though, you begin to get a sense for how and why programmers write things the way they do, when they write…and I’d looked at a lot of code. When I looked at the data types, variable names, and control structures that were still present in programmer-speak, I felt that I started to understand what the original programmer was thinking when they wrote it; there were certain phrases and idioms that could be written in any of a number of ways, and seeing which variant a developer had used was like seeing their handwriting. In its own way, it was extremely simir to reading a text message and using writing style and context clues to get a sense of the author’s emotional state.

  After my third or fourth reread, I felt I had properly grasped the axiom’s function. Unsurprisingly (given how I’d found it in the first pce), it seemed to be used for dispatch control, helping the computer decide which tasks took priority at any moment in time. The bug was exactly where I’d found it the first time, and the off-by-one error seemed to gre at me, pin as day to my eyes, from the middle of the axiom. Off-by-one errors could be quite insidious; they were easy to make and hard to spot without having a solid grasp of their context. We call them “fencepost errors,” from a simple logic problem: if you want to put up ten meters of fencing, with a post at every meter, how many fenceposts do you need? If you said “ten,” then congratutions, you’ve just made your first fencepost error.

  This wasn’t a case of me misunderstanding the intent of the code, I was certain now; the execution path I trimmed by fixing the bug was, by the nature of this axiom, one hundred percent guaranteed not to do anything useful. I sighed. I’d honestly been hoping to discover that I’d been wrong about the existence of the error in the first pce, because that would have made a lot more sense. (I’d never admit it to anyone, but I did sometimes make mistakes. This, however, didn’t appear to be one of them, which meant I still had work to do.) Once again, I changed a zero to a one.

  The benchmarks on my system were probably finished by now. I snatched up the headset from this desk and growled, “Compile and integrate.” Tossing it aside, I turned on my heel and stalked back across the aisle.

  “Oh hey! Maya!!”

  I halted abruptly just before disappearing back into my cube. Nothing I was doing was actually time-sensitive; I could spare a few moments to give Patrick a hand with whatever was stymieing him. I turned to see him waving his computer’s screen in my direction with what, from the color palette, seemed to be our internal work ticketing system.

  He froze, his eyes beginning to widen in a sign of worry, perhaps even fear. Why was he—aw, shit, I had let my affect drop since I wasn’t expecting to see anyone. I hurriedly shoved the confounding performance issue into a corner of my mind, dredging my social skills back to the fore and pstering what I hoped was a warm smile over my resting bitch face. “Oh, hey, Patrick. What’s up?”

  Thankfully, he seemed reassured, because I absolutely did not have the energy to figure out how he was feeling and what would soothe him at that moment. “So, I was asking Riley about this earlier!” he began, and I winced slightly, miming the action of lowering a volume slider. “Oh, I'm so sorry, Ms. Brown, I'm still not used to…” he continued at a much more reasonable, which is to say quieter, level, but I had to freeze the expression on my face as his apology continued for way longer than it needed. He ran out of words and took a breath, and I was very careful not to sigh in relief; he seemed like he was about to get on with whatever it was he'd stopped me for, and the st thing I wanted was for him to apologize for apologizing. “Anyway yeah it's what Riley and I were talking about earlier. I’m working on this bug report that he—”

  “They,” I corrected automatically.

  His eyes widened. “Oh geez, that’s right, I forgot,” he whispered. “Sorry, I just—”

  I lifted a hand, forestalling the wall of text I sensed coming, but at least this particur faux pas was one I had a ready response for. I let my smile drop a little at the same time, and predictably, he froze, looking quite deer-in-the-headlights. “Stop. If you mess up someone’s name or pronoun and you get corrected, do not expin yourself. The damage is already done, and drawing more attention to it will only make it worse. The best thing you can do in that situation is to accept the correction with a single word like ‘right’ or ‘okay’, repeat what you said with the correct pronoun, and move on. Back up and let’s try this again.”

  “O-okay,” Patrick stammered, and I saw his throat bob as he swallowed heavily. “So anyway, this bug report they assigned me—”

  I held up my hand again. “No. Riley’s not here to get hurt by it, so we’re gonna do this all over again, starting with the wrong pronoun.”

  He paused for a moment, brow furrowed. “O…kay?” He searched my face for something, and I guess he found it there, because he took a deep breath and started over. “So, I was asking Riley about this earlier,” he repeated, now in a very quiet voice. “I’m working on this bug report that he—”

  “They,” I corrected.

  “R-right. I’m working on this bug report they assigned me,” he began, looking at me with an expression, and I gave him a thumbs-up, calling up a happy memory to force the warmth back into my eyes. Seeming heartened, he continued. “It doesn’t have a source link, but they said you could probably help me find it?”

  He finally handed his computer to me, and I quickly skimmed through the details on the screen, nodding to myself. This would be an ideal opportunity to teach him about digging out salient details from a user bug report and tracking down a root cause, but my problem wasn’t going to let itself stay sidelined for that long. I could already feel it creeping back into my conscious thought, and I ruthlessly shoved it away, refusing to allow myself to get sidetracked mid-conversation. “Yeah, this looks like a problem with the spreadsheet formu evaluator, I think it’s probably not evaluating external sources correctly.” I handed his computer back to him. “That enough to get you going again?”

  He brightened visibly. “It sure is!!” he excimed, prompting me to lower his volume again. “Right. It sure is,” he repeated, quieter. “I was working on that st week, I know where it is. Thanks, Ms. Brown.”

  I rolled my eyes, though I was secretly pleased that he’d realized that my technique from earlier could be used to recover from just about any kind of social gaffe. He was bright enough to get hired by Setheory, after all. “It’s just ‘Maya,’ Patrick,” I told him, giving him the warmest smile I could manage under the circumstances. “You’re not in college anymore, and we’re all equal in social standing. Welcome to the team.”

  That was all the social I had avaible, and I turned and ducked back into my cubicle before he could reply. I listened for a moment, hiding behind the cubicle wall where I couldn’t be seen, and when I heard his footsteps receding, I breathed a sigh of relief and dropped heavily into my chair. I scooted up to my monitor and checked, and sure enough, the diagnostic had finished, reporting an aggregate performance loss of 33.3%. (Making something take one-third more time, of course, was the reverse of making it take one-quarter less time. Same number.) So much for the hope that this wasn’t what it looked like it was. I slumped and let my forehead fall onto the desk with a clunk.

  Turning my head without lifting it, I grumbled into the headset, “Do it again.” I didn’t bother to look up at the monitor, since I knew my computer would interpret those particur three words as a repeat of the st full instruction I’d given it: to revert its knowledgebase (this time, to the one with the integrated bugfix), and then re-run the diagnostic. Sure enough, the fans spun back up, and I shoved my chair away from my desk, closing my eyes and resting my palms against them as I tried to grapple with the enormity of what I’d (possibly, but seeming more and more likely by the minute) found. That wasn’t enough to quell the restless energy I felt, so I heaved myself to my feet and wandered away from my desk, hoping that moving my body would coax my thoughts into some sort of motion as well.

  Twenty-five percent. Twenty-fucking-five goddamn percent. It was absurd. It was ridiculous. Even more telling, though, was that to the best of my knowledge it had never, not once in the entire history of computing, happened before.

  Modern computers are marvels of power and efficiency, but they certainly didn’t used to be. The decades—closing in on a century, or maybe more, I couldn’t quite recall the dates—since the creation of the first computer, ENIAC, saw revolution after revolution in technological advancement, but every single one had been the result of years of research, experimentation, and optimization.

  Even the term ‘computer’ itself had evolved over the years; first, it had referred to machines that, like ENIAC itself, took up an entire room.2Maya’s history is slightly incomplete here. The original usage of the term ‘computer’, in both our world and Maya’s, was a human occupation: computers were the people whose job it was to make calcutions on rge sets of data, using slide-rules and very impressive mental math skills. Computers that rge still exist, but once they invented computers that were only the size of a bookshelf, we started calling the room-size ones ‘mainframes’ to distinguish them from their smaller brethren which (while technically referred to as ‘minicomputers’) had rgely co-opted the colloquial usage of the word ‘computer’.

  I approached the door to the room which had been retrofitted to house the Setheory engineering data cluster and tapped my ID badge against the reader, secretly exulting in being one of the few people that had permission to walk into the secure area whenever I felt like it (ever since I saved the company from a cyberattack a few years back—long story, not important). I opened the door and stepped through, closing it behind me before I pushed forward through the heavy bck curtain that hung just ahead.

  My ears were instantly assaulted by the sound of hundreds, perhaps thousands, of tiny fans all singing in chorus. I closed my eyes in pleasure, enjoying the feeling of the noise crashing over me like the cold, bracing shock of an ocean wave. I took a deep breath and I couldn’t even hear the air enter my lungs. For whatever reason, the sheer volume of white noise in a data center had always been able to settle my mind like nothing else could, and I felt my shoulders rex a little. My eyes wandered the room, taking in the impressive mass of metal and the slightly chill breeze of the dedicated HVAC system, tirelessly pulling unimaginable amounts of waste heat from the air.

  I had a sudden curiosity: how rge was this room, compared to the one that had housed ENIAC? How far had humanity come, how many orders of magnitude of computing power did this one single room represent, over what we’d barely managed a century ago? I had no way to know, at that moment; my computer was back at my desk, and the tiny waterproof microphone on my smartwatch would never be able to hear me in here, so I couldn’t look any of it up. Instead, I wandered down one of the aisles of racks that were neatly id down the length of the room like the aisles of a grocery store, and I trailed my fingers over the aluminum mesh doors that protected each rack from accidental bumps and mishaps. I could almost imagine it; all those wires and circuitry, the glowing vacuum tubes and indicator lights, the switches and knobs, all to make one single device unlike anything that humankind had ever created before.

  I could almost imagine it, but I couldn’t, quite. Heck, I’d never even held a vacuum tube in my hands, I just knew that they were what we used to use before the invention of transistors. It was much easier for me to imagine that each rack was a minicomputer, instead. I untched and pulled open one of the mesh doors at random, raking my eyes up and down, taking in the panoply of lights, buttons, ports, and cradles. In the minicomputer days, all this hardware would have represented just one single computer, with less power than the one on my wrist right now.

  It wasn’t coincidence that modern computers were faster and smaller than their predecessors, of course. You could yer it in all the abstractions you liked, but at the end of the day, when a computer does work, it’s pushing electrons from one pce to another, here in the real world. Those electrons travel at an actual, physical speed, so if you can make your circuits smaller and put them closer together, the signals coming from one part of your computer won’t take as long to get to the next part. Things get faster.

  It’s not a completely linear retionship, of course. Some advancements in computer speed happen because chip manufacturers figure out a more efficient pattern for the circuits; some advancements happen because software developers figure out a more clever way to shuffle data around from one pce to another. Improvements could come from anywhere, at any time—all it required was for someone to come up with a new idea and then make it work.

  The funny thing is that humans are weirdly predictable when it comes to technological advancements. In the mid-twentieth century, a guy named Gordon Moore realized that despite all the competition and the racing to outdo one another, humanity as a whole had managed an extremely steady rate of progress, which is now known as Moore’s Law: every two years, computing power doubles. Moore himself had only been talking about the rate of miniaturization of electronic circuits, but the decades since had not only vindicated his assertion, they had shown him to have been thinking too small; with minor variances, Moore’s Law holds strong for nearly every aspect of computer progress you’d care to name, even to this day.

  That w gave me an estimate for how much time it should take for this kind of improvement, or at least, how long it had taken others to make simir ones in the past. I’d done the same math ten years ago, when my sorting routine had proven so surprisingly effective. According to Moore’s Law, by giving computers a five percent performance boost, I had personally set humanity ahead by around seven weeks, which felt like an extremely appropriate magnitude for an algorithm I wrote at the peak of my educational career, what Ars Technica had called a “stroke of genius.”

  Now I was supposed to believe that by twiddling a single bit, I had saved humanity eight months on the performance curve?

  I shook my head in disbelief and I closed the rack, wandering out of the aisle to the counter where we kept all the “unusual” computers, the ones not designed to slot neatly into racks. I traced the edges of one of the heavy rectangur boxes sitting there. It looked a bit like the external processor under my desk, but I knew that this behemoth of a pstic-and-metal device was, in fact, a computer in and of itself; we had five of these beasts, and we used them whenever we needed to test how our software interacted with older systems.

  It was the 1980s when this style of computer evolved, I was pretty sure, although this particur model was only a year or two old. The industry originally called them ‘microcomputers’ or ‘personal computers’ (abbreviated as ‘PCs’), but for a span of some twenty, thirty-odd years, this was what everyone thought of when they heard the word ‘computer’ on its own, and that was because this was the point when the general public started getting their hands on them. This particur style, the ‘tower’ computer, was the most common, but you could also y it on its side to turn it into a ‘desktop’ computer.

  That was the end of the nguage shift, for a time. As technology evolved and circuitry continued to shrink at its steady rate, the new and smaller computers it enabled took qualified names like ‘ptop computer’ or ‘tablet computer,’ rgely seen as being inferior to what were considered “actual” computers. (This was, presumably, on account of them being inferior to actual computers, since manufacturers would have had to make tons of compromises to fit all the necessary circuitry into just one retively tiny case.)3For us, the nguage shift did stop there. Maya’s history of computing matches ours, up to this point.

  My wrist buzzed, and I gnced down, expecting to see the glyphs that would report that my computer had finished the benchmark, but I was happily surprised to see a tiny photo of Chris on the screen, forwarded to my smartwatch because I’d left my computer behind. It was just a selfie that he’d taken, but it still made me smile every time he sent me one. I tapped on my watch to start a reply, and then I pressed my lips briefly to the watchface before eyeing the result critically. A reasonably clean imprint of my lips stared back at me as if I’d been wearing lipstick made of white pixels, and I gave my watch a quick breath of air to “blow the kiss” to him, before remembering that my watch’s microphone could not possibly hear the sound of my breath in this room. Sheepishly, I tapped the button to send the message the normal way, and I moved on, to the part of the counter covered in sleek devices made of white pstic, clear gss, and very tastefully-designed curves.

  Apple had always been an industry leader in the tech sector. Not, perhaps, in raw computing power, but they’d always had an incredibly devoted fanbase, along with a knack for coming up with unusual new ideas that broke the mold in interesting ways—as they did when they released the first iPhone in 2001.4In our world, the first iPhone was released in 2007, not 2001. Once the obvious jokes comparing them to the bck monolith in 2001: A Space Odyssey got old, it started becoming clear that people really liked these tiny machines, which were at the time being called ‘smartphones’ on account of how people used to use them to make phone calls, before texting was a thing.

  Over the following few years, other companies tried to capitalize on Apple’s success, releasing their own pocket-size touchscreen devices; at one point, it was rumored that even Google was working on its own smartphone operating system. These new smartphones were, by necessity, vastly underpowered compared to desktop or even ptop computers; the form factor simply didn’t have room for enough hardware to enable the kinds of applications and experiences that a full computer could support. Still, though, it was clear that ‘smartphones’ were set to become the next big technology craze.

  My circuit of the data center brought me back to the entrance as my thoughts brought me back to modern day, and I traced the logo I found on a piece of equipment there, a familiar capital C with a pair of trapezoids projecting to the right. Everyone had thought Commodore was a relic of the past, and no one had been more shocked than Apple when the Big C released the Commodore Pocket Computer in 2005.5Commodore went bankrupt in 1994; the CPC does not exist. The CPC was around the size of an iPhone, if a little rger, and the onboard processor was somewhat less powerful, but it came with what turned out to be a world-changing feature, one which Commodore had barely even noted as a bullet point in its advertising: the so-called Modurity Architecture. In addition to the CPC, Commodore released a number of reted peripherals, most notable of which was the external processor, the many-generations-ancestor of the device that was even now running benchmarks under my desk.

  The benchmarks were probably getting close to done, too. I pushed my way back through the sound-curtain, and right on cue, my watch vibrated again. I gnced down as I reached for the door to the data center to check the sigils I knew I’d find on my watch this time, only to find myself staring, again, at the silhouette of my own lips. Now, however, they were overid with a second pair of lips at a slight angle, these done in green pixels. I jerked my hand away from the door handle, hastily swiping the message off the watch screen as my breath caught in my throat and I felt a furious blush forming, my lips tingling with an imagined kiss.

  I swallowed heavily, pressing myself against the wall of the little alcove where I couldn’t be seen from outside, while I waited for my cheeks to stop burning. It wasn’t an entirely surprising reaction; getting to use my brain to its fullest, like I did when I was tackling a particurly intransigent problem, always left me feeling more powerful, confident, and…well, frisky. Closing my eyes, I took a few deep breaths and forced my brain away from the inconveniently-timed fantasies it was attempting to spin for me, grabbing once again for the thread of history I’d been using to keep myself calm during this unbearably long wait.

  Unlike every other computing device that had been made to date, the Commodore Pocket Computer was capable of something extraordinary: you could give it more computing power, without having to open the case and change its hardware, without even having to turn it off. If your CPC was taking longer than you wanted to perform a task, you could just drop it into your docking cradle, which contained both a full-size computer processor and a fan to cool it with. Almost instantly, the CPC’s performance would get a huge boost; and if that wasn’t enough, you could order any of a number of extra modules with specialty processors to improve performance for specific workloads.6This would have been typical for Commodore: their Amiga computers had quite a few expansion cards that improved raw performance and added specific, targeted computing functionality. However, like PC expansion cards, they required turning the computer off to install the new hardware, along with software written specifically to take advantage of them.

  The public adored it. Corporations liked that the CPC was less expensive (meaning “costs less money to buy” in this case) than the iPhone, due to its underpowered components, and they liked that they could upgrade their workstations piecemeal, without having to throw out old hardware. Gamers liked that by attaching two Graphics Accelerators and an AI Processor to your cradle, the CPC gained enough power to rival any desktop computer. Everyday people liked that the CPC had a battery life measured in days, not hours, again thanks to its underpowered and thus less power-hungry components. And slowly, the CPC managed what ptops and tablets hadn’t: people started calling it, simply, a ‘computer’.

  I finally felt like my pulse was beginning to steady, so I opened the door and stepped back out onto the engineering floor so I could head back to my desk; the very picture of professionalism, I was pretty sure.

  Today, the palm-sized computer is the norm, and the physical interfaces to connect them to expansion modules have achieved some level of standardization between manufacturers. The software that enabled this modur architecture, called AxiomOS, is used on nearly every non-Apple computer, as the old operating systems, with names like OS/2, Windows, and Linux, were simply incapable of the type of hardware flexibility that was the beloved hallmark of AxiomOS. Between hardware and software advancements, computers quickly became more powerful and efficient as the years went by, and nowadays, if you were lucky, a new algorithm or a bugfix might net you a percentage point or two of overall improvement. Not twenty-five. I arrived back at my desk to find the external processor still whirring away. Seemed like the diagnostic was still in progress.

  I felt unmoored. I felt like my axioms, the things that I knew to be true about software in my heart of hearts, were getting scribbled over, and I didn’t like it one bit. I’d been trying to fix a small performance bug. The change I made was the kind of change that would fix a small performance bug. At this point, I was grasping at straws, perversely trying to find a way to disprove my findings; if I could, I’d be back in a world that I knew, a world I was comfortable with. My best hope for that was if, despite all the security I’d built into it, my computer had picked up some sort of virus that I’d unintentionally neutered with the bugfix. If so, the proof would be across the aisle.

  I turned aside from my cubicle and instead entered the opposite one, flopping heavily down into the chair. Since I’d barely ever used my work computer and I didn’t have any extra software installed, its knowledgebase was much smaller; the integration had already finished, with a very simir extent, around eighty-five percent. I left the dialog box alone, for now. This computer didn’t have my “level five diagnostic” script, but I had a little trick I liked to use to get some basic performance metrics, even on clean systems. I picked up the headset and put it on.

  “Calcute a cryptographic checksum over all axioms in the active knowledgebase at highest priority, and record timing information.” This computer didn’t understand my shorthands and colloquialisms the way my personal computer did, so I made sure to give it complete, unambiguous instructions. I waited, but not for long; the external processor’s fans barely even had to spin up before the operation completed. I didn’t much care about the checksum, but I took note of the amount of processor time it had taken: 64.4 seconds.

  I went back to the integration report and clicked [Yes] to apply the changes. After shaking the mouse to verify things were still working, I ran the process again: “Calcute a cryptographic checksum over all axioms in the backup knowledgebase at highest priority, and record timing information.” It didn’t take long. The checksum matched the one from before, but I stared daggers at the timing report, which had measured 48.3 seconds. I didn’t need to pull up the calcutor to recognize that as exactly three-quarters of 64.4.

  Shit. I leaned back in the chair and closed my eyes, doffing the headset and rubbing my temples as I tried to marshal my thoughts into some sort of order. Whatever else I could say about this twenty-five percent phenomenon, it was stubbornly refusing to disappear under close scrutiny, and Occam’s Razor demanded that I start looking for other answers to my questions. The first step to finding answers, of course, was to review what I already knew, and I started ticking off facts on my fingers.

  First: the current version of AxiomOS had a bug that caused processor operations to take quite a bit longer than normal, though not so much longer that someone would sit up and take notice. Even I had barely noticed it, really; I’d seen a couple tiny slowdowns here and there, but I really just used them as excuses to do a fun little deep-dive debugging session. I’d always known deep down that it was a wild goose chase—except, apparently, it wasn’t, because the goose had been running around causing problems this whole time like some sort of untitled video game character.7Maya is referencing a video game typically called Untitled Goose Game but which is, in fact, an untitled game in which you py as a goose; your goal as the pyer is to cause problems for the humans nearby. (I chuckled, because if I didn’t appreciate the jokes I made to myself, who would?)

  Second: this was an incredibly obscure bug, and despite the fact that fixing it was a one-line change, I was entirely unsurprised that no one had caught it yet. Fencepost errors were easy to make and could be hard to see, which was precisely why they showed up so often.

  (I had a secret advantage, though: the same quirk of biology that had robbed me of the ability to intuitively understand other humans had left me with a strong intuition for patterns that went, from what I’d observed over the years, far beyond the norm. To me, when I started looking at code, or architectures, or designs, everything I learned seemingly started to organize itself before my mind’s eye, as real and tangible to me as anything I could see, hear, or touch; thus, I called it, for ck of a better term, my gestalt sense. I liked to use metaphors like stars and gaxies to describe it, but they were a pitiful substitute for what I actually experienced. (I had no evidence that my gestalt sense was in any way reted to my autism, but it made for such a good story that that’s what I’d always told myself.))

  The upshot of this was that I couldn’t expect anyone else would stumble across this bug. The only reason I’d found it was because, to my gestalt sense, a pattern that should have repeated, hadn’t, and that had prompted me to take a closer look. I didn’t think anyone else would find it unless they were as obsessive as me, and there were so many better things to obsess over.

  Third: the careful inspection I’d made before I fixed the axiom the second time had convinced me that the fix was, in fact, safe. There was no way for any outside code to take advantage of or depend on the faulty behavior; all it did was to make things take longer to execute. Even if this bug had been added deliberately (and it would have been a fantastic way to hide a backdoor, I had to admit) there would be no way to take advantage of it; all it would do is make things take slightly-but-not-inconveniently-more time. Ergo, it wasn’t a backdoor.

  But what did it all mean? I rubbed my face and groaned as those three facts hung before my gestalt sense like lonely stars in a night sky, and my brain trying and failing to make a consteltion with them. It wasn’t a backdoor. It couldn’t be a virus, as my work computer was definitely clean. If it was a virus, it had to be in Commodore’s computers, not mine, and that didn’t seem particurly likely either. It might have been some sort of vestigial code, I supposed; perhaps the axiom hadn’t been off by one when it was first written, but it wasn’t updated when its context changed.

  Maybe it was exactly what it appeared to be: a one-line error responsible for the single greatest performance loss in computing history. I scoffed. Not bloody likely, but I figured it at least deserved a mention.

  One thing was for sure, this was way over my trust grade. I needed to talk to someone about this, because trying to make sense of it myself was just causing my brain to spin in useless circles. I stopped by my desk to grab my computer from its cradle, scrolling through the test diagnostic report (which must have finished while I was across the aisle) while I let my feet take me towards Raymond’s cubicle. It wasn’t exactly the same as the first—no two benchmarks ever are—but it concluded with the same line: Aggregate performance gain over all benchmarks: 25.0%.

  When I arrived, I saw Raymond’s attention light was green again; clearly, he’d finished whatever he’d been working on earlier, he’d reset the light, and then someone else had come by while he was absorbed by the next thing. At the very least, he didn’t seem to be poised and staring like he had been earlier; I had to hope that he hadn’t had a chance to get too deep into whatever he was working on now. I hesitated, but we were almost certainly not just coworkers but friends; even if I did end up derailing him, it wouldn’t net me anything worse than a tiny loss of social trust. I knocked softly on the entrance to his cubicle.

  He looked up almost immediately, smiling when he saw me; since he hadn’t exhibited the telltale startle reflex of someone being yanked out of deep concentration, I could assume it was genuine, and I breathed a quiet sigh of relief. “Yo, Maya,” he began, but upon seeing my face his eyebrows furrowed slightly. “What’s up?”

  “Fixed an axiom fencepost,” I replied simply, hopping up to sit on his desk where it wrapped around the cubicle away from him.

  “Nice one!” he cheered, holding up a hand for a high-five, but I shook my head, handing him my computer.

  One of the reasons I appreciated Raymond so much as a coworker was that his mind worked at least as fast as mine, but in different ways; I could trust him to make so many of the same intuitive leaps that I did, and plenty of others that I never would. His eyes widened and his eyebrows shot up when he saw the st line on the screen, as I expected; he’d seen enough of my diagnostic reports that he understood what he was looking at. He even had his own copy of the diagnostic script, though he’d changed which benchmarks it included and he’d stripped out the Star Trek references. Boooooring.

  He started scrolling back up, nodding to himself and muttering softly as he read through the report in reverse, “3D tesseltion, plus twenty-five point four…asymmetric encryption, plus twenty-four point nine…did you check—oh, no, there it is.” He leaned back in his chair as he continued to scroll upwards through my interaction history, rolling his shoulders and stretching his spine, and my gaze snapped over to his chest as though there were a magnet attached to his pectorals.

  I had no idea at all what he did to rex, but I was at the same time totally certain it was rock-climbing. God. He could probably toss me in the air without breaking a sweat, and I wished he would. Raymond was a little over a foot taller than me, but he could probably just, I dunno, lift me up and press me against a wall—

  “What the fuck, Brown,” Raymond said, jolting me out of my reverie. Shit, I hadn’t been too obvious, had I? Thankfully, he was still looking down at my computer, so he probably hadn’t noticed. Whew. I kept my eyes firmly locked to his face, with his gorgeous scruff that I was absolutely not thinking about brushing my fingers over. He finally looked up, nodding as he handed my computer back to me, asking, “Details?”

  “It’s part of the task dispatcher. Axiom fifteen-two-forty-seven.” I nodded to his monitors, and he turned back, calling up the axiom in question onto the vertical one of his three monitors with a short machine-gun burst of keypresses. Raymond always preferred using the keyboard interface over voice control; I supposed if I could type at his rate, I might have done the same, but honestly? I just liked being able to talk to my computer and have it understand me. Bme Star Trek, because I certainly did. He gnced back at me with raised eyebrows, which I interpreted as a questioning look; if it had been surprise, his eyes would have widened. I hopped down from the desk, leaning over his shoulder to point out the line in question, trying extremely hard not to get distracted by the scent of his aftershave or whatever it was, and somehow succeeding.

  “Right there.” I pointed. “That loop going from zero to three? That should be going from one to three.”

  He frowned. “You sure?” He skimmed the axiom again, his clear blue eyes rapidly flicking back and forth. “What if there’s an entry in the zero index?”

  I shook my head, though he wasn’t looking at me to see, and I reached over again to point to another line, tapping the monitor with the back of my fingernail to avoid leaving fingerprints on the screen. “The zero index is explicitly ruled out here. It might get past the initial processing—that’s probably where the performance loss is coming from, I’d guess—but the check down here will always be false if it’s index zero.”

  “Mmm.” He nodded thoughtfully, his deep voice rumbling as he stroked his scruffy jawline the same way I wished I could. “And it’s in a critical section, so there’s no cut-in risk, and it can’t race with anything.”

  “Not just that, but if you check up here,” I added, tapping another location, “it’s not even possible for the zero index to get set in the first pce. This is a fencepost.”

  “That’s outside the critical section, so it doesn’t have the same guarantees, but yeah, it seems like.” He turned away from the monitor, and I hurriedly backed up to hop up onto the desk again. More distance means less distraction. “Looks like it’s a simple bugfix.” But his brow was furrowed and he frowned, shaking his head.

  “Yeah,” I agreed morosely. “So what is it actually?”

  He thought for a few moments before looking up at me. “Backdoor, maybe?”

  I shook my head. “Who puts in a backdoor that can’t be used?”

  “You put too much trust in the software, Maya,” he rumbled with amusement, and hearing my name in his deep voice elicited some sort of sympathetic resonant vibration just behind my sternum. I swallowed hard, willing my body to be not quite so very, and failing. “All it would take is a vulnerability that lets you write into protected memory space. But you’re right, if someone put in a backdoor, why would they make it so hard to use? Hmm.”

  He swiveled back to face his monitors, and I took the opportunity to take a deep breath, as quietly as I could, to try and clear my mind. This was too important to be getting distracted by unruly hormones. I watched as he spawned a slider control I wasn’t familiar with, but my eyes widened when, as he scrubbed it backwards, the axiom dispyed on the other monitor transformed, code getting added and removed before my eyes. It was obviously a timeline scrubber, but where did he get the timeline from? I could only think of one way to do that: “Hang on, do you have every version of AxiomOS installed on your computer?”

  “Only the axioms,” he replied offhandedly, keeping his eyes on the code. “Doesn’t take that much space.”

  He made it all the way back to the beginning and nodded slowly. “AxiomOS one point oh,” he murmured, in a tone that seemed almost reverent. “It’s been here since then, and it’s just as unusable.”

  “Wait, seriously? Damn,” I swore quietly. “So much for that thought.” Without access to the original source, one good way to figure out the intent of a piece of code was to look at the form it had taken when it was first introduced, but this had been here since day one.

  “Well, maybe,” he replied, a hint of something in his voice that I thought was amusement. He typed out another command, and the timeline slider, which had been all the way over to the left, jumped back to roughly the middle—but everything to the left of it was red.

  “Wait, do you have a copy of their development repository?” I whispered, astonished.

  “I wish,” he replied with a chuckle. “But there were beta versions, and alpha versions, plus, oh, one or two that may have fallen off the back of a server somewhere.” He gnced back to shoot me a textbook devil-may-care grin, and my heart skipped a beat. I was pretty sure I responded with the appropriately collegial faux-cndestine chuckle, but it might have come out as more of a giggle. Whoops.

  Turning back to the monitors, he began scrolling back even further, the axiom transforming and slowly getting shorter and shorter, until it abruptly disappeared from the screen. “There we go,” he murmured, going one step forward to bring the code back. “The first implementation we know of.”

  He beckoned me closer and I leaned forward without hopping down, reading the programmer-speak over his shoulder. The original axiom was much simpler, but it held the same bug. It was somewhat easier to see in this version, but no more exploitable, and still the kind of error an engineer might believably make. “Still looks like a fencepost,” I murmured.

  He studied it for a few moments longer, then turned back to me. “Still looks like a fencepost,” he agreed.

  “So? What do you think?”

  He pondered. “Well…hm. Not a virus, obviously. I suppose…well, it’s possible it could be a lie. You ever hear about the Ken Thompson hack?”

  It didn’t ring a bell. “No?” I offered.

  He chuckled. “This is from before either of our times. The TL;DR is, this dude wrote a backdoor and a trojan horse into his compiler, and any code you compiled with it—including the compiler itself—would also get a copy of them. The backdoor would let you log into a system without the password, and the trojan made it so that no software would ever admit to the existence of either.”

  My eyes widened. The implications burst outwards like a firework to my gestalt sense as I comprehended all the various ramifications of the concept in an instant, and I felt my total understanding of software expand and shift ever so slightly. If the only compiler for a system was compromised, then any compiler you wrote would end up simirly compromised by the time the system executed your code. You might be able to detect it by painstakingly comparing storage sizes and free disk space, but if the trojan half of the backdoor were written competently enough—or, terrifying thought, if its author were able to update the trojan using some simirly-invisible control channel—even that wouldn’t be enough to detect the vulnerability. “Holy shit,” I whispered. “That’s brilliant.”

  He grinned. “I know, right? You should read Nexus by Ramez Naam sometime.”

  I blinked at the apparent non sequitur, opening my mouth to ask where that had come from. A moment ter, I realized what the obvious connection must be, and I covered for myself before my confusion made it all the way to my voice box. “Thanks for the rec, I’ll check it out. Do you think something like that’s likely?”

  He pondered for a few moments, joining me in staring down at his long, slender finger tapping idly on the desk. “Not…likely, no,” he finally concluded. “I feel like anyone with enough skill to put in a Thompson-style backdoor wouldn’t need to leave such a visible trace, especially since they’d know that it was only a matter of time until someone like you fixed it.”

  “‘Someone like me’?” I asked cheekily.

  He chuckled. “You know, just your everyday, run-of-the-mill software genius.”

  I preened, grinning at him. “Damn right I am. So, probably not a backdoor. What else?”

  “Hmm. Maybe Commodore put it in on purpose so they could miraculously remove it ter? Some early computer manufacturers used to deliberately hamstring their business computers so they could sell an ‘upgrade’ which was just their technicians going out and removing the inhibition.”8To the best of my knowledge this is a true story, but I’ve forgotten where I first heard it and who exactly it was about. I want to say it was IBM which was pulling that trick, but since I can’t find the corroboration online, I’ve left it vague.

  “Whoa, really?”

  He shrugged. “I mean this was ages ago, twentieth century stuff—we’re talking like, sixties or seventies era.”

  I thought about it for a moment, then shook my head. “I can’t see it. If they tried to sell the idea as an upgrade, people would figure it out as soon as someone checked the axiom changelog, and I know I’m not the only one that does that. The optics would be terrible.”

  Raymond ughed at that, and I was secretly delighted, because oh, what a ugh. “Yeah, you’re probably right about the optics of it these days. Though I meant ‘sell’ as in ‘exchange for money’, not ‘persuade to accept’.”

  I winced, because I ought to have realized that from context, especially given my recent wanders. “Right—I forgot that only organizations used computers in those days.”

  He waved it off, still pondering. “Maybe it’s just a simple performance bug that never got fixed.”

  Now it was my turn to ugh, and he immediately grinned in response, which meant that I was right that he wasn’t serious. “I mean it could be, you never know,” he added, sending me into another peal of ughter. I clutched my stomach, holding up a hand to beg him not to pile it on even further.

  When I finally got myself under control again, wiping tears from my eyes, I replied, “I suppose we should at least allow for it as a possibility, sure.”

  “See, there ya go,” he agreed, his blue eyes crinkling with a smile. “At the very least: yes, before you ask, I’ll pass your code review. Let me know how it goes; I’ll be looking forward to my computer suddenly getting faster during my next update.”

  “You bet,” I replied, hopping down off his desk again. “Thanks, Raymond, I’m feeling a lot better about this now.”

  “No problem.” He smiled and turned back to his computer without saying my name again, which was…I mean, it was okay, obviously. It’s not like I’d deliberately used his name in an effort to get him to say mine again in his deep, beautiful voice or anything like that. I strolled back to my desk, shaking my head at my own ridiculous hormones.

  Once I’d packaged up the fix, sent it to Riley, and tagged Raymond for the code review, it was a bit ter than I usually left the office, but not that much ter. I typed out another quick message to Chris: “I didn’t break my computer, leaving the office now.” I looked at the message for a moment, decided it was too formal after the tone of my previous, and took a deep breath before I tried again: “didn’t break my computer! on my way home!”

  I looked at the new message and shook my head. I felt exhausted, and I absolutely did not have two excmation points worth of energy avaible; I wasn’t sure I could even manage one. I downgraded the first to a period, and it looked better, but I still didn’t like it, so I revised the second sentence: “on my way home, bringing you a present.” That was back to being a little under-enthusiastic, so I repced the final period with a heart. That’d have to do.

  I sent the message before I could decide it needed yet another change, and then I grabbed my computer and slipped it into my skirt pocket, collecting my things and heading out. With work now firmly behind me, I could look forward to my favorite part of the day, and I felt my spirits lift in response.

  After all, Chris was making sagna tonight.

  cirne

Recommended Popular Novels