My Life as a Nerd

PET Breakout In early 1981, some mysterious machines appeared, temporarily set up in a physics lab at my high school. They were all running a game I had never seen before called "Breakout."

A short time later, I saw a BASIC program in a sidebar in the math textbook, illustrating how one might use a computer to solve the problem at hand. I asked the teacher, Mr. Barrett, whether this would work on these computers. Being the progressive teacher that he was he said "Probably. Why don't you go and try it?" What, right now in the middle of the class period? Sure. So I went and typed the program in and it worked, and I was hooked.

All social pressures of high school -- what to do with yourself during the breaks, who to sit with in the cafeteria, agonizing over why the girls ignored you -- disappeared in short order. I stopped eating lunch at school altogether so as not to miss out on precious computer time. In the small clique of the computer room I was not an outcast.

ACME Word Factory Gradually I mastered the BASIC language, then assembly. Government job creation led to summer employment in 1983-1985 where we did stuff like write educational programs like this one. Click on the picture to download it so you can try it under VICE, the Commodore emulator.

In March 1984 I spent most of my savings on a Commodore 64 computer. Programming tools for that machine were plentiful, but it was always more fun to write your own. All my good ones are on these disk images. There's a Tetris game too.

Primitive digitized picture My brother Matthias built a very primitve drum scanner out of Fischer Technik, later I built one out of other junk, and we used them to digitize pictures like this. I figure we got a usable resolution of 10dpi with 4 levels of brightness.

Here is a cartoon I drew about computers in that time period.

The Attack of the Blue Bomber I wanted to be a programmer just as good as the pros, and because most of the professional product we saw was video games, and because one of the better ones was "Fort Apocalypse" I just had to write my own smooth scrolling helicopter-in-a-dungeon game. Looking back at it now it is unimaginative but it plays OK, click on the image to download a disk image to try it on an emulator. The only thing missing is the second half of the third level, the dungeon simply ends and you fly out into black nothingness. If anyone cares, the source code and the cobbled-together tools used to make this game are all on the disk image too.

In fall 1985 I went to university. In summer 1987 I bought a secondhand Intertec Superbrain (actually a Compustar, the network version of the Superbrain) for $200. This was a CP/M machine with a Z80 processor, 64K of RAM, and two 360K floppy drives. I rewired the network port to make it into a parallel printer port, hacked a strange APL interpreter that I found on a BBS to correctly display the APL character set (using a custom character ROM.) Using the primitive subset of C implemented by the BDS C compiler, I wrote a program to read files off MS-DOS floppies. I wrote a nice terminal emulator for it so it could be used to access Unix machines remotely. I had vague plans to port CP/M Plus, the much more advanced version of CP/M that came with the Commodore 128, to the machine but they never went anywhere.

Computers in the Basement I really like the picture on the left, which Matthias took while I was at home over Christmas 1987. That's me with the Superbrain on the left, then the antique Volker-Craig 303 terminal that I had earlier bought to use with my 300-baud modem. On the right is my sister Marlene playing a game on the 64.

In early 1988 I bought a secondhand Amiga 1000. The Amiga soon acquired 1MB of memory, a homebrew SCSI interface, an 80MB hard disk and a QIC-24 tape drive, all with homemade device drivers. You can't imagine the feeling, dumping the OS onto the hard disk after a marathon 18-hour hacking session, after trying to do serious computing on a primitive single-floppy computer for a year, and knowing you can kiss that awful gronking noise goodbye for good. I brought the system up hard-disk-based as soon as I could, then worked the last bugs out of the device driver. The machine's performance went up twentyfold. That was sweet. Buying it with a hard disk from the start would have been no comparison.

I never did any graphics programming on the Amiga so I have no pictures to show. The only thing of any consequence that I did was reverse-engineer the operating system kernel and release a commented disassembly, however because of copyright restrictions you actually had to run a program to reconstruct it using data from your own machine's ROM, and who has that any more. You can find it on Fred Fish disk #188.

I had discovered Unix and C (on a Sun 3/160) on a co-op work term in the fall of 1987 and forever after wanted my home machine to be just like Unix. On the Amiga I had unix-like commands and the ability to read and write tar tapes in the same format as the Unix machines I had access to.

In 1992 I found a NABU 1600 computer at a garage sale. It cost $40 and the sturdy metal enclosures looked useful. When I got it home I plugged all the pieces together and turned it on and it booted and said "login:" Whoa. Can anyone still remember what magic that little prompt represented, what worlds of interesting computing it was the key to, in those days before cheap 32-bit PC clones and Linux, when the word "internet" went hand in hand with "Unix box" and there wasn't much access to either? Fortunately there was no root password.

This was an early Unix micro made right here in Ottawa in 1982-83. It had an 8086 processor, a discrete-logic paging MMU, 512KB of main memory, a 10MB hard disk, a 500KB floppy drive, and 4 serial ports for terminals and printers. No other I/O. It ran Microsoft Xenix 1.0 which was so direct a port of Bell Labs 7th Edition Unix that they had actually forgotten to white-out one reference to the PDP11 in the manuals. It was the closest thing to a classic Unix machine you could get without actually owning a PDP11. It was astounding how elegant and simple an operating system Unix was before all the SunOS-style bloat hit. On the other hand almost everything I was accustomed to using did not exist. No C-shell, no vi editor, no networking, no soft links, no really long filenames. Still, playing around with this machine and transferring the OS over to a bigger hard disk greatly enhanced my understanding of Unix. Programs on this machine (and on the PDP11 too) could have at most 64K bytes of code and 64K bytes of data. I was able to get a vi clone going by configuring it for Minix, a "toy" Unix for PCs that had pretty much the same limitations as the grown-up Unix of a decade earlier. In the stripped-down Minix configuration it had 63 kilobytes of code.

For a number of years most home computing I did was via dialup from a VT320 terminal to a Unix machine at work although I did maintain records and do cross-development for my 8031 projects on the Amiga, which remained at OS 1.3 and had no software newer than about 1990 on it.

I didn't buy a new primary computer until early 1999, when I finally bought a serious PC clone to run Linux on. Finally, real Unix at home.

Update: April 24, 1999.

The Amiga has been retired. For 11 years it was the home of my collected digital bits. By the end it had a 573MB 5.25" full-height hard disk and a QIC-150 tape drive, and stored a whole decade's worth of email, letters and code. Quite a job for a 7MHz 68000 machine. You get attached to a machine when you've patched the operating system to boot your homemade device driver to access a scrounged disk through homemade hardware. When you've low-level formatted the disk by typing SCSI command bytes in hex into a homemade SCSI exerciser program with the official SCSI specification as your manual. When you still remember how cool it was that the homemade TAPE: device actually worked better than /dev/rst0 on the Unix boxes.

The Amiga waiting to be picked up by its new owner... I had a whole drawer full of backup tapes, not one of which I'd ever had to restore. The retirement ceremonies included going through another whole drawer full of floppy disks and the whole hard disk, saving the good bits and deleting the private ones. Nostalgia struck me. There were files that I hadn't looked at since they were unspeakably sophisticated, and now it was all primitive. I still had the "King Tut" picture and the "Jay's Song" music that had awed the crowds at the 1988 World of Commodore show.

I found more than one hacking project I'd forgotten about altogether. I still had early debug versions of the device drivers. All obsolete now. After I'd moved the files to the Linux box, I compiled the 8031 assembler and ran my PBX source code through it. On the Amiga there had been time to get something from the fridge while it assembled. On the PC, whose CPU technology is about 15 years newer, it takes 90 milliseconds. With Linux I can plug in any old tape drive and it just works, no scratching my head over how I'm going to eliminate another two clock cycles from the byte transfer loop so the damn thing will stream. I've never even looked at the SCSI code and I don't care.

Fortunately for the Amiga, it is spared the indignity of a dusty attic or a dumpster. A friend who loves old computers and used to hack Amigas too was very happy to get it and for a while at least, it will be used again. Ridiculous. I'm talking about this thing as if it were a beloved old dog I had to find a new home for. Can't help being a nerd, I guess.

Update: March 6, 2000.

In front of the computer In the past year I've spent more of my spare time staring into a computer CRT than ever before in my life. Linux and a fulltime internet connection (a Nortel 1-meg modem provided by my employer) can do that to you. My attention span for this sort of thing is two years so perhaps a year from now I can start doing other stuff again.

No wimpy laptops here... Meanwhile there are four Linux machines in the house, ranging from my main PC to a lowly 486 that is my internet gateway machine. I've learned a lot about Unix and networking. I can even write real Unix programs now, the kind where the whole program is wrapped around a select() system call.

I sometimes wonder why I still design hardware for a living when this stuff is so much more interesting. But hardware design pays better, and besides this stuff probably wouldn't be fun if it was a job rather than a hobby.

Update: March 29, 2003.

My big tech project in the last few months has been the new web server. I lucked into access to a good bandwidth DSL uplink at a friend's house where I could park a server, so now I can host as many gigabytes of stuff as I want and nobody superimposes pesky ads over my pages, and I can have my own domain name. I took the hit once, getting Google to learn where all my stuff was again, now I plan to keep regardless where I host it. I like being the king of Google on certain obscure subjects and you can only be that if you don't change your URL all the time.

Isn't it strange how you always feel nostalgia for the stuff you're not currently doing? When I'm deep into some computer nerd thing, holed up in the basement for weeks on end, I feel that I'm missing out on real life. As I get older, I place more and more emphasis on the real life stuff and end up not doing any technical projects for so long that I come across some and they feel like ancient history, like a part of me that has been lost.

I did a long overdue basement cleanup. The first step was to build a huge sturdy shelf structure in the laundry room, where I could file cardboard boxes full of stuff too good to throw out. Then I basically went through every box of junk I have and sorted. And came across design notes and actual artifacts from all kinds of stuff I used to do. Nostalgia struck me, even for my Amiga stuff. I find that the permanent cure for such a nostalgia attack is to take everything I can still find or remember about an old project or event, and document it on the web. Then there is a "checkpoint" - no faint memories getting ever dimmer but good solid fact that I can always refer to. And I can add it as search engine fodder to my web page - my contribution to the information universe may be humble, but at least I have some.

Another nostalgia cure is the wonderful world of emulators. Using UAE I can boot my old Amiga environment right up, ditto with VICE for the Commodore 64 stuff. Again, the past is right at your fingertips, so there's not such a tendency to romanticize it, and you don't have to keep a basement full of actual flakey hardware.

In a way, I'm doing the same thing with my non-technical life by accumulating a huge number (29,000 and counting) of well-organized photos, old ones scanned and new ones digital. That's a whole other project, but I can't put that on my web site, some of it is too personal (if you can believe that).