- Home
- Paul Allen
Idea Man Page 5
Idea Man Read online
Page 5
Left to ourselves, Bill and I would program until we were starving and then walk across the street to a hippie enterprise called Morningtown Pizza. Next door was a convenience store with police cars out front and cops playing cards in the back room. We’d either wolf down our pizza at Morningtown or bring it back to C-Cubed and try to keep it from dripping oil onto our Teletypes. We’d keep at it until everyone but the night operator had left. Once I was on my own and lost track of time. The buses had stopped running and it was way too late to call my dad for a ride, leaving me an hour’s walk home. A stray dog followed me all the way; my parents had to find it a home with friends of ours.
For me, the Holy Grail of software was the operating system, the computer’s nervous system. It does the logistical work that allows the central processing unit to compute: shifting from program to program; allocating storage to files; moving data to and from modems and disk drives and printers. You don’t think about it unless something goes wrong and it crashes.
At the time, operating systems weren’t locked boxes as they are today. Manufacturers packaged their software with their hardware; any companies that bought DEC’s computers were free to modify TOPS-10 as they saw fit. Bill and I knew that our mentors had access to TOPS-10 source code and were working to debug and enhance it. We also knew that it was off-limits to us, which made it ten times more fascinating than whatever we were working on. On weekends, after everyone had left, Bill and I would go Dumpster diving in the building’s courtyard. We’d flip up the metal cover and I’d interlace my fingers to give Bill a boost—he couldn’t have weighed more than 110 pounds. He’d lean down into the big container and scoop up anything that looked promising. After several trips, he found a treasure: a stack of stained and crumpled fanfold printouts. I can remember the smell wafting off the coffee stains and thinking, This is a little gross, but I don’t care.
We took that precious hoard back to the terminal room and pored over it for hours. I had no Rosetta Stone to help me, and understood maybe one or two lines out of ten, but I was blown away by the source code’s tightly written elegance. To grasp the architecture of an operating system like TOPS-10, I knew that I’d need to become fluent in its assembly code, the lower-level language that spoke directly to the machine. Seeing my interest, Steve Russell took me aside, handed me an assembler manual bound in glossy plastic, and told me, “You need to read this.” In line with the do-it-yourself ethos of our world, nothing more had to be said.
Thrilled, I took the volume home and gobbled it up until I knew it backward and forward. One week and 150 pages later, I’d hit a wall; the manual described the mechanics for writing assembly code, but neglected to explain what those statements made the computer do. I went back to Russell and said, “I don’t understand.”
And he said, with a twinkle in his eye, “Oh, you better read this,” and gave me another 150 pages in a white plastic cover: the system reference manual. It was a strain to get through it, and after two weeks I realized that something was still missing. Though I hated bothering Russell, I went to him again and said, “I still don’t understand. How can I send characters to the Teletype?”
And he said, “Ah, there’s one more manual you need,” and he came back with what looked like a phone book: the operating system manual. To this day I’m not sure whether he was spoon-feeding or hazing me, but I’d needed all three manuals all along. It took several weeks more for me to take my first baby steps in assembler programming, and months before I felt confident. “This is fascinating stuff,” I told Bill and the rest. But they were engrossed in their high-level languages, where they could write programs more quickly. So I continued alone.
In contrast to BASIC or FORTRAN, where each statement combined many instructions, assembly language was a direct, symbolic, one-to-one representation of binary machine code, converted into text and symbols that were easier to memorize than patterns of 0’s and 1’s. For example, a line of BASIC might read:
A = B + C.
When written in assembly code, the same statement might look like:
Load B.
Add C.
Store in A.
Assembly language programming was both less expressive and far more laborious than BASIC. And where programs written in high-level languages could be ported to different CPUs with minor variations, more or less like related dialects, assembly language was unique to each hardware platform, as distinct as German is from Portuguese. On the other hand, once inside the machine, assembly code could excecute up to hundreds of times faster. You were writing right to the hardware, down to the bare metal. You couldn’t get faster than that.
A Lakeside schoolmate once said that I could read assembly code the way other people read novels, but I don’t think it came more easily to me. It was simply the place I chose to focus, where the rubber met the road. I was finally beginning to understand how a computer worked at its most fundamental level. I’d made it into the guts of the machine.
NOTHING LASTS FOREVER, and there came the day when C-Cubed finished testing the PDP-10 and began to charge us for computer time. With the Mothers Club money depleted, Lakeside shifted its contract to C-Cubed. By that point, we had individual accounts. (I can still remember our account numbers: mine was 366,2634, while Bill drew 366,2635.) C-Cubed based its charges on a complex formula involving kilo–core ticks of CPU time and disk usage, and we constantly worried that we’d spent too much. Before mailing the monthly bills to our parents, Fred Wright would post a list above the Teletype in descending order of charges incurred, and you’d pray that your name didn’t land in the top three. I cringed when I set the record at $78, the equivalent of nearly $500 today—how would I explain? To his credit, Dad took it in stride: “That’s a lot, Paul. I know you’re learning, but can’t you cut back?” My parents saw my programming as a hobby, like my vacuum-tube radios or darkroom photography, only a lot more extravagant. Bill’s parents felt the same way. We could sense their patience waning.
Late that spring, Bill and I got hold of a C-Cubed administrator password and logged on at Lakeside. Soon we found what we were looking for: the company’s internal accounting file, named “ACCT. SYS.” It was encrypted, but we knew that it contained every paying account and also the free ones. Our hope was to find a free account to tap into; we knew it was wrong, but we were desperate for untrammeled access. After a few futile attempts to find a specialized program that could read and modify ACCT.SYS, we copied the file to our directories, until we could try it again.
We never got the chance. A few days later, we were summoned to Fred Wright’s office, where we were shocked to see Dick Gruen and another C-Cubed representative, an unsmiling man in a dark suit. We hoped we’d get off with a slap on the wrist, considering that we hadn’t really done anything yet. But then the stern man said it could be “criminal” to manipulate a commercial account. Bill and I were almost quivering. Would we get suspended from school?
It was worse than that. “You stole the accounting file, and we’re throwing you out,” the man said. Our C-Cubed privileges were withdrawn through the summer. We were devastated.
Just when all seemed lost, I ran into a friend who knew a UW professor with a free C-Cubed account. Once Lakeside’s spring term ended, I went almost daily to a terminal in the electrical engineering building. I picked up where I’d left off and read manuals over hamburgers at the student union. Life was good, but I kept mum about it all summer. I’d nearly reached my full height, a shade under six feet, but Bill and Kent still looked like junior-high-school students; I couldn’t risk them jumping in and blowing my cover. Bill was furious when I finally told him, and I felt bad about it. But such was the lure of programming that I knew I’d do the same again.
IN THE FALL of my junior year at Lakeside, my sins forgiven and my sentence up, Steve Russell and I struck a bargain: In return for free computer time, I’d try to improve their BASIC compiler. As high-level languages had grown in popularity, compilers had become the indispensable middlemen
. They were the translators that turned high-level source code into “object code,” the binary bits and bytes that computers could actually execute. Like all DEC software, the PDP-10’s BASIC compiler was open and extendable; you could freely layer on new features, which was the assignment I’d undertaken. It was a stiff challenge for someone who’d yet to enroll in his first computer science course. Printed out, the compiler’s listings were as thick as an abridged dictionary, and it took me days to gain a sense of the whole and how it held together. Whatever assembly code I wrote needed to fit the program’s logical flow, word by painstaking word.
For a while, I wondered if I’d bitten off too much. Too stubborn to ask for assistance, I used the previous programmers’ comments as guideposts. For every ah-ha moment, there were days when I barely had a clue about the source code in front of me.
Fatigue is no factor when you’re seventeen and caught up in something. I camped out at C-Cubed as long as my eyes stayed open, and as days became weeks, I began to eke out some progress. Since I’d found it painful to retype whole lines of BASIC programs whenever I made a small mistake, I adapted ideas from Bill Weiher’s line editor to quickly search and insert single characters. And I religiously annotated every step, as per our mentors’ protocol, for anyone who’d come along later to build on my work.
Again, I did all of this in the minutiae of assembly code, like an apprentice watchmaker squinting at the tiny wheels to understand their interplay. By the end, I probably knew more about that compiler than anyone at C-Cubed. Russell and Gruen seemed surprised that I’d gotten so far and were particularly pleased with my line editor, a beneficial tool for their customers. I’d become a true hacker. What I picked up over those two months formed the basis for my assembler work with microprocessors, when the stakes would be much higher.
Then as now, teenagers were often underestimated. Along with Bill and Ric and Kent, I’d shown how much young people could grow if given the chance. We were still years away from our mentors’ level, but we weren’t bad. And we were getting better.
DESPITE ITS ENGINEERING talent and first-rate time-share technology, C-Cubed was hobbled by a shaky business model. Only a handful of small-business people were willing and able to do their own programming, and few commercial programs were available to help them. The service became dangerously dependent on Boeing, Seattle’s largest employer, where middle managers could lay off time-sharing fees on their expense sheets. In 1970, Boeing got slammed by a double whammy: a recession in the airline industry and a sharp cutback in NASA’s Apollo program. There were layoffs and major cutbacks, including the company’s external computing budget. Worse yet, Boeing established its own contract programming service. Over the span of a few months, it went from client to competitor.
C-Cubed cratered early that spring and filed for Chapter 11. As soon as Bill and I heard, we rushed to the terminal room to plead for time to finish some programs and back everything up on DECtape. Not long after we’d arrived, the moving men came to repossess the leased furniture. As we worked madly away at our Teletypes, we could see them going from room to room, piling desks into their trucks. Finally they got to us and said, “OK, boys, we’ve got to take the chairs.” We knelt on the floor by our terminals to finish saving our programs.
Minutes later, I saw Bill staring out the window with his mouth open. One of the wheeled chairs had gotten loose and was rolling down Roosevelt Way with a moving man giving chase. We burst out laughing, but it was gallows humor, the end of a vital phase of our lives. My prospects for a summer job were gone, and my father was threatening to revoke my driving privileges if I didn’t make up some missing chem labs. More seriously, the bankruptcy was a lasting reminder of how a business can plummet in a flash. Bill, in particular, never forgot that lesson.
IN RETROSPECT, the folding of C-Cubed was a blessing. By forcing the acolytes to scramble for computer access, it led us to broaden our experience. At the time, IBM controlled two thirds of the mainframe market. Its closest rivals were known as the Seven Dwarfs: Burroughs, Control Data, General Electric, Honeywell, NCR, RCA, and UNIVAC. Along with up-and-comers like DEC, they were fighting to expand their meager market share by beating the leader on price, power, innovation, or all three. The software sector was even more fractured. Today, after the inevitable shakeout that occurs in any maturing industry, there are basically three flavors of personal computer operating systems: Windows, Apple’s Mac OS, and variants of Unix. Among 1970 mainframes, there were literally dozens. Every computer line was a software world unto itself.
One evening after school, early in my senior year at Lakeside, I brazenly walked through a door and into UW’s graduate computer science lab. I picked up a manual and took my seat at a Teletype linked to a Xerox Data Systems Sigma-5, which I soon had figured out. Then a grad student approached to ask a question, and word got around that I seemed to know what I was doing. I was rolling along until an assistant professor called me into his office and said, “You don’t look familiar. Are you in any of my classes?”
And I said, “No, sir, I’m not.”
“As matter of fact, you’re not even enrolled here, are you?” I confessed that I wasn’t. The professor smiled and said, “All right, I’ll tell you what. If you keep helping my students, you can stick around.”
There was no turning back after that. I moved on to the Burroughs B5500 and a powerful language called ALGOL—my first brush with batch processing, a step backward in time that only deepened my appreciation of the PDP-10. I tried my hand at a Control Data CDC-6400 and an Imlac PDS-1, the pioneering graphical minicomputer, where I found a version of Steve Russell’s Spacewar. I was a sponge, soaking up knowledge wherever I could. All of us were sponges then.
That November, a Portland time-sharing company called Information Services Inc. invited me and my three “colleagues” to meet to discuss a contract, a big step for us. Before driving to Oregon, we reconstituted ourselves as the Lakeside Programming Group, which sounded grown-up and official. ISI wanted a payroll program that had to be written in COBOL, a high-level language used in business applications. In return, they would credit us with free time on their PDP-10. We outlined our experience and submitted our résumés; Bill, just turned sixteen, had written his in pencil on lined notebook paper. We got the job.
As it turned out, our big break was unfulfilling. COBOL was a cumbersome, wordy language, and the accounting program a slog. We worked on it through the winter, using UW’s computer science lab until we overstayed our welcome. In a letter dated March 17, 1971, a professor named Hellmut Golde complained that our work “tends to disrupt the intended use of the laboratory.” He appended a list of violations, including our use of “the teletypes (at times all of them simultaneously) for prolonged periods of time, and occasionally unattended, to produce endless listings.” The resulting noise level was “detrimental to the normal activities and also is not the intended mode of operation for a remote console.”
“In view of these and other occurrences,” Mr. Golde concluded, “I must ask you to turn in your keys and terminate your activities in the lab immediately.” We figured that the grad students had complained to him, and moved to some Teletypes elsewhere to finish the job.
While we never saw any revenue from the payroll program, it felt like old times to be back on a PDP-10. And we began to see ourselves less as hobbyists and more as people who just might make a living by writing code.
HAVING HAUNTED THE stacks of UW’s computer science library for some time, I naturally became the research arm of the Lakeside Programming Group. I spent countless hours buried in periodicals like Datamation or Computer Design, keeping up with the latest mainframe trends. I dived into esoteric technical reports from MIT and Carnegie Mellon, dense theoretical stuff that ranged from artificial intelligence to the latest algorithms. When I found something interesting, I’d check it out and show it to the group.
As my senior yearbook shows, I was reading other things as well. I’m pictured seated a
t a desk in my ubiquitous green corduroy jacket and what is most likely a blue oxford shirt. (You can’t see my Beatles-style boots.) I have fashionably long hair, with thick sideburns and a Fu Manchu moustache. My chin rests atop a stack of eleven books, among them Joyce’s Dubliners, Modern University Physics, The Mexican War, and the Holy Bible. I’m guessing that the photo was posed to satirize how much work our teachers threw at us. Still, it was a good illustration of my breadth of interests.
I was driven more by curiosity than by the compulsion to get good grades. When it came to Civil War trivia or the conjugations of pouvoir, I had trouble faking interest. “I am also very absentminded (what a misnomer) and lazy (to put it mildly) towards things from which I derive no active or contemplative pleasure,” as I wrote at the time. But give me a dynamic teacher and engrossing material, and I’d be insatiable. I can recall my Rimbaud phase, when I steeped myself in poems of profound longing and angst. I got enthralled by Assyrian history and my senior philosophy class. It was there, in a discussion of Kant over a packed-lunch exchange with Holy Names School, that I met my first real girlfriend: Rita, a sharp and engaging redhead.
There were students hanging out in McAllister Hall who wore pocket protectors, who cared about BASIC and not much else. That wasn’t me. I joined after-school blues jams on my acoustic guitar. I loved literature and movies and was fourth chair on the chess team. I never stopped rooting for UW’s football and basketball squads, a loyalty inherited from my dad. And I moved in a range of social circles, with Lakeside’s protohippies as well as the computer guys. I wasn’t a nerd. I was just someone who happened to love computers, among many other things.
THREE DECADES AFTER teaching Bill and me at Lakeside, Fred Wright was asked what he’d thought about our success with Microsoft. His reply: “It was neat that they got along well enough that the company didn’t explode in the first year or two.”