When I was 12 years old I spent two weeks of my summer vacation at the Lawrence Hall of Science in Berkeley learning how to program a computer using the BASIC language. It was, undoubtedly, the most important two weeks of my life.
By the end of the next summer, I had taken their Advanced BASIC course and I was the proud owner of an Apple II+ computer (thankyouverymuch gift checks from my Bar Mitzvah). I distinctly remember bragging to my friends.
"You guys! I can program this computer to do anything! What do you want? I can do ANYTHING!"
This was, however, the early 1980s, and most 13 year-olds had no idea what a computer could reasonably do, so they just stared at me blankly, unaware that one day computers would serve up pornographic debauchery beyond their wildest dreams. In the pre-Internet age, computing wasn't terribly exciting, and my Apple II+ with its 16Kb of memory wasn't powerful at all. I followed up with some examples.
"Guys, I'm serious! I can make this computer show some cool patterns, OR EVEN print your name over and over again! AS MANY TIMES AS YOU WANT!"
Johnny and Akshai, my best friends, were understandably unimpressed. I was undeterred. I happily spent many of my free hours over the next several years devising and writing computer programs to amuse and impress myself. A short list of my favorites would include:
Laser War: A low-resolution shoot 'em up game on the Apple II+. It was unplayable by current standards.
CTRL-C Gotcha: On the Apple II+ the CTRL-C key sequence was a lot like today's CTRL-ALT-DEL. I wrote a program that overwrote what the computer did when you pressed CTRL-C. What was cool about this program was that it modified itself each time you ran it. I had never heard of self-modifying code, so I invented it myself.
Match Maker: In high school I wrote a program to try and match couples up. I passed questionnaires around to everyone I could find, asking for their personal statistics and preferences, and then I entered their data into my program to try and find romantic matches. It never found a good match. The best it did was to pair Doug Plazak and Gayle Stansfield. I know! Ridiculous!
The Mr. Martinez Game: My high school Spanish teacher was a remarkable human being. Not only did he teach he me to score more highly on the Spanish Literature AP test than the English Literature AP test, but he foiled every single practical joke that we tried to play on him. In his honor, my friend Don and I wrote a text adventure game (like those old Choose Your Own Adventure Books) about a student trying to flee from the implacable Mr. Martinez. We sold copies to most of our classmates for the price of the floppy disk it was stored on.
Blackjack Strategy Analyzer: I learned a new computer language (Smalltalk) that I loved very much right around the same time that I learned how to count cards in Blackjack. Since I wasn't smart enough to figure out with statistics whether or not I could make money counting cards, I decided to write a computer program to figure it out with brute force. I programmed the computer to play blackjack just as I would (with a reasonable error rate) and I let it run for about a million hands. It told me to keep my day job.
Then I didn't write any software for myself for a very long time. I wrote the Blackjack program in the early 1990s and that was it for many years. It wasn't until last year that I finally conceived of my baseball gambling program, The Baseball Predictinator 2000, and was motivated enough to write it.
I had forgotten what a joy it is to write a computer program for myself. When you spend your working hours programming corporate minutiae, year after year, you forget that you ever had the feeling of "I can make this computer do ANYTHING!" Even though now I know that there are entire genres of computing that I suck at (graphics, user interfaces, anything on the Web), I love that I can still summon up that powerful feeling of software mastery.
The Baseball Predictinator 2000 has brought me great joy over the last nine months. I love that I can still conceive of a program, type for a while, and then watch it spin and whir. It brings me great joy to think of a problem and then solve it with a series of computer commands. It remains to be seen whether it can make me rich, but I'd bet money that it can make money. Why shouldn't it? I can make my computer do anything.