A break from my usual life-related blog posts to talk about another big part of my life.
As a child, I had a very, very big advantage over many others growing up in that I had parents that let me have relatively unrestricted access to computers. At first I just liked games, but I also pressured my dad into resurrecting a retired family PC on skid row (for old games) and eventually started building my own little collection of legacy hardware (so I could play LAN games with my siblings.)
I “inherited” (commandeered) a box of old magazines from my dad at around age 12 and inside I found reference to a computer language called “BASIC.” A quick rummage around the family C: drive turned up something called “QBasic.exe” and with my characteristic curiosity (and lack of fear!) I typed in a sample program and ran it. Woah! It worked! I didn’t know how it did what it did1, but it worked! And with that, I was off to the races.
This is the magazine and program in question. It made cool spirals!
This was some time around winter break 2006, but I have a feeling that I share a similar origin story with developers that got their start decades before I did.
After a year or so of producing crappy QBasic games and programs, I moved to Visual Basic, which provided an incredibly flexible environment for writing good looking (to me) Windows programs very easily. And even better, it gave me access to the incredible Winsock networking stack, which allowed me to create my own Internet chat server, HTTP server, and not-so-massively multiplayer online games2. Even though these technologies are now considered simplistic and mundane, they allowed me to do some pretty incredible stuff without having to worry about the low-level underpinnings of the system! Does having that knowledge now make me a better developer? Yes, but when I was 13 all I wanted to do was make cool programs!
By my reckoning, QBasic and Visual Basic let me do cool stuff because they had these properties:
- Easy to access – this means free or accessible via student discount or similar
- Friendly user interface and a fully integrated development environment
- Easily accessible, quality documentation – online at least, but offline if possible
- High “effort to cool” factor – either it has a large standard library, a good package manager and active community, or really high-quality tutorials
I’ve long since graduated from the Basic family of languages, migrating from one language or framework to the next. Some of the ones I’ve found that best embody the principles above are XNA Game Studio, Ruby on Rails, and ComputerCraft.
- In retrospect, I am glad the program wasn’t “Great-Uncle Ed’s Disk Wiper Supreme,” or anything else that interacted with the filesystem, because I probably would have run it anyway.
- You can find these old gems on my first blog! And the source code is here!