Loading...

Mischief Based Programming

August 24, 2007 Tagged as: best-practices development

Jeff Atwood @ Coding Horror posted a few days ago (but only came into my RSS reader today...) about getting his start in programming through writing games on his TI-99. He cites a few other developers who also got their start in games. Jeff continues with a brief history of a possible genealogy for the game Minesweeper, which I'm sure EVERY person who's ever worked at a call center or at a front desk is quite familiar with.

I've been playing video games since my dad brought home an NES when I was five. However, while I attribute the logic and troubleshooting to playing video games (and hooking up the NES when my dad unhooked it so I wouldn't play it), I seem to be among a small minority of developers who didn't get into programming through playing games. I got into writing code through my use of AOL when is was 12.

While I was still too young to apparently conduct myself properly on the internet, I found myself in the AOL internet portal world. While AOL's service is now only relevant to an older generation, I still found many of their services to be of use when I was younger (before there was a Google). I authored my first web page with AOLPress, on AOL's servers, as a tribute to Warcraft II, my favorite game at the time. AOLPress's ability to hop between WYSIWYG and raw HTML allowed me to make a change in the WYSIWYG and view the source, which taught me HTML. While my grandfather might have thought I was 1337, I still had no visitors to my "web site," and I was still really only writing markup, which really isn't programming.

About the same time, I discovered the "underground" AOL presence. I found chat rooms that ran bots to email you mp3s (before it was illegal), software (that I didn't know was illegal), and/or pornography (but I feared my dad more than the government). So while I upgraded myself from midi renditions of "Crocodile Rock" to an mp3 compressed version (that still took >30 min to download at 56k), I also stumbled across a copy of Microsoft Visual Basic 3. I thought it was awesome. I could make little programs that had a button that would pop up a message box that said hi, and it took me only a few minutes. This same underground also used Visual Basic to create helper apps for usage in AOL, like the bot that would email everyone in a chat room the various warez, programs that would scroll macros to the chat room, and even "punters", that would send massive amounts of instant messages to a user containing multiple <h1> </h1> causing (for a still unknown reason to me) the attacker to "punt" the victim from their connection to AOL, causing them to need dial-up again, and usually be confronted by the same offending user "punting" them again.

Now, my first official project in Visual Basic 3 was an antipunter, which introduced me to Win32 programming, and all the HWND sort of stuff (that I've since forgotten). The program was named before it was even developed, and I called it The North Pole Antipunter, cleverly implying that the antipunter gives punters the "cold shoulder." The basic idea was that the system would check for new IMs, and close the IM window immediately. As long as those <h1>'s didn't pile up in a window, you were okay to stay online. So the antipunter could go constantly without you being punted. The problem with the application was that if someone wanted to legitimately IM you, the antipunter would close that window. It didn't check the contents of the IM, only the presence of an IM window. At the point of this discovery, I had EOL'd the program for newer and cooler things.

The drive for me to continue with Visual Basic (and other languages later on) was pure mischief. I wanted to be able to put a program on a friend's computer that would do something funny every hour. I created a piece of software that would shut down my computer at 10 o'clock on weekdays so I wouldn't stay up too late (which became a problem). While I don't condone writing viruses as a way to get into computers, there's a lot to learn in that process that would be invaluable later on in life.

So I guess I did get my start in programming by writing games. The only difference is that my games involved playing with other people.