MORE ABOUT THIS BOOK
THE BUG (Chapter 1)
A computer can execute millions of instructions in a second. The human brain, in comparison, is painfully slow. The memories of a single year, for instance, took me a full thirty seconds to recall. Which is a long time if you think about it. Imagine a second-hand sweep going tick by tick halfway around the face of a clock. Or the digital readout of light-emitting diodes, with their blink, blinkâ€"thirty blinksâ€"as they count off time.
The immigration agent at the San Francisco airport was a pleasant-faced young man, not at all threatening, the sort who does his job without particular fervor.
Itâ€™s right on the landing card, I wanted to say, but Iâ€™d learned not to be belligerent in circumstances like these. â€œOne. The Dominican Republic.â€
He kept his face toward me, a certain blankness undoing his pleasant expression, as his hand disappeared under the counter of the little booth that stood between us. I knew he was putting my passportthrough a scanner. The first page of the United States passport has been machine-readable for years.
Then we waited.
â€œNice trip, Miss, uh â€¦â€
â€œMs. Walton. Yes.â€
The immigration agent looked down at his computer terminal, his hands still under the counter of the booth.
Then he said, â€œGood weather there this time of year?â€
â€œYes. Not too bad.â€
Chitchat. Filler. His face trying to take on its pleasant expression again. Undone by his eyes flicking toward the screen half hidden under a shelf in the corner of the booth. He was waiting for an answer. Should I be allowed to pass, or should I be questioned? Was I what I seemed to be: an innocuous middle-aged woman whoâ€™d gone to get herself some sun in mid-November? Or was I a well-disguised drug runner, money launderer, sex slaver? He could do nothing until he heard from the system.
And so we waited. Tick-tock, blink-blink, thirty seconds stretched themselves out one by one, a hole in human experience. Waiting for the system: life today is full of such pauses. The soft clacking of computer keys, then the voice on the telephone telling you, â€œJust a moment, please.â€ The credit-card reader instructing you â€œRemove card quickly!â€ then displaying â€œProcessing. Please wait.â€ The little hourglass icon on your computer screen reminding you how time is passing and there is nothing you can do about it. The diddler at the bottom of the browser screen going back and forth, back and forth like a caged crazed animal. All the hours the computer is supposedly saving usâ€"I donâ€™t believe it, in the sum of things, I thought as I stood there leaning on my luggage cart. It has filled our lives with little wait states like thisone, useless wait states, little slices of time in which you canâ€™t do anything at all but stand there, sit there, hold the phoneâ€"the sort of unoccupied little slices of time no decent computer operating system would tolerate for itself. A computer, waiting like this, would find something useful to do: check for other processes wanting attention, flush a file buffer, refresh a cache, at least.
Which is what I suppose my mind began doing with the pause at the immigration counter: some mysterious housekeeping process of the brain, some roaming through the backwaters of the synapses, trolling memory, cleaning lost connections â€¦
Itâ€™s the Telligentsia database! came the thought out of somewhere. Then came an understanding, step by step, like a syllogism: The system weâ€™re waiting for was made by Telligentsia. Telligentsia, where my technical life began. So itâ€™s my fault. This particular wait state is something I myself helped visit upon the world!
I looked behind the counter at the agentâ€™s terminal: Yes. That damned transaction interface. The Immigration Service was one of our first customers. In 1986, they were going to â€œrevolutionizeâ€ international arrivals with our database. And here it still was after all these years, our software, its transaction interface, that sluggish component we testers had complained about to the programmers, too slow, too slow, whoâ€™ll put up with this waiting? Ah, I saw how the immigration agent had learned to tolerate this waiting. A certain suspension of himself; an unattractive slackness in his body, his mouth; a gone-to-nowhere look in his already vague eyes. Odd how adaptable human beings are. The programmers had long accustomed themselves to waiting on machines, and then we, the software testers, soon adapted; and with every shipment of our software, out it spread like a virus to the world: human beings everywhere learning to suspend themselves, go elsewhere for little slits of time, not exactly talking or working or doing anything, since any momentâ€"you never know which oneâ€"the system may come back, respond, give you the answer.
The long thirty seconds â€¦ Funny: It was the same pause wecomplained about. Strange how in all this time no one had tuned or fixed it. But of course it was still there. Who could have possibly worked on it? Soon after we went public, Telligentsia was sold off to another company, then that company was sold off as well, and our software disappeared further and further into the hands of people whoâ€™d never met us. Who would there be in all those changes to remember our problems, our arguments, the things we tried and abandoned? Funny to think of the code remaining there, unchanged, as it passed from hand to hand, newer and newer layers of code laid down over it like sediment. And insideâ€"deep inside, in the places no one understood anymore so they just left them alone because that part of the code seemed to workâ€"down in there the long pause still lived. The programmers and testers had moved on, changed, grown older, but here was the code, frozen, mindlessly running itself over and over: thoughtless robotic artifact of the lives that created it.
Through the time tunnel of the long pause came his name. Ethan Levin, Telligentsiaâ€™s senior engineer for client-side computing, inadvertent creator of the bug officially designated UI-1017. I tried to push him away. Standing there sweating by my luggage cart, I was not ready to remember what happened to him. UI-1017: the one thousand seventeenth bug in the user interface. One thousand and sixteen had come before it; thousands more would come after; and so what? Let it alone, I told myself. Donâ€™t dwell on this one ruined life. The world has moved on to other follies involving other programmers. Everyone seems so happy with the world we technical people have created. See here: even the immigration agent, after his little wait at his terminal, has gotten his answer, and now a real smile makes his empty, pleasant face almost remarkable as he taps data into his keyboard.
But Ethan Levin would not go away. That relentless bug of his I found, what happened to him while it came and went, what I might have done and didnâ€™tâ€"all that was waiting for me in the long thirty-second pause. There was no way out now. There was no way to gohome and forget all over again what had happened. I would have to remember the database as I first saw it, in the late fall of 1983. I would have to remember when I was a failed academic, a linguist with a Ph.D. during the Ph.D. glut of the 1980s, itinerant untenured instructor of Linguistics 101, desperate striver out of the lumpen pro-fessoriat. And how I becameâ€"through the recommendation of a friend, unbelievable to anyone whoâ€™d known meâ€"a junior quality-assurance â€œengineerâ€ at the start-up software company called Telligentsia. Where I was the primary tester of one Ethan Levin, a skinny, apparently confident man of thirty-six whoâ€™d been programming for twelve seemingly accomplished years when the bug designated UI-1017 first found him.
Time circled back on itself. Nineteen eighty-four. The IBM PC was three years old; the Apple Macintosh had just been released. I was seeing for the first time the famous Super Bowl ad that introduced the Mac to the world: The woman in running shorts breaking into the auditorium where men, dressed alike like prisoners, sat mute before a screen. On the screen that same huge head lit by a blue lightâ€"Big Brother, IBM, known as Big Blue for the color of the companyâ€™s logo. And all over again, I knew what the woman must do.
And then she did it: she reeled and hurled a hammer at the screen, smashing it, breaking the prisonersâ€™ spell.
Rejoice! The age of the behemoth corporate computer was over. Individuals would now have computing power in their own hands. Somehow this would change everything. Oh, what a perfect advertising moment! The smashed specter of 1984. And done by a woman. Geraldine Ferraro was running for the vice presidency of the United States, the first-ever womenâ€™s marathon would be run at the Olympics, so why shouldnâ€™t a woman in running shorts symbolize the end of technological tyranny?
â€œWelcome home, Ms. Walton.â€
The immigration agent, smiling pleasantly out of his pleasant face, offering me back my passport.
I only stared at it. I didnâ€™t want to touch that passport now. The whole story would open up out of its pages.
Tap, tap: the agent touching the passport to the counter.
â€œThank you,â€ I said, not meaning it.
Everything was in order. Page stamped, passport returned. The date and port of my arrival duly recorded by the system. The old databaseâ€"traitor, time shifterâ€"had not confused me with a terrorist. Later someone would enter the data from my landing card: where Iâ€™d been, for what purpose, how much Iâ€™d spent, on what. And later yet, some researcher might pore over the great masses of data accumulated in our marvelous Telligentsia database (maybe using the â€œdata miningâ€ software from the second start-up company I worked for). And heâ€™d learn how frequently I traveled, never on business, always alone. And the researcherâ€™s report will conclude that I am richâ€"as I am, perpetual leisure traveler at the age of forty-eight. Nominal occupation: computer consultant. Home address: San Francisco.
I wheeled my cart toward customs and saw myself perfectly profiled through the computerâ€™s eyes: silicon mini-millionaire, stock-option retiree, lucky inheritor of the revolution proclaimed on television in 1984 by the woman in running shorts. In another mood, I might have been proud. The database, still working after all these years. The database, keeping an eye on us, watching over my comings and goings and those of my fellow citizensâ€"my personal private contribution to the end of tyranny.
March 5, 1984, a day full of error. Erratic bugs were not supposed to show themselves; jealousy and suspicion were not supposed to ruin the day. My plan that day had been to find something wrong with recursion: queries within queries, questions inside questions. Select the customers whose last names started with S; from those select the ones with balances-due greater than $200; from those the ones who did not livein New York; from those the ones who were females; and so on, ad absurdum, to an arbitrary depth of fifty-three queries within queries. I was looking for a condition I could pinpoint. At a certain depth: crash. One level back: works fine. A model error, an exemplary bug, an on/off condition that came and went reliably, a relief from the confusions of the world.
Here is how the day was supposed to go: I was to drive my boyfriend James Havermeyer to the airport (he managed a traveling chamber orchestra; he was always coming or going somewhere), I was to go to work and run my excellent test (perfectly, predictably crashing the system at a specific recursive depth), and then I was to go home and work on the poem I was writing (poem-writing, a morbid habit I kept up the way I kept on smoking, imposing my exhalations upon others). Susanna Cantor, Jamesâ€™s great unrequited love, should not have come up. Memories of my bad start with Jamesâ€"no. The stark, lost sensation that came over me as I drove into the Telligentsia parking lotâ€"I didnâ€™t imagine the day would begin that way. A planned disaster was what I was looking for. A failure under my control. A perfect test.
The day began too early, 6 A.M., on the road to the airport for Jamesâ€™s flight to New York, connecting there for Vienna, where the orchestra was performing. Even the weather was wrong that day, too hot for the season, the third of three days without fog, the sky going green at the edges like spoiled cheese. James was in a bad mood, rushed and harried and anxious. He was a small, compact man whose face could project a sweet boyishness, but more often than I cared to realize, he was the way he was that morning: distracted, unaware of me, lost in his own sense of being burdened.
â€œIâ€™ll park,â€ I said as I signaled for the airport freeway exit. â€œIâ€™ll park in the garage, walk you to the gate, kiss you madly, then wave a little white hanky you can watch from the window of the plane.â€ Itâ€™s not a pleasant thing to remember, these attempts of mine to get his attention.I was trying my baby chatterbox approach, my pose of happy abandon, soothing devotion.
What a fool.
â€œOh, just leave me at the curb,â€ he said. â€œI have to meet up with â€¦ someone.â€
Someone. The first of many errors on that day full of errors. In another personâ€™s life, I would have found it funny. Someone. Oh, yes, I suppose I now must remember all this: the situation I so stupidly put up with, the person I was then, a woman who wasâ€"what was I exactly? lonely? self-destructive? simply too lazy to look for something better? Iâ€™d rather not start the story here; Iâ€™d like nothing better than to forget about James, another unhappy note in a story that canâ€™t possibly have a happy ending. But with the bug must also come James, the two of them linked in my memory in an odd synchrony, as if James somehow brought on the bug or the bug, James.
So James must enter the story: James Havermeyer, thirty years old, two years my junior, my lover of over a yearâ€"and a man still pining away for a certain someone. I knew all about her: Susanna Cantor, graduate of Juilliard, Ph.D. from the Eastman School of Music, the orchestraâ€™s first violinist and concert mistress. A woman with long dark hair for whom James had felt the kind of insane unrequited love that no one past the age of twenty should ever feel. They were supposedly friends now, his passion for her over. But James still could not say her name to me in a normal tone of voice. Whatever existence they still sharedâ€"a conversation on the phone, a meal in a restaurant, seats together on the planeâ€"he tried to keep secreted in a place that did not include me.
I should have known from the start; James was a man who liked his secrets. On a Sunday morning six weeks into our relationship, a mad woman came pounding on my door. James slept on, snoring. Through the peephole, I saw wild-flying blond hair, tearstained puffy eyes, a smeared-lipstick mouth, someone nearly tearing off the screen door. â€œIâ€™m Sarah,â€ screamed the woman Iâ€™d never seen before. â€œSarah Postman.His girlfriend!â€ I opened the door. Her blouse was misbuttoned; her skirt hung askew. â€œWell,â€ she sneered at me, â€œimagine my surprise to find Iâ€™m the ex-girlfriend. Where is he? Where is that lying bastard?â€
I stared back at her. I had never even heard her name, had no idea she existed. His girlfriend. Who?
I sent her in to get James.
And there were others, I learned later, all musicians, all in his orchestra and still in his life in vague and suggestive ways. Before the wild woman pounding on my door there was Barbara, a cellist; and before her was Celine, a pianist. And directly before me, overlapping with the unhappy and duped Sarah Postman, was the unequaled Susanna. Someone. As I pulled up to the curb in front of United Airlines, I wondered: Had I once been a someone to the poor, wild-haired Sarah?
â€œOh, really?â€ I said to James as I watched him take his bags out of the trunk. â€œWhoâ€™s this someone youâ€™ve got to meet up with?â€ It was cruel of me. I knew he would lie reflexively, floridly.
He fumbled with his suitcase. â€œOh, just a contact from the tour operators. A guy. About the connections in New York.â€ He went on: discounts, rebates, packages, faxes. The answer was too long, too detailed to be true.
â€œYouâ€™re such a poor liar,â€ I said to him, but almost tenderly, touching the back of his neck as he stood with his suitcases at his feet.
â€œI donâ€™t know what you mean,â€ he said. He had a scared look on his face. He had lovely blue eyes, small but clear, and now they looked at me from behind a defensive squint.
â€œGood-bye,â€ I said.
â€œSee you in only six weeks,â€ he said. He ran a hand down my back, kissed me briefly on the mouth.
â€œGood-bye,â€ I said, slamming down the trunk.
Plans, rules, orderâ€"I should have known better. The relief I looked forward to at my desk, my perfect testâ€"I should have realized even before I logged on to the system that morning that something else was going to happen. A linguist knows that following the rules is no assuranceof anything. â€œColorless green ideas sleep furiously,â€ the linguist Noam Chomsky once famously said, his perfectly well-formed sentence: grammatically correct, signifying nothing.
Colorless, green ideas sleep, furiously.
Colorless green, ideas sleep furiously.
Colorless green ideas: Sleep! Furiously!
The parking lot at Telligentsia, the wasted feeling of having driven through traffic to arrive nowhere: a lake of asphalt in Fremont, California. The workstation in a cubicle. The morning begun not with hello but with a system prompt. Everyoneâ€™s day begins like that now, but on that morning of March 5, 1984, only programmers and testers lived that way. From log-in to log-out, e-mail to e-mail, mouse click to mouse clickâ€"we were just then starting to make computers â€œfriendlyâ€ for everyone, preparing the world for a programmerâ€™s life. In 1984, it was still possible to find it strange, and hate it: the monitor that showed me my face in its blank glass stare, the system that beeped at me when I mistyped my password, the machine whine that rose up from everywhere, like being sealed in a roomful of mosquitoes.
It took me half an hour to enter my test. Queries within queries, questions inside questionsâ€"point-click, point-click, a graphical query. A diagram with lines and boxes and arrows and field names that scrolled endlessly off to the right side of the screen. The first working part of the user interface, barely more than a demonstration module, full of errors, dead spots, bugs. I cursed at it itâ€"clumsy mouse clicks and arcane control-commands, CONTROL SHIFT CLICK, all at the same time. Ethan Levin and his boss had designed the interface, stupidly, I thought. But what did any of us know about this business of graphical user interfaces? There was only the two-month-old Macintosh for a model, and the primitive graphics system on the SM workstation we were using. In those days, most computer monitors were monochrome character terminals. When you started up the system, there was nothing on the screen but a prompt. Until you entered a command, nothing happened. Windows, icons, buttons, menusâ€"we were just thenfiguring out how all this should work. There might have been a hundred better ways to talk to a computer, but Ethan Levin had copied the Mac, which had copied the Xerox Star, which was later copied by Microsoft Windows. Who knew our mistakes would prove so durable?
I fought the interface and finished the query. Then I clicked on the menu RUN. It dropped open, and I moved the mouse toward the menu line CURRENT QUERY. I was about to click again, RUN CURRENT QUERY, but I was distracted and mistakenly moved the mouse outside the menu. I was about to move it backâ€"when suddenly a long beep sounded, mad, like a stuck car horn. The display was a mess of lines, boxes, strange characters. The cursor stuck itself at the bottom of the screen. The keyboard was frozen. The mouse: dead.
A bug. One more in a cast of thousands. But not the one I was looking for. My query hadnâ€™t even made it to the database.
â€œKill me, will you?â€
I said this over the top of my cubicle to my neighboring tester, Mara Margolies. My workstation was dead. The only way to get it working was to kill the program from another terminal. Mara and I knew each otherâ€™s passwords; we were used to cleaning up each otherâ€™s rogue programs with the UNIX kill command. â€œMeep!â€ came the reply from Mara, a small, round person who had the extremely annoying habit of going around meeping like a robot.
And I thought that would be the end of it. I thought Iâ€™d report this unexpected bug, send it on to the responsible programmerâ€"Ethan Levinâ€"who would investigate it using the â€œcore,â€ a file full of hexadecimal numbers that showed the programâ€™s state at the moment it was killed, the contents of its â€œmemory,â€ what it was doing when it died. Then Iâ€™d go back to my test, my perfect test, the disaster Iâ€™d been waiting for.
But here was the next error on that error-prone day.
â€œMara, whereâ€™s the core?â€
â€œShit. I sent it a minus nine.â€
â€œMinus nine! How the hell could you send it a minus nine?â€
The command kill -9, unconditional program death. A sure and certain way to kill any program. But one that did not produce a core file. No core. No record of the programâ€™s state at time of death. No postmortem by the programmer.
â€œI spaced out,â€ Mara said.
â€œSpaced out! Shit, Mara. Youâ€™re a tester!â€
I didnâ€™t know then that this would be the bugâ€™s patternâ€"to escape without letting anyone capture its image in a core file. It would be some months before I understood that Mara, a new tester, would simply be the first of many novices who let this tease of a bug get away. At the time I blamed her for her stupidity, but there was nothing I could do. The program was dead; she didnâ€™t get a core; and now the body of the program had vanished without a trace.
But how had this bug come about? I still had to find the exact sequence of keys and commands that had led to the crash. Without notes to prove what Iâ€™d done, without a core file to show the result, I had to retrace my steps, reenter the entire query, go through the whole clumsy user interface over again. Which I did, impatient, irritable. Click open the menu, slide just past it â€¦ but nothing. No mess of windows. No stuck cursor. No beep. Everything fine.
â€œA flakey bug,â€ my boss Wallis Markham pronounced it. â€œBut a level-one.â€
Flakey: comes and goes. Level-one: crashes the system or freezes it. Needs investigation by the programmer even if it canâ€™t immediately be reproduced.
â€œToo bad about the core file, though,â€ she said. â€œOh, well. Just fill out a report and have a little chat with Ethan Levin.â€
â€œOh, yes. A nice, friendly chat with Ethan Levin.â€
â€œWell, he canâ€™t exactly kill you.â€
â€œNo, not exactly.â€
So I wrote up a report, and then didnâ€™t think much more about the bug. What was bothering me that morning as I filled in the particularsof the bug report (screen: VISUAL QUERY, menu: RUN) was something else, a jitter in the stomach that would not go away. The memory of Sarah Postman. The wild hair. The smeared-lipstick mouth of the betrayed. The ridiculous revenge scene as she tore the bedclothes from the naked James. Could that be me someday? Of course it could. One day I could learn that James had been with someone else for a month or two, that heâ€™d finally won over Susanna, or moved on to a flutistâ€"no, James hated the sound of the solo flute, perhaps to another pianist; yes, thatâ€™d be it, a pianist. And there Iâ€™d be with my clothes all askew on a Sunday morning, a wild, raging woman pounding at the door. Why not? Iâ€™ve learned thereâ€™s a good chance youâ€™ll wind up like the person who came before you. People tend to repeat themselves in these sorts of things, is my experience. Thatâ€™s how it happens: they leave you the way they came to you.
â€œPut it over there,â€ said Ethan Levin.
He was a tall man, lanky, sitting with his legs vining around the legs of his chair. A twitch of his long, poky neck indicated a pile of papers at the back of his desk.
And there I put it: the bug report, the first notice describing the bug that had just been officially designated UI-1017, its count of days open now set to zero and ticking. Ethan never even looked up. And I didnâ€™t bother to be annoyed. There were three programmers in that office: Ethan; Albert Herring, called â€œFishyâ€ by the testers; and Bradley Thorne, called, inevitably, â€œBadly Torn.â€ I didnâ€™t like them, and they didnâ€™t much like each other. The quiet in that room was like lead crystal. If you broke it, youâ€™d be cut by shards.
So I put the piece of paper on the pile and left. And that was it: a tester found a bug, a programmer ignored a tester, a bug report went to the top of a pile on a programmerâ€™s messy deskâ€"nothing could have been more normal than what had just happened. Ethan went back towork. And I went back to work. And later I went home, to a desk and a yellow pad, to my twin nasty habits of poetry writing and smoking, breathing in and blowing out late into the night, jealous colorless green ideas not sleeping, unable to sleep, furiously. We could both be forgiven for not noticing that a turn of events had begun.
THE BUG. Copyright © 2003 by Ellen Ullman.