Where it all started
It was the early 90s when my uncle gave my parents his old Apple IIe that was just collecting dust in his basement. Our first family computer. I didn’t know much about them at the time, but I learned quickly how to swap disks, play Oregon Trail, and even store my own files on a disk I labeled “Carl’s Place”. I had visions of putting all kinds of secret messages, and neat activities on there.
I was so excited that this old Apple came with a thick instruction manual, and it talked about ways to “write your own program”. I started copying the examples from the book before I even knew I was writing Apple BASIC. I learned quickly as soon as I found out I could LIST the source of any program and take it apart from the inside out.
This went on for a few years before my parents thought that I was spending too much time on such an antiquated machine. In early 1996, we spent $100 million on a modern computer. My process of learning had to start all over, and that got me into more unfamiliar territory–what does it mean to ‘compile’? What do ‘programmers’ do? I found it difficult to learn at that time because every time I’d open up ‘Ski Free’ in Notepad, I just saw gobbled up text.
If this is what it took to write programs, I knew I was out of my league! I couldn't understand any of this BASIC code! Programmers were clearly wizards.
A few months later, I was in our local bookstore, and came across a book that fascinated and excited me, Teach Yourself Game Programming in 21 Days by André LaMothe.
I had to have it! I had to understand how Ski Free and all my Nintendo and Genesis games worked! I had to understand how to write that gobbled text!
My first steps into C++
The game programming book came with a copy of Visual C++ 1.0, and it was amazing! But, I quickly realized I had no idea what it meant! What was C++? Integer? I was only 13, and so much of these terms were foreign. I went back to my parents, asking them to help me figure out what C++ meant, and they bought me “C++ For Dummies”. Awesome!
I tore through that book, figuring out what variables, pointers, and structs were, and quickly turned back to the game programming book to apply my new knowledge. I followed all the examples, and ended up building some pretty cool games. It was over that summer of 1996 that I knew I wanted to be a programmer for the rest of my life.
In 1999, as a freshman in high school, I heard that there was going to be a new class offered in the next semester: “C++ Programming 1”. I HAD to get in! I talked with my counselor, and he told me that the class was only for juniors/seniors. Dead end. I then talked directly with the teacher who was going to teach the class, and he told me the same thing. I asked him what I would have to do to prove I could take this class, and he said if I could show him a basic C++ program, he’d consider letting me in.
That night I went home and wrote a simple command-line app that showed you a numbered menu, and asked you to make a choice (1-5). Each one did something simple like play the ‘bell’ sound, or ask your name and print it cascadingly across the screen. I was happy with this little app, so I printed out the source, and took it to the teacher the next day. He was impressed, and said he’d let me in. Nothing could stop me now!
I went to a local college only ~50 miles from my home town and was excited to be learning another programming language, Java. I couldn’t believe how much stuff you got for “free” just by choosing this language–garbage collection, “infinite”-sized arrays (Vectors), etc. I spent a lot of time helping other students learn concepts that I had figured out on my own in my younger years working with C++ and other languages. I knew what things confused me back then, and was easily able to communicate simple concepts to them through those experiences.
Towards the later-end of my college days, I began working with C# due to the fact of Microsoft having a liaison on-campus, and he gave away copies of Visual Studio, and MS Office for FREE! I fell in love with all the cool syntax-sugar that C# had, and began to distance myself from Java. I still kept my C++ roots, and in my senior year I took a self-study course to use C++, OpenGL, XML and MIDI files to prototype a robot dancing on the screen, receiving instructions from the MIDI file’s lyric track. The XML was there to build the robots parts and the app parsed the XML and put the robot together.
At the same time, I was getting more-deeply involved in C#, and with a group of classmates, we built a 2D platformer game for our capstone project. I came up with the concept, drew the art, and did a bulk of the core engine work using SDL.NET.
I still pick away at game development, usually in HTML5 canvas, but I am quite content with web dev for the time being.