^ Up

I started out playing with electronics when I was a teenager. Popular Electronics was my favorite magazine in the whole world. They were the folks who ran the article about the machine that started it all - the Altair 8800. I knew absolutely nothing about computers at the time. But they were cool. They looked all high-tech, with all the blinking lights and everything. And people I idolized, like NASA engineers, used them!

It was pretty mind-boggling that my county's school system actually had a computer for students to use - if they took the right classes, of course. That was a computer shared by all the high schools in the county, mind, not a computer per school. And there I was, seeing my favorite magazine talking about a personal computer. I read that article with lust in my heart. Just imagine: a computer of your very own!

The Altair was completely out of my reach, though. I was operating on a junior high school kid's budget, and a minimal Altair system would've set you back about $1000. That would've bought you a system with perhaps 4k of memory, a cassette recorder for mass storage, and a front panel full of switches and lights to program it. Things got even more expensive quickly if you wanted luxuries like, say, a keyboard or a video display.

It was all totally out of the question on a teenager's budget. There were other computers floating around shortly after that, but they were all competition for the Altair, with similar price tags. I could only dream.

Building my first computer

Then a miracle happened: Popular Electronics published a construction article about a computer I could actually afford. The Cosmac Elf was even more restricted than the Altair; it only had 256 bytes (yup, 1/4k) of memory, for example. But it was only about $100 of parts; less if you scrounged a little.

And so I scraped together enough money for it.

Interestingly, the most expensive single components were a pair of single-digit hexadecimal LED displays, not the microprocessor or memory chips. That was my introduction to one of the basic principles of computers: the peripherals are always the most expensive part.

Because I was trying to keep things as cheap as possible, I didn't use those hexadecimal displays. I used an alternative binary display (8 LEDs) described in the article. The hex digit displays would've set me back about $30 for the pair; the binary display option cost about $10, as I recall.

Learning to program

So, after wiring it all up and double-checking my work, the moment of truth arrived: I turned it on, while praying as hard as I ever had that nothing would produce smoke.

And the stupid thing just sat there. Turned out that it wasn't going to do anything until I learned to program it. The construction article had a sidebar that was an introduction to machine-language programming, and I devoured it.

After playing with the example programs, I set out to write my very first original program: a 'bouncing ball' display on those 8 front-panel LEDs. Light up the leftmost LED, then turn it off and light up the next one, until I got to the rightmost one, then start back to the left, going back and forth across the display so that it looked like a moving light.

I got done toggling in my first try (loading programs one byte at a time with toggle switches gets old really fast, by the way), and flipped the run switch. All eight LEDs lit up, dimly.

Now came my introduction to debugging. After using the basic debugging technique known as "staring at the code and thinking", I realized my mistake. Even that little computer was so fast that my eyes couldn't keep up; it was actually working just fine, but the ball of light was bouncing so fast that it all blurred together. A little calculation told me that it was going back and forth a few thousand times per second. Fortunately, the little article sidebar had a section on something called "delay loops". After I played around with that idea for a bit, I got my bouncing ball to bounce properly.

And I was hooked.

Learning to program, phase II

After more user-friendly machines came along, I negotiated an agreement with the owner of my local Radio Shack. I got to hang out in the store and play with his display model TRS-80, in exchange for making myself scarce when paying customers were around, and for sometimes helping him make sales ("Hey, if a kid can use it, surely you can..."). Having a keyboard and video display, and an actual high-level language was _wonderful_, and I learned a lot from that little beast.

When I went to college, I had to decide between the two subjects that interested me enough to consider majoring in: physics and computer science. I decided to major in physics, on the grounds that I had never found anything having to do with computers that I couldn't eventually figure out, but it was very handy to have people to ask stupid physics questions of.

But that didn't mean giving up my computer addiction. Using the university's computers meant signing up for classes, though; they were very stuffy about that. So I ended up with four computer classes on my transcript; two introductory courses that I took purely to get onto the school's computers, and two graduate school courses ("Principles of AI" and "Compiler Architecture") that I wheedled my way into because they were actually interesting and taught me things I didn't know.

College was also my introduction to Unix (specifically BSD 4.2 and 4.3), and I still prefer that environment to any other. I use Linux these days, but it's the same world for most purposes.

Linux!

After finishing a bachelor's degree, I decided that a career in academia was not for me, so I was faced with the necessity of earning a living. By happy accident, people were willing to pay me to program computers.

In the early 90s, I was working professionally mostly on IBM PCs running MS-DOS, but my personal machine, my pride and joy, was an Amiga 1000. First microcomputer to have a dedicated graphics accelerator, and a very nice GUI, all shoehorned into 512k of RAM. Windows (version 2 at the time), by contrast, was more a proof-of-concept than a useful environment. Macs were nice, but the Amiga was better.

Then another miracle happened. Some guy from Finland released his toy Unix clone, with a warning that it was just a hobby project that probably would never amount to anything much. I bought my first PC-compatible to run it, and have never looked back; I retired my Amiga as soon as someone ported the X Window System. Linux rocks beyond words.

Since then I've worked on desktop applications, embedded systems, mainframes (a bit), back-end web apps, and front-end web apps. It's all fun.

These days, I'm running a decently fast machine and Gentoo Linux. I don't recommend Gentoo unless you're crazy in much the same way that I am (Gentoo builds everything from source code on your machine), but it's great if you are.

^ Up