Silicon Follies

Chapter 14: Programming in vampire mode -- or, the long dark night of the code

Published May 1, 1999 4:00PM (EDT)

The hack was on. Steve had been deep into it for most of three days. A pile of pizza boxes and two cases of empty cola cans bore silent witness. He'd disconnected the phone and ignored the messages as they noiselessly accrued on the answering machine.

Psychrist had furnished him with a specimen of the hardware that would drive some of the "actors" in his "installation." Steve recognized it as an old 80386 motherboard -- practically free these days -- grafted to a small radio transceiver.

Steve was not privy to the specific details of his upcoming installation, but Psychrist suggested the performance would involve a number of roving, autonomous agents in wireless contact with a master computer host. Each agent would have a unique address and would receive instructions from the master: forward, back, left and right.

The master host, presumably, coordinated the agents' movements on a higher level. But Steve wasn't supposed to know about that; his task was to create a wireless communications program and burn it into the boot PROMs on the motherboard.

His curiosity was killing him. Psychrist's performances were something of a legend in the Bay Area. Aside from being artistically significant and loaded with a sort of cyber-bohemian technical angst, something always got spectacularly burned, blown up, shredded or crushed beneath impossibly heavy objects. Steve hoped that if he finished his piece quickly, Psychrist would confide in him how the whole thing was going to work.

- - - - - - - - - - - - - - - - - - - - -

He briefly considered adapting some old network code he had hanging around, but thought better of it. This one was for art's sake; he would do it from scratch. He put Mingus on the stereo.

Conventional wisdom dictated that before you wrote a single line, you needed a design. Tie-wearing, pocket-protected Systems Analysts in respected industrial computing shops insisted on it. They had all sorts of officially sanctioned, right-headed methods to facilitate the process: flow charts, data-flow diagrams, "Nasi-Schneiderman" diagrams, pseudocode, a thousand different ways to create a picture of what you intended to build.

The True Hacker thumbed his nose at each and every one of them. And like the True Hacker, Steve had started by thumping down the cursor in the editor and riffing. It was all jazz to him. He could feel the machine sing through his fingers. He could hear the megahertz whine of the chips turning over. He could see the stack in his mind, hundreds of instructions deep. Pictures were for weenies. Homey didn't need no map.

The first day he built a rudimentary device-driver; it was kind of like a back-beat. Day two he built some routines for data storage and abstraction; that was the bass line. Today he had rounded out the rhythm section with a compact, packet-based communication protocol handler. Now he was finishing up with the cool, wailing harmonies of the top-level control loops.

Programming was a little like dreaming; you conjured up an imaginary machine, piece by piece, and fit the pieces together. Some of them were familiar -- similar to things you'd built before, with common themes that seemed to pop up in any project -- and some of them were unique to the beast at hand. But you teased them up out of nothing, like a dream.

Loops that revolved. Ifs and elses that forked and cascaded. Imaginary Rolodexes filled with numbers, or tiny words, or addresses of other Rolodexes. Traps, exception handlers, streams of data. Signals and semaphores, one function hailing another across the void. Those were the things you called out of the darkness to fabricate the intricate workings of the finite-state machine.

- - - - - - - - - - - - - - - - - - - - -

A computer program exists in a nether region between real and imaginary. On one hand, it absolutely obeys the laws of cause and effect; build it carelessly, or make a stupid mistake, and the gears will grind together and it will fail, dying in its tracks. On the other, it is something you'll never be able to see or touch. You might observe its side effects on a monitor or in some other output device. You might infer its motion from its uncompiled source code. You might track its position with a debugger. But when it runs, its wheels turn in another dimension, a world apart, a separate reality etched in invisibly tiny pathways on fused silicates. It conducts an intensely private life of its own in some abstract parallel universe. You have to have faith that it is real.

Sometimes you get lost in the details. You obsess over every moving part. You develop paranoid fantasies about all the ways that failure could emerge from the interlocking pieces. You become suspicious of yourself. You become hard on yourself. Your good intentions are insufficient to create success. Nothing short of absolute rigor and perfect vigilance will suffice. The machine is unforgiving; you cannot forgive yourself.

You take many opportunities to check your assumptions. You write scaffolding functions -- which you will later discard -- to check your control loops and the state of your data. You consult them regularly to make sure your creation hasn't strayed from the spec.

Sometimes it seems anything that can go wrong does go wrong; reversals abound. At other times you seem invincible -- you write a dozen hairy functions, you hold your breath and brace for trouble, but they compile without errors and run bug-free. Those are the times it's hardest to believe. It's enough to make you superstitious. A plastic action figure -- Blue Power Ranger -- was Steve's lucky charm. He'd never admit it, though.

- - - - - - - - - - - - - - - - - - - - -

He was nearly done. Little by little he'd tugged his brainchild out of the mist, and now it had a life of its own -- a personality, almost, with its own strengths, weaknesses, quirks.

And nobody would ever know it as well as Steve did. Ever. The program was his in a way very few things could ever be, like a drawing from his own hand. There wasn't an in-line comment in sight, but it had a mark on it. It howled his name in the void.

The project had cycled Steve into vampire mode. The sun was coming up -- time to sleep.

By Thomas Scoville

Thomas Scoville is either an Information Age savant or an ex-Silicon Valley programmer with a bad attitude. He is the author of the Silicon Valley Tarot.

MORE FROM Thomas Scoville

Related Topics ------------------------------------------

Fiction Satire Silicon Valley