by Ezra Sidran
I turned, and twisted, and fell in slow motion.
I could see that Stanhope was also falling, ever so slowly to the ground, and Bill had now fastened upon his throat, from which he was tearing great hunks of cartilage and meaty flesh from Stanhope’s body and there was no doubt that that sonofabitch was dead.
Bill’s muzzle was soaked in blood and his eyes were bright and his jaws continued to rip away at Stanhope’s corpse.
I fell hard upon the table and with every beat of my heart I pumped more blood from my wounds. “Bill,” I gasped, “Bill he’s dead. Help me.”
Bill left Stanhope and ran to my side. “We’ve got to get out of here, Bill.” Bill began to lick at my blood but it would not stop flowing. I looked around for anything I could stuff into my wounds. I tore off Finley’s shirt and made a bandage.
“Okay, Bill, we’ve got to get out of here. You lead; I’ll follow.”
Bill looked up at me and he was in charge. Bill was in charge in a crisis like I wished all my life I could have been. Bill will get us home. I held on to his collar and Bill pulled me from the room and the Angel of Death had to settle for Stanhope and Finley because he wasn’t going to collect Bill and me. Not today.
I had no idea where we were in the labyrinth of corridors in Site-R under the mountain. Maybe Bill could smell fresh air; I don’t know. Bill dragged me on and I just held on for dear life. We were both leaving a trail of blood - like a sanguinary Hansel and Gretel - along the hallways.
Bill found a way out. It wasn’t the way we had come in. There was another exit – I know now – to the north, called Portal D. When we made it out, it was dark. We stumbled into the sweet night air and fell down the embankment to the two-lane highway below. That’s the last thing I remember before I woke up, here, strapped to this gurney in this room with you, the Authoritarian Man.
“A Pennsylvania State Trooper found the two of you the next morning; just before dawn,” the Authoritarian Man said. “Your dog wouldn’t let anybody come within twenty meters of you. They had to hit him, twice, with tranquilizer darts.”
“Well now you know everything I know,” I said to the Authoritarian Man. “That’s all there is to the story. Now you know how Bill killed the man who wanted to be dictator and how Bill saved the world. Do you think tomorrow you could let Bill and me go out to that garden?” No sale unless you ask.
“Yeah,” said the Authoritarian Man, “I think that would be okay.”
Sale!
Tomorrow Bill and I will be free.
CHAPTER 5.O
The Authoritarian Man began a new interrogation. He simultaneously pressed the play and record buttons on the tape deck. “This is an interview with Ms. Katelynn Margaret O’Brian,” he said into the microphone and then added the date and time. “Let’s start on the day that Jakob Grant flew out to Washington,” the Authoritarian Man began and then he picked up an ice bag from the table and placed it over a massive purple contusion that blossomed from the exact center of his forehead.
TRANSCRIPTION OF INTERVIEW WITH MS. KATELYNN MARGARET O’BRIAN
Q: Let’s start on the day that Jakob Grant flew out to Washington.
KMO’B: I want an attorney.
Q: Ms. O’Brian, you are not under arrest and you are not entitled to an attorney.
KMO’B: Then I don’t have to tell you anything.
Q: Ms. O’Brian while that is technically true I would like to remind you that we can hold you indefinitely. And we will. It is in your best interests to cooperate with this investigation.
KMO’B: This is in my best interest? That’s a laugh.
[Tape recording muted at this point.]
[Tape recording resumed.]
Q: I apologize for that. Are you ready to answer some questions, now?
KMO’B: Yeah.
Q: Okay, let’s start with the day that Jakob flew out to Washington.
KMO’B: What do you want to know?
Q: Why don’t you just describe the events starting from the airport on?
KMO’B: Well Bill and I dropped him off at the airport. Jake had his old leather bag and his ratty attaché case. He kissed me and he hugged Bill goodbye and then Bill and I drove home in my old VW bug.
Q: Did you notice anything unusual about Jake or his demeanor?
KMO’B: Well, Jake seemed really sad; really depressed. I could tell he didn’t want to leave.
Q: Did Jake mention anything about why Stanhope wanted to see him?
KMO’B: Jake and I don’t have any secrets. I saw the contents of the FedEx envelope. It was just a plane ticket to Washington. I don’t think that Jake knew anything more than I did.
Q: Okay, then you drove home, right? What did you do when you got home?
KMO’B: I tried to keep the rest of the group focused on the project. We were making pretty solid progress. But I couldn’t get my mind off of Nick’s notebook. I had scanned a copy of it before we handed it over to the police detective so I printed it out and went over it page by page.
Q: Did you learn anything?
KMO’B: Yeah, I found out that Nick had a crush on Zoë. So I guess I learned that if you love somebody you should tell them before it’s too late because you might not be around to tell them tomorrow.
Q: Did you learn anything else?
KMO’B: Nick had a big problem with the 3D database. Do you know anything about data structures?
Q: No.
KMO’B: Well a data structure is collection of things called elements. All the elements should be related like, I don’t know, let’s say you’re doing a data structure of cars and the elements could be color, make, model.
Q: Okay.
KMO’B: So, let’s continue with our car data structure. You could also add elements for miles-per-gallon, number of passengers, miles on the odometer. I don’t suppose you know anything about ‘C’ data structures, do you?
Q: No.
KMO’B: Well, in ‘C’ you have to set aside the exact amount of space in memory to hold the values that you want to put there. For example, some of the elements in our car structure that I described are numbers – like the number of passengers – it’s pretty safe to assume that the number of passengers is going to be between zero and 255. And it’s going to be an integer; that’s a whole number to you. We aren’t going to have a value like 3.5 passengers. Well, it takes exactly one byte to store an integer value between zero and 255.
Q: What if you have a number like 256?
KMO’B: That’s a good question. It takes two bytes to store a value that big; but we’ve only set aside one byte. So, what happens is that the number slops into the next address in memory and writes over whatever data was supposed to be there. That means your data gets trashed. Let’s look at some of the other elements in the car data structure. You’ve got miles-per-gallon; that’s going to be some number like 25.5 or whatever. In ‘C’ we call that a floating decimal or floating point.
Q: I’ve heard about floating point errors.
KMO’B: There are a lot of ways floating point errors can occur. It can be something as stupid as a misplaced decimal point.
Q: I’ve heard that.
KMO’B: Anyway, the bottom line is this: data structures are made up of elements. And there is exactly ‘x’ number of bytes set aside for each element in the data structure. If you’re expecting a value that takes two bytes to store and all of a sudden you try to cram in a value that takes four bytes then something, somewhere, is going to get trashed.
Q: So did you discover something like this in Nick’s notebook? Was this the problem that he was working on?
KMO’B: This was the problem that he was working on. Something was trashing the 3D database. But the solution wasn’t in Nick’s notes. Eventually I would discover that there were four pieces to this puzzle and I was still missing three of them. You see, when coders design data structures they often leave some unused space at the end of the structure. Technically this is called ‘for expansion’ it means that you expe
ct you’re going to have to add some more elements to the data structure but you don’t know what yet; so you leave some extra bytes, you know, just in case.
Q: Did Stanhope’s data structure have these extra bytes?
KMO’B: Yes there was an element in the data structure called ‘unused’ and it was two bytes long. It was the last element in the data structure; remember memory for a data structure is allocated in contiguous blocks in the order that the elements are declared so the extra two bytes appeared at the end of one structure and right before the beginning of the next structure. So if something weird happened in those two bytes it was going to trash the next structure.
Q: And is that what happened? Did something weird – as you say – happen in those two bytes?
KMO’B: Yes and no.
Q: Yes and no? What do you mean?
KMO’B: Well, it’s what we call an intermittent problem. Sometimes it would happen and then sometimes it wouldn’t.
Q: I’ve heard of that, too.
KMO’B: And the whole time I had this stupid song, from when I was a kid, just going over and over in my head. I couldn’t shake it. “One of these things is not like the other. One of these things just doesn’t belong.”
CHAPTER 5.1
Katelynn O’Brian was singing just under her breath, “One of these things is not like the other. One of these things just doesn’t belong.” She was stuck on those two lines and she was repeating them over and over unable to move on to the chorus. She had a well-gnawed pencil in her mouth and a cup of cold coffee in her hand. “There’s something I’m just not getting, Bill,” she said to the dog lying at her feet.
Bill stretched and twisted his head upwards to look quizzically at Katelynn.
“I know what you’re thinking, Bill,” Katelynn continued, “It’s got to be something obvious.” Katelynn continued to stare at the computer screen.
Bill blinked twice, yawned, settled his head in between his big paws and tried to discreetly pass some gas.
Katelynn resumed chewing on the pencil and staring intently at the computer while the invisible cloud of flatulence drifted up to her. She wrinkled her nose. “Eww! Bill! Stinky!” Katelynn gasped. “Let’s get outta here!”
Katelynn fled the office in the little yellow house to the safety and fresh air of the back porch. Bill sheepishly followed. “Okay, Bill, no more broccoli and cheese for you. Let’s just keep this our little secret, okay? Let’s not tell Jake when he gets back.” The dog seemed to nod as he settled back on his haunches.
From the back porch Katelynn could see the third floor window in Morton Hall that Nick had been working at the last night of his life. She could also make out the door that led to what had once been Jake’s office two floors below. “You think it’s got something to do with Jake’s old code?” Katelynn asked the big dog. Bill just wagged his tail.
Katelynn resumed chewing on the pencil and staring at Morton Hall. “What was the code that Nick was looking at on Jake’s machine?” she wondered out loud and then answered her own question, “It was that old tactical simulation program he did years ago for the War College. Great; now where am I going to find a copy of it?”
She looked at Bill, “There’s no getting around it, Bill, we must return to the room of stinky death!” Katelynn laughed. Bill wagged his tail and followed Katelynn into the little yellow house. On the way to the back office they stopped at the refrigerator where Katelynn found a slice of turkey for the dog and a piece of cold pizza for herself. “Cold pizza, Bill,” she said, “the breakfast of programming champions.”
Katelynn and Bill went back to the office - the worst of the fumes had dissipated while the two were outdoors - and Katelynn started her search by randomly pulling boxes of CDs and floppy disks from the closet. Whatever method Jake had once used to archive his old work was soon lost as the contents of each box were dumped on to the floor and piled around Bill. After a good fifteen minutes of fruitless searching Katelynn announced, “Bill, what are we doing? Jake has got to know where the files are!” The dog recognized Jake’s name and furiously started wagging his tail in agreement.
Katelynn pushed her way through the flotsam of Jake’s research until she uncovered the buried office phone and dialed Jake’s cell. Jake’s phone didn’t ring; it just immediately dumped her into his voice mail.
“Sweetie, it’s Kate and Bill,” she after the recorded message beeped, “We’re looking for one of your old files. Give me a call when you get this. We both miss you a lot.”
Katelynn tried again fifteen minutes later. “Sweetie, it’s Kate and Bill, again. You there? We still miss you and love you.”
She dialed Jake’s cell phone three more times over the next hour - “Jake? It’s Kate! Pick up!” But she never got through to him. It was as though Jake’s phone was unable to connect to the network.
It was as if Jake and his cell phone were under a mountain.
CHAPTER 5.2
INTERVIEW WITH MS. KATELYNN MARGARET O’BRIAN CONTINUED
Q: So you were unable to reach Jakob Grant via his cell phone?
KMO’B: I never got through. He never called back.
Q: Were you able to locate the missing files?
KMO’B: Yeah, I found them on his hard drive using egrep.
Q: What is egrep?
KMO’B: It’s a program that will search every file on a hard drive for a particular string. You can tailor the search with wildcard characters and file extensions. I remembered that it was a data structure that was up on the screen in Jake’s old office so I ran egrep with the parameters “star struct star dot c.” It found hundreds of data structure declarations but, eventually, I found the one that Jake wrote for the War College tactical simulation program.
Q: Okay, so you found the file; you found the data structure. Was there anything unusual about the data structure?
KMO’B: Remember how I told you about how data structures are made up of elements?
Q: Yes.
KMO’B: Well there were ten elements in the data structure. The first nine were what you would expect. The data structure was used to describe a unit in a tactical simulation that Jake designed for the War College. The elements were the unit’s location, the unit’s destination, the unit’s X and Y screen coordinates, the unit type – you know like armor or infantry or whatever – then a Boolean to tell if the unit was selected or not.
Q: What is a Boolean?
KMO’B: A Boolean is a variable that only has a value of one or zero. Yes or no. True or False.
Q: Okay, then what?
KMO’B: Then there was a pointer to the next unit in the linked list.
Q: What’s a linked list?
KMO’B: It’s a way of storing a list of common things; in this case military units. Every unit in the list – I guess you could call it an Order of Battle Table – points to the next unit in the list. It’s just a nerd thing; it’s not important here.
Q: Okay, go on.
KMO’B: Then the next element was a string of the unit’s name, you know like, “First Armored Brigade” or “Company B” or whatever. Then the next element was the strength of the unit.
Q: Was that it?
KMO’B: No. The last element in the data structure was what I was looking for. It was the second piece to the puzzle.
Q: And what was that that?
KMO’B: A variable called Radio Frequency; it had to be a float because it’s a long number with a decimal point. It was a variable that stored the VHF frequency that the unit transmitted on. I didn’t know why it was important; but it was like the stupid Sesame Street song: it was the only thing that didn’t belong.
CHAPTER 5.3
Katelynn turned away from the computer monitor and said to Bill, the dog, “It’s a radio frequency! I don’t know where this fits in but it’s the only thing out of place.”
Bill looked up surrounded by piles of CDs and floppy disks and wagged his tail, not so much in agreement, as in a general “I’m happy for you” kin
d of way. That’s the way it was with Bill, even if he didn’t understand exactly what was going on, he could still be happy for you. I’m happy for you! Let’s all have a cookie! When’s Jake getting back? Let’s go to the park! Thoughts are transitory things for dogs.
Katelynn got up from the computer and went into the dining room where Zoë, Peter and Shelby were working; their laptops on the table were crammed between the detritus of an all-nighter programming session: piles of pizza boxes, scribbled notes and coffee cups. “Listen up guys,” she announced, “there’s something going on in the 3D database. I want you to keep your eyes open for floating point numbers that look out of place.”
“A 3D database is nothing but floating point numbers,” Peter answered, “you know that Kate.”
“You want us to find a floating point needle in a 3D haystack?” Shelby asked, “How ‘bout a clue? What are we looking for, exactly?”
“Radio frequencies of some sort; I really don’t know exactly. Sorry, Shelby,” Katelynn answered sheepishly. “All I know is that they’re going to appear at the end of the data structure; they’re probably crammed into the “unused” element of the data structure.”
“But the ‘unused’ element is two bytes and you said we’re looking for a long float; it’s not going to fit.” Peter said.
“Okay, let’s work the problem backwards, then,” Katelynn reasoned, “let’s write a little routine that checks every time something gets written or read from the end of the data structure; we’ll do some bounds checking.”
“That’s do-able,” Zoë agreed. “And we can write out to a file whatever values get flagged. I’m on it.”
And this is how Katelynn O’Brian unknowingly set in motion the next horrible chain of events.