In 1983 my parents bought me my first computer, a Radio Shack TRS-80 MC-10. It was practically the cheapest, least-powerful entry-level computer available, but it was much cooler than the even-cheaper alternative, the Sinclair 1000 (4KB RAM vs. 2KB RAM, 8 colors vs. monochrome, chiclet keyboard vs. membrane keyboard).
I saved up and bought the 16KB memory upgrade myself, and after I tired of writing all of my BASIC programs in a notebook and re-typing them for each use, I purchased a tape drive for storing stuff.
Tape storage soundly beat constantly retyping programs, but it still sucked pretty bad.
The joys of tape storage
It worked like this. First, type in a program. Then rewind to the beginning of a tape and reset the counter to 0. Then hold the REC and PLAY buttons together to start recording. The TRS-80 would start sending the program to the tape deck after receiving a command typed into the keyboard. Once the command returned, the program was stored and you could stop recording.
Usually you’d leave a span of extra space and then record your next program, noting the counter of that program with a little log notepad. It was too expensive to use an entire cassette for a single program, so you’d just keep a log of the start counters of your apps. If, in the process of re-writing an app, it grew to a size that would run into the next app, you either overwrote that next app or marked the original program space as dead and moved the program to the next open position.
I used a few different tapes, so to load a program I rewound the tape to the beginning, reset the counter, then forwarded to the counter number of the program. Often I’d “scrub” to find things: While fast-forwarding a tape, you could hold down the PLAY button and listen to the programs screeching along. You could even learn to identify the programs by the sound. Maybe you had one short program, one long one, and two more short ones, and you wanted to scan to that last program. You could easily identify the long program while scrubbing forward (it’d been screeching for a while). Then you’d hear a pause, a short screech for the following short program, another pause, and boom—there was the program you were looking for.
A career is born
I drew the only conclusion anyone could possibly draw from this early programming experience: It was the best thing ever, and I was going to grow up to be a software developer starting immediately.
I would create my own applications and sell them, funding this development by consulting and writing whatever people needed me to write on the side. But before I started accepting customers and cashing checks, I needed a nice new blank cassette to store my work. And not just any cassette—one of the costly short ones designed to store programs.
I headed to Radio Shack and described my career plans to the teenage kid working there. He explained to me that it was extremely difficult to start a career in software, and that the consulting idea was terrible. Customers ask for one thing, and when you deliver it they decide that’s not what they meant, and in the end you get jerked around and make pennies per hour. Then he pointed me to his choice of cassette and rang up my order.
While slightly demoralizing, in hindsight his advice was pretty solid.
Money wasn’t my real goal, though. I just wanted people to use and love my software. I wrote an application to track golfing statistics for my stepfather. He played along and entered his score and par for an 18-hole round, then convinced me that I could type a lot faster than him and should take over all future data-entry duties. Even though he stopped directly using my software, I was able to use the program that I wrote to answer a question of his—and that was enough to make me happy.
The old college try
Over the years my interest in computers ebbed and flowed. In college I switched my major from computer science to electrical engineering. But then I bought a Borland C compiler for $200 or so, which was a crazy amount of money for me at the time. I couldn’t get the first example program to run. I typed it in exactly as printed in the manual, but it did not compile. Can you spot the problem?
Yes, that’s right, I didn’t include
stdio.h! How the hell would someone just know they were supposed to do that? Mind you, this is before the internet was widely available. Anyone who predates internet availability will tell you, things were really tough when computers didn’t tell you the answer.
I signed up for a C course at LSU because, damn it, I was not going to have wasted $200 on a compiler I couldn’t use. The class was taught by Jerry Weltman and it was awesome. I loved the assignments and the C programming language and I soon changed my major back to CS. My love of programming had returned.
The other day I recalled my 11-year-old self at RadioShack, buying a cassette with the dream of one day writing software that other people used—and maybe even getting paid for it. I realized how lucky I am to have lived through the incredible growth in the power, influence, and pervasiveness of software in all our lives.
During my career I’ve worked on numerous applications used by a wide variety of users, but I believe that my work at New Relic has had by far the most impact. Little bits of my code are running in thousands of applications across the world and that amazes and delights me. Writing software can be a deeply creative, wonderful experience, but having people actually use and love that software elevates it to an entirely different level.
If you’d like to relive my early programming days, here’s an MC-10 emulator.