A Truck Full of Money (9 page)

Read A Truck Full of Money Online

Authors: Tracy Kidder

PART III

A
S
MALL
U
NIVERSE
1

One is always aware that individual talent gets suppressed by societies, the gifted child mired in poverty. But there may also be a kind of talent that gets suppressed by time, a talent diffused within the human gene pool, which lies dormant awaiting its technological moment. One of the fathers of computer science, Donald E. Knuth, speculates that this was the case with computer programming. In a series of interviews published in
Companion to the Papers of Donald Knuth,
he is quoted as saying:

I've noticed that one out of every fifty people, more or less, has the peculiar way of thinking that makes them resonate with computers. Long ago, such people were scattered among many other disciplines, which didn't quite suit their abilities, but they discovered each other when computer science was established as a separate field.

I mean, I think it's likely that one out of every fifty people who built the pyramids, ages ago, would probably have been a great programmer if computers had existed in ancient Egypt.

In another conversation, Knuth refers to these born programmers as “geeks.” This used to be the name for carnival performers portraying wild men, but it had long since been reapplied to denote socially graceless eccentrics who might also be dedicated to a special field. More recently, it had also become a term of proud self-mockery. Knuth used it that way:

For simplicity, let me say that people like me are “geeks,” and that geeks comprise about 2% of the world's population. I know of no explanation for the rapid rise of academic computer science departments—which went from zero to one at virtually every college and university between 1965 and 1975—except that they provided a long-needed home where geeks could work together. Similarly, I know of no good explanation for the failure of many unsuccessful software projects that I've witnessed over the years, except for the hypothesis that they were not entrusted to geeks.

In 2015, Knuth was a professor emeritus at Stanford. Oddly enough, way back in 1990, he had abandoned his public email address. There were several other ways of reaching him, which he had described on the Stanford University Computer Science website. You could use “good ol' snail mail,” which he would deal with collectively, “in batch mode—like, one day every three months.” You could also fax him. “But be warned that I look at incoming fax mail
last,
perhaps only once every six months instead of three.” And you could
try
emailing him, via a couple of special impersonal addresses, but he would not answer any unsolicited emails, except for those that reported errors in his books.

All this suggested a most antisocial fellow, a Dickensian character who informs his public, “You can reach me by carrier pigeon, or, less reliably, by messages in bottles.” But one could sympathize. He was in his seventies now and trying to finish
The Art of Computer Programming,
a work of seven volumes. He had begun to write it in 1962. In 2015, he was living on one of Stanford's quiet residential streets, in a house that he and his wife had helped to design—he'd had a pipe organ installed in one of its rooms; he was a fine amateur musician. He spent long hours in his home office, creating drafts of Volume 4B of his gigantic book. That volume alone had grown, in concert with the rapidly expanding field it explored, to three lengthy volumes of its own, only one of which was finished. As he explained on the Stanford webpage, the work he faced was the kind that requires “long hours of studying and uninterruptible concentration.”

It wasn't as if Knuth forswore communication with the world. He just wanted to do it on his own terms. Though he no longer taught regular classes at Stanford, he still gave half a dozen lectures a year. He played the pipe organ at his church (Lutheran), and, at least in the past, he had led a Bible study class. Over the years, his work had obliged him to confer with thousands of colleagues, and he welcomed readers who identified errors or made “significant suggestions.”

Knuth had received more than a hundred honors and awards, including the most prestigious available to computer scientists. These came mainly because of the first three volumes of
The Art of Computer Programming.
Those 2,200 pages had brought the rigor of analysis and mathematical proof to computer algorithms. More broadly, they had refined, assembled, and organized much of the best of what had been known and thought in computing, both the work of others and Knuth's own discoveries. In the words of one admiring colleague, Knuth's unfinished multivolume work had “established computer programming as computer science.”

The title of the book amounted to an assertion. In one of his essays, Knuth examines the meanings of “art” over time, and he concludes: “We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.” He asserts: “Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write
grand
programs,
noble
programs, truly magnificent ones!” In a book called
Literate Programming,
he sets out to show how programs can be explicated by their makers, not just to clarify their aims and methods but to turn them into works of art. “Programmers who subconsciously view themselves as artists will enjoy what they do and do it better,” he writes.

He had created many programs of his own. The largest and best known is called T
E
X (the name is derived from Greek and pronounced “tech”), a suite of software for computerized typesetting that includes a program for creating fonts. It was the first system that enabled computers to control the layout of text typographically and to print with the quality of hot-metal typesetting. Unlike many of the typesetting systems that followed, it adroitly handled mathematical and scientific notation. It was accounted a marvel when it first appeared, and more than thirty years later, both the original and variations of the system were still in use. Knuth never patented or licensed it; he had made the source code free and available to all.

His first publication was a spoof, “The Potrzebie System of Weights and Measures,” published in
Mad
magazine in 1957, when he was nineteen. He had been a prolific and versatile writer ever since. His
Collected Papers
alone now filled eight volumes. He had written books about mathematics and the Bible, also a collection of lectures and essays aimed at a general audience. In one of these, “God and Computer Science,” he writes: “I think it's fair to say that many of today's large computer programs rank among the most complex intellectual achievements of all time. They're absolutely trivial by comparison with any of the works of God, but they're still somehow closer to those works than anything else we know.” The point is unusual. Many have professed to see the hand of God in nature. But, as Knuth would have it, computer science is “an
unnatural
science,” a human invention that nonetheless opens a new lens on many theological questions. In the same lecture, Knuth suggests that programmers are positioned to catch “at least a glimmer of extra insight into the nature of God,” because programming often entails the creation of “a small universe.”

The nature of the art had changed in the span of Knuth's career. Huge so-called libraries of software had accreted. Nowadays, many programmers worked without writing a great deal of original code, instead assembling code that others had written. But the world still needed some people to write what Knuth called “the innards of these magic black boxes.” Knuth said that his role in life was to serve this small cadre: “Somebody has to nurture them.”

These were his 2 percent. It had taken a machine to liberate their talents, indeed to liberate Knuth's. He was not ungrateful. He considered
The Art of Computer Programming
the essence of his life's work, and he had chosen to dedicate it not to a person, but as follows:

This series of books is affectionately dedicated to the Type 650 computer once installed at Case Institute of Technology, with whom I have spent many pleasant evenings.

2

In the English family's house on Perham Street, the kitchen had contained seven boxes of cereal and flavors of ice cream, but there were no knickknacks on tables and few decorations on the walls. Paul's father fixed everything himself. “That's good enough,” he'd declare, and for the next several years there would be an unpainted patch on a wall or wires hanging from a ceiling. Paul's mother, meanwhile, fashioned coffee filters out of paper towels, having calculated the relative expense.

One day in 1981, however, the summer after Paul's junior year at Boston Latin, his mother came home with a brand-new thing, new from the store and still fairly new in the world—a personal computer, called a Commodore VIC-20. It cost $299.99, less than other personal computers but a fortune in his parents' household. Paul couldn't figure out just why his mother had spent the money. Maybe it was the scent of importance, spread by ads that claimed computers were great for helping kids with their homework. It might also have been the fact that Paul's oldest brother, Ed, was now making a very good living programming computers.

The arrival of the VIC-20 felt like Christmas morning to Paul. Five years before, he had found it easy to turn away from the dumb terminals in the Latin School's basement, but this was an actual computer. Just taking the VIC-20 out of the box—it looked like a typewriter with some additional and mysterious keys—felt like an utterly different experience. The little machine didn't come with a display, but it was capable of producing images in color. Boston Gas had recently given Paul's father a new color TV for his years of loyal service. When his father wasn't home, Paul turned that TV, “the stupid box,” into the VIC-20's screen. Hypothetically, the computer belonged to the entire household, but it was Paul who studied every one of the 164 pages of the VIC-20's manual. The machine came with a few games, which he and his siblings played until they were experts. When the others lost interest, Paul took sole possession.

The little house had a half-aboveground windowless basement, built as a garage but long since turned into a single bedroom. A cellar stairway led down from the kitchen. The room felt like a separate place, especially at night when everyone was up on the top floor, two stories above. The converted garage had served as a haven for male adolescence, the burrow of several teenage boys in turn, first for Ed and then for the next oldest, Tim, who remembered the room as the place where he could turn up his Led Zeppelin records and smoke pot in peace. When Tim left home, Paul inherited the place. He had long since given up selling drugs and he only rarely smoked marijuana, but he often felt as if he were taking a drug when he retreated to that dark, dank room and lay on the single bed with his earphones on, the sweet, sad songs of Joan Armatrading drowning out the gurgling of the water heater beside him. He carried the VIC-20 down there. He bought a secondhand color TV to serve as its monitor and taught himself to write small programs—in BASIC, the computer's built-in language. Later he would swear that the moment he saw computer code, he knew that he could write it. He could still get lost in lethargy down in his basement room, but much less often once the VIC-20 arrived.

During Paul's senior year at Latin, his brother Ed became a celebrity in the world of electronic games. Ed had left home and spent a year writing a chess-playing computer program for a company in Florida. It was a hit, and Parker Brothers had brought him back to New England and given him the task of converting a Japanese arcade game called Frogger into one that could be played at home on the Atari 2600 video game console. A difficult assignment, first of all because Atari didn't want other companies producing games for its device, which meant that Ed, with the help of a colleague, had to reverse-engineer the Atari console to figure out exactly how it worked. More daunting, Ed had to reproduce Frogger in a program that would occupy only a smidgen of memory. He pulled it off in just six weeks. His version of Frogger was the first electronic game accompanied by two-part-harmony music. He called the experience “an Olympic trial for game-making” and the finished product “my Mona Lisa.”

Parker Brothers priced Ed's version of the game at $20 per cassette and was already shipping four million copies to retailers when Ed brought a cassette over to Perham Street to show his masterpiece to the family. He set up the equipment on the kitchen table, and everything was going well until Paul started fiddling with the controls. The next thing Ed knew, the game went haywire. What's more, Paul was able to make it malfunction again and again. Here was Ed's baby brother, whom Ed had known only distantly and mainly from contentious games of chess—which Ed, to his chagrin, had usually lost—and now this teenage version of that irritating prodigy had found a bug in Ed's Mona Lisa. Ed was furious—“I coulda killed him!”—and then he was scared. The code for the game was contained in ROM, read-only-memory chips, which could not be reprogrammed. For some time, Ed waited to hear that others had found the bug and were returning their cassettes, but no one ever did. Parker Brothers, having sold all four million of those cassettes in a year, offered to pay Ed $50,000 for every game he programmed thereafter. Instead, Ed quit and started his own gaming company, and soon afterward bought a brand-new Porsche and a house on the waterfront south of Boston.

Paul was nineteen. Down in the converted garage, he began to code his own electronic game, on the VIC-20 and from scratch. He called the game Cupid. When he was done, it worked this way: The code drew a green field on the computer screen, then populated the field with five pink hearts, a green “ugly pill,” and a circular face that represented Cupid, the player's alter ego. You moved Cupid around with a joystick, gobbling up the pink hearts while avoiding the arrows that shot across the screen horizontally and vertically. You, Cupid, could get killed by those arrows. You could also get blocked by them. Arrows that missed you would form latticed fences, hemming you in. But if you got Cupid positioned on top of an ugly pill, you turned green and also rubbery, and for a time you could squeeze through the fences of arrows. When you squeezed through, the program would make the computer produce a sound like the popping of a champagne cork. Paul spent a lot of time on the sound effects and on trying to code the behavior of pieces so they seemed like analogs of natural movements. Coding the sounds and the graphics was the kind of job programmers call “nontrivial,” and it was equally hard to synchronize them.

Programming had come a long way by the time Paul made his game. Computers are created with the built-in power to execute certain basic instructions, such as commands to add and subtract, and to perform operations that direct the flow of a program. These instructions are conveyed to the computer as discrete packages of high and low voltages, represented in what is called “machine language,” a code that amounts to long skeins of zeros and ones. It is extraordinarily difficult to write programs in machine language. In the 1950s, not long after the creation of the first automatic digital computers, a system of symbols, another sort of code, was developed to represent those packages of zeros and ones. This system was called assembly language. It was easier to write than machine code but cumbersome at best.

The great step forward in programming came in the 1960s with the development of “high-level” languages. To give some sense of their power, imagine that Paul had been trying to create the standard beginner's program and tell his VIC-20 to print “Hello, World.” Here is an example (produced by a program called the GNU C compiler) of what a part of a Hello, World program would have looked like, if Paul had written it in assembly language:

.file        “hello.c”

.section        .rodata

.LC0:

.string        “hello, world\n”

.text

.globl        main

.type        main, @function

main:

.LFB0:

.cfi_startproc

pushl        %ebp

.cfi_def_cfa_offset 8

.cfi_offset 5, -8

movl        %esp, %ebp

.cfi_def_cfa_register 5

andl        $-16, %esp

subl        $16, %esp

movl        $.LC0, (%esp)

call        printf

leave

.cfi_restore 5

.cfi_def_cfa 4, 4

ret

.cfi_endproc

.LFE0:

.size        main, .-main

.ident        “GCC: (GNU) 4.8.3”

.section        .note.GNU-stack,”“,@progbits

And here, by contrast, is the entire “Hello, World” program that Paul could have written in the early 1980s, using the VIC-20's built-in high-level language BASIC:

10 PRINT “Hello World!”

High-level languages allowed a coder to do vastly more in fewer lines of code. Fewer lines of code also made for fewer bugs in programs, and this too was significant. The gigantic programs soon to come could never have been written in assembly language. And they could never have been debugged well enough to be usable.

Paul's brother Ed was obliged to code Frogger in assembly language. So when Paul coded Cupid, he had it easier than Ed. But BASIC was an early and rather rudimentary high-level language, not easily bent to creating complex things such as sound effects. And like Ed with Frogger, Paul had to cram a great deal of functionality into a very small space. Ed had coded his Mona Lisa with only 4 kilobytes' worth of read-only memory chips. Paul, too, had to fit the Cupid program into 4 kilobytes of computer memory—and he had that much only because he found a way to borrow 500 bytes from the VIC-20's preloaded programs. These were small numbers even then, and minuscule a few decades later, when a smartphone that cost about as much as a VIC-20 contained memory circuits that could hold sixteen million times more data.

Donald Knuth writes: “One rather curious thing I've noticed about aesthetic satisfaction is that our pleasure is significantly enhanced when we accomplish something with limited tools.” This was one source of the pleasure Paul felt when he finished Cupid. Indeed, he loved the whole procedure of creating programs. You write the code that should create a sound effect, you load it into the machine, and it doesn't work. So you study your code, you find the flaw in it, you run it again, and you keep on repeating the process until the machine does what you want. All the while you've been wrestling with the size of that code, striving to make it small enough to fit the computer's memory. You find ways to shorten it, and when at last it's concise enough and runs perfectly, you feel as if you've done something more than re-create the popping of a champagne cork.

Ed was astonished when Paul demonstrated the game for him. Engineers are known for frankness, a tendency that in Ed's case overcame sibling rivalry. “Wow!” he said. Then he told Paul, “Listen, there are companies paying real money for this stuff.” With Ed's help, Paul sold Cupid to a company called Games by Apollo for $25,000. The company made a down payment of $5,000, then went out of business, but Paul wasn't very disappointed. He retrieved the rights to his game and used the $5,000 advance to buy a new Apple II personal computer, a printer, a floppy disk drive, and a “ROM oven”—a device for burning programs into integrated circuits, which he first used to make copies of Cupid for friends. He also bought a modem and talked his parents into paying for a second phone line, which he connected to his new modem in his basement bedroom.

The Internet was young. You had to search out correspondents. He went to one of the first meetings of the Boston Computer Society, where other enthusiasts handed out the phone numbers to their modems, and then he went home to his room and figured out how to write the code to connect his new computer to theirs. Modems worked slowly, which gave human eyes time to see how astonishing the process was. He would watch the files he was sending disappear gradually from his screen, and watch incoming files materialize bit by bit, as if they were being painted on an electronic canvas.

He was witnessing amazing things and also making them happen. Now and then he would hear sounds of the life of the house. The pipes to the water heater would start thumping, or there would be footsteps in the kitchen overhead. Upstairs, all the emotions of a big family were swirling around—arguments, many competing sorrows—and there was nothing he could do up there to change what worried and upset him. But he could always figure out how to tell the computer to do what he wanted, and it didn't argue back or ignore him. In his dark basement room, it could be any time of day or night, and when he was coding or watching a message being painted on his screen, he felt as though there was no other time than now and no other place but the small universe he was creating in his current program, a place where he was in charge, a refuge inside a refuge.

Other books

Romancing Lady Cecily by Ashley March
Gut Instinct by Brad Taylor
Eyeheart Everything by Hansen, Mykle, Stastny, Ed, Kirkbride, Kevin, Sampsell, Kevin
A Prince Among Men by Kate Moore
Drive by Wolf by Jordyn Tracey
It's a Tiger! by David LaRochelle
Murder in the Air by Ellen Hart
The Other Half of Life by Kim Ablon Whitney
Taking Chances by M Andrews