First computer I ever saw was some kind of mainframe which printed out Snoopy posters on a line printer. This was in 5th grade, and I was hooked, even if I didn’t know what was what at that point.
Summer after 6th grade, took a digital logic class in summer school (yes, that was my idea of fun). Spent all summer building a digital tachometer out of discrete TTL chips, ended up letting all of the magic smoke out after 2 months of work.
7th grade (Framingham, Mass) all of the Junior Highs had ASR-33‘s hooked up to a PDP-8 at the High School. Each class got 2 weeks of instruction. For 9 days out of those two weeks I was totally mystified. Everyone was comprehending BASIC except me. Even the girls got it . I kept trying to apply what I had learned in the logic class, somehow imagining a bunch of gates which would recognize each discrete statement (as a whole). The teacher would always write for loops in the same way:
FOR I = 1 TO 10
I could imagine some logic that would match this exact thing. Last day of class, he finally made a slight change:
FOR J = 1 TO 20
Wham, the light bulb went on, big-time. It was suddenly clear that this was all general- purpose.
After that they couldn’t keep me off of the computer (this would later prove detrimental to my education). The teacher (Mr. Cliff Zeolla) allowed me as much access as I wanted. Thanks, Cliff! This would have been around 1972. Computer books were in short supply. Cliff drove me and a friend into Boston one Saturday so that we could find some more books. I bought some DEC programming handbooks which I still have to this day.
Got into high school, was allowed to skip out on math class to program on some sort of Wang Basic box. Figured out the relationship between EXP() and LOG() and the teacher figured out that I knew all of the math that would be taught that year. Big mistake, which took me years to undo.
We moved to Washington State, and I started taking some cool electronics classes at the Pacific Science Center. I think it was called the Can-Do Workshop. One day a guy came by and said that he wanted to start a computer club. This was Bob Wallace, later to go on to write the first PASCAL compiler for Microsoft, the PC-Write word processor, and to invent the concept of shareware. The club was named the Northwest Computer Club, and we had a really good time. Bill Gates was once a guest speaker, as was Dr. Robert Suding. Bob Wallace died an untimely death in early 2004.
While at the Science Center, a guy came by with the exciting news that Seattle would soon get a computer store of its very own. This must have been 1975, at the time of the Altair‘s announcement.
At the age of 15 I somehow got hired at that store as the janitor, with the agreement that I could use the computers if I kept the store clean. That job duty lasted 1 week, until I made my first sale of an Altair or IMSAI. Learned to treat every potential customer the same, regardless of how they were dressed or spoke. Good lesson for a 15-year old. Highlights of that time included showing Bill Gates that the Compucolor machines had a ripped off copy of his code, meeting Gary Kildall, and working with Bob Wallace, Tim Paterson (soon to gain fame as the author of MS-DOS), and Mike Courtney (who had the bad habit of working to the point of physical exhaustion and then falling asleep in his chair). We would gently roll Mike into an office and let him sleep for a day or so to recover. Earned minimum wage, which was then about $2/hour.
Bought an Altair of my own that year, along with a Cromemco Dazzler. Wrote a lot of 8080 assembler code and disassembled NorthStar BASIC to learn how it worked.
Age 17, moved to Maryland with my family. Got another computer store job (The Retail Computer Store, in Rockville, Maryland). Did code, sales, and support. Got addicted to the Alpha Micro system, a very early 16-bit PDP-11 clone. Disassembled Altair Disk (12K) BASIC to learn how it worked.
Started at community college, and took a huge step back in time. Whoa, punched cards! Learned all about batch and quickly decided that PL/I was THE language to know. Retrieved OS/370 builds from the trash cans and studied them. Became intrigued by the way our PL/C compiler (a PL/I compiler written at Cornell. Featured very fast compilation and the ability to fix almost any random input into a valid program). Started pushing random text and cards with COBOL on them to learn more. Went to the CS library at the University of Maryland to read up on this, and learned about compilers.
First year of college, got an awesome job, with an amazing mentor by the name of Steve Polyak. Steve taught me how to program in 6502 assembler, then he made me write a new assembler from scratch. I learned about hashing and made this assembler blazingly fast. Got a raise after I simulated the proposed hash function at school (using FORTRAN) and found lots of collisions when used on the 6502 opcode set. We took some Ohio Scientific machines and wrote a travel agency automation package named TARA. In 48K of RAM we ran three users on ADM-3A terminals. Steve wrote the OS and we both wrote the apps (he more than I). We had some very flakey memory, which was causing our double-entry accounting system to go out of balance in an uncorrectible way. I came up with the idea of doing an incremental, non-destructive memory test, one byte at a time. Steve’s OS would call me and I had something like 30 MS to do one step of the test and to leave things unperturbed otherwise. I should have patented this.
Learned how to use a differential oscilloscope to do head alignment on an 8″ floppy drive. Not too hard — insert a special floppy, and use an Allen wrench to loosen the heads. Tweak until a nice even pattern appeared on the scope, then tighten it down.
At about this time, met Carmen, who would ultimately become my wife (5 kids and almost 25 years later this is definitely the highlight of that time).
Same job, was assigned to write a program to check data supplied to the NIH for errors. The data was in rows and columns, so I came up with a set of formulas and constraints to express the desired relationships. Kind of like a spreadsheet, except inside out (dang, dang, dang — so close!).
At this point in the story I am barely 20 years old. Saved up some money and bought a used Apple ][. Spent borrowed money on a Language Card and a 300/1200 baud modem.
At school someone gave me a little slip of paper with a phone number on it. He told me to call it with a modem, which I did, at work. It answered “PENTAGON TIP”. I had been given the secret key to the Arpanet. After some experimentation I found that I could type “C” and a number between 1 and 255 to make a connection. Somehow managed to start logging onto a machine at Berkeley, and read all sorts of local restaurant reviews. How I figured this out, I have no clue. This was, of course, the Arpanet.
Around this time, Steve Herber, who had hired me at the first computer store, handed me a thick stack of manuals on a visit I made to Seattle. Little did he know just how great of a gift this was. He gave me a set of very early BSD manuals, bless his heart.
After 1.5 years at school, dad could no longer foot the bill, so I decided to start working full time. Spent some time at a small government-funded research company, writing PL/I on a mainframe, and BASIC on a TRS-80 model III, with 4 floppy drives. Learned to do batch mode late at night, submitting jobs using VM/370 and a weird batch/interactive thing called Wylbur. Learned about the concept of the virtual machine.
Started to learn about the 68000 chip for fun, since its architecture was reminiscent of the 6502. Still have the Osborne & Associates book on the subject.
The local ComputerLand store had a special event and I got to attend the local unveiling of the IBM PC. Started chatting with a guy and I told him that IBM had made a bad choice of CPU. He asked me what I would have used and I told him that the 68000 was infinitely preferable. His name was Dave Dikel and we will meet him again soon.
Continued going to school part time, 2 or 3 classes in the evening. Wrapped up my AA degree and managed to get admitted to the CS program at American University.
Dave Dikel (from the IBM PC introduction) called. He was at a company called Intellimac and they were building some industrial-strength machines around the 68000. Bingo! Went to interview there. They had promised some customers that they could buy a machine that would support 4 users writing and compiling Ada code using Telesoft’s Ada compiler. I was told that they had the OS (ROS) running in single user mode, and they asked if I could somehow turn it into a multi-user OS. I shrugged and said “sure”, with no clue as to how I would do this.
Due to my impressive claim, got hired on for $10/hour. Delivery for multi-user OS was 3 months out. Found out that they had lied and that all they had was bare hardware. Wrote hard disk, floppy, and serial drivers, and a boot loader the first 1.5 months, while thinking of how to do multiuser. This was a fairly simple OS which set up a linear address space and made no use of the memory mapping stuff present on our SUN cards (the SUN was Stanford University Network, I do believe). Decided that I could do multi-user by simply running 4 copies of the OS and building my own scheduler around this. Managed to get all of this running in a month, and it actually worked. Each OS partition could be booted independently. The available RAM was simply divided up evenly based on the number of serial ports on the box. The partitions could even crash (and be restarted) without harming the others. The “exception handling” section of my 68000 manual was pretty well-thumbed by the end of this. They managed to deliver on their promises and shipped more than a few of these 4-user, $50k Ada boxes.
The sales folks at this company then promised a box which could run the Ada OS and Unix simultaneously, without asking me first. At some point they handed me a hard drive and said “here’s your copy of Unix.” Wrote a boot loader and somehow got it going. Spent a long time finding out that spaces and tabs were distinct in Makefiles.
Got married in August of 1982. Still married.
Needed to make more money and went to work for Contel Information Systems in Bethesda, Maryland. Worked on an early broadband network for the American Stock Exchange. They used Cable TV hardware and somehow managed to move data back and forth. Once again, worked with Steve Polyak from a few jobs before. Debugged an X.25 protocol handler and learned to use a logic analyzer. Learned to build really reliable code because the development and test environments were separated by hundreds of miles. Had a good boss who understood the value of spending enough money to get good equipment — he once said “Once you buy the cheap one you understand why there’s an expensive one.”
Kept working on my BS degree, 2 courses at a time, through all of this.
This takes us up to 1983. I need to write more!