Known for my promptness, it is no surprise that I’ve taken approximately 28 days to reply to the indubitable Anne K. Halsall’s tagging of myself and several esteemed others to give the wonderful world of the internet my story (of all people!). Not only that, but to be listed with the people she listed me with! I can cross off “Appear in a list with Mark Dalrymple and Aaron Hillegass” off my life’s to-do list.
Without further ado, I present the story, as requested, many moons ago.
How old were you when you started programming?
Ah. This is an interesting question. Normally here, you’d get a fantastically woven tale of discovering a UNIX machine deep within the bowels of your college, and plugging away for hours and hours learning as much as possible, or even having an Apple ][ as a child, and pecking away at sweet BASIC programs.
I did not do this. Not at all.
I started programming when I was 17.
Most of my pre-programming life was spent enjoying other people’s hard work — I played video games. A lot of video games. I played a bit of baseball growing up, but by the time third grade rolled around, I had two loves in my life: Playing Oregon Trail in Typing class, and music.
My father was a trumpet player in his younger days, and coincidentally, also one of the first computer programmers at his university. Despite being a architecture major, he loved computers and got involved with them as much as he could. When I came to live with my father in Texas when I was 8, he began influencing my childhood with his love of computers, and I was hooked. My dad and I bonded over computers, and he taught me everything I could possibly absorb.
Back then, we were Microsoft men. We anticipated the release of new versions of Windows and Office with great anticipation, so that we could pick them apart and learn everything about them. We got the internet in 1994 or so, good old AOL. We jumped ship to cable internet as soon as it was possibly available, learning about ethernet and Windows networking (ugh), and everything as we went.
However, I really knew nothing about software. In fact, I knew more about interrupts, device communication, and USB long before I ever understood what a pointer was. As I grew up, I cared less and less about about what came out of Redmond, and more and more about what my computer could actually do. I embraced software in the form of computer games, eventually playing at a pretty high level in a couple of my favorites (competitive gaming, ugh). I was also into music a lot, playing trumpet, baritone/euphonium, tuba, and finally trombone throughout my childhood and into high school. I played with various pieces of musical software in my later years: Reason and Fruity Loops mostly, and somewhat enjoyed that.
By my senior year, I was pretty sure I’d be majoring in music, Trombone Performance I believe, and that computers were just a hobby.
How I got started programming (and changed my complete life plan)
Two things, or maybe, more specifically, two people completely destroyed that idea.
A good amount of my time was spent playing text based games oddly enough. My friends and I were into MUDs big time, which was rather odd in a time where Everquest was insanely popular. One friend, in particular, really liked MUDs, enough to learn how they work, and began work on one himself. At some point, I joined the fray. I had a bit of experience working on a MUD we all played, doing text-based level design. It was rather basic, but involved a lot of writing, and I enjoyed it a lot. So, I went about sitting next to him, writing room after room after room. Every now and then, I looked over and saw it – a stark black background with bright glowing white letters, arranged haphazardly in weird patterns on his screen. It was code.
My quick looks slowly became long stares, and as I saw what he was doing, and what it became, I was blown away. I guess I had never really though about software, and how it was made. I recalled back to my excitement over software releases, and realized how much excitement throughout my entire life was completely based on software. This was awesome, and I wanted to be able to do it. The next day, I went to the local Borders and picked up my very first programming book: Practical Programming in C++. I read the book every day. I ended up reading it around five times before I graduated high school. I loved it so much, I ended up taking a computer science class my senior year, which was a joke at that time. I excelled, helped other people understand, and loved every second of it. I had only ever been really good at one other thing: music, and it was awesome to have something else to join the party. Little did I know, I was a terrible programmer, but no matter, it was an amazing feeling.
No, there is another…
I love skateboarding video games. I mean really love them. I absolutely adored Tony Hawk’s Pro Skater, and pretty much everything about the series of games.
A friend of many of my friends, let’s call him Andy, since that’s his name, played this game at an insane level. I never knew this mind you, all I knew is that one day, I heard that Andy played Tony Hawk so well, that Neversoft wanted to hire him to test Tony Hawk. This was it. At this point, I realized that video games were a major industry, and that computer software of all kinds, was an even bigger industry. It all brought me to the realization that music needed to be the hobby, and that I needed to make software for a living. After some careful thought, I realized that this plan was much more feasible than using money made from music to fund my software plans. I graduated high school, and enrolled in college as a computer science major.
Coincidentally, Andy was on stage during the premiere of Guitar Hero World Tour, playing drums, which caused me to freak out. He’s now a designer at Neversoft, and I LOVE Guitar Hero.
What was your first language?
I guess C++, which is really quite bad. Never ever use C++ as the language you learn programming with, it’s awful. When I graduated, I got a Powerbook G4, much to the bickering of my father, who wanted me to get a Dell or something, but I knew what I was doing. 🙂
That was the first machine I owned that I ever programmed on, and I refused to write a line of C++ on it. I bought Cocoa book after Cooca book, taught myself Objective-C with the help of Steven Kochan, and Cocoa with the help of Aaron Hillegass, and never looked back.
What was the first real program you wrote?
Jeez, this is a hard one to answer.
There were tons of little one-offs, and the projects from Aaron’s book, not to mention five years of CS assignments. Adium is the first I ever shipped any code, so I’ll say it was that, though of course, I didn’t write all of that.
The first thing I actually wrote and finished all by myself and could be called a real program was actually Photo Touch. All the real experience I had up until then had been on teams, because I love working on teams of amazing people.
What languages have you used since then?
What was your first professional programming gig?
This is a hard one to answer.
In November of 2006, I decided I wanted to work on an open source project, in what I will call the best decision I’ve ever made in my life. I chose Adium, and was asked to join the development team in December of the same year. Despite the fact that since that initial flurry of activity, I haven’t gotten to work on it nearly enough due to the insanity stemming from my association with the project, leading to my actual first professional programming gig. I hold Adium in high regard, and will never forget the impact it’s had so far.
I accepted my first professional gig in May of 2007, as an intern at a little fruit company, who’s work I’m quite partial about. I worked on a pretty secret project, that would eventually become MainStage. I had the incredible luck to land my dream job of working on the Audio/Music team at said fruit company, which had been my dream since getting my first Mac out of high school, which came with Garageband 1.0, which I loved to death.
If there is one thing you learned along the way that you would tell new developers, what would it be?
NETWORK. I try to kid myself that I got really really lucky, but ultimately, my networking decisions (combined with a ton of luck, seriously) are what got me where I am. Take the time to get to know people, I am still around 9,999,999 beers in debt to Colin Barrett at this point.
Find smart people. Surround yourself with them. Most importantly, show off anything you think is cool. Everyone loves something cool. Not only will you inspire yourself to keep doing what you do, but you’ll inspire hundreds, if not thousands of others, to keep at it as well.
What’s the most fun you’ve had programming [that I can talk about]?
A tough one! 😉
I quite enjoyed writing Photo Touch, and showing it to my fellow students at school. Despite it being rather simple, I had a gigantic group of younger students surrounding me asking me questions about it, Mac programming, and working for fruit companies.
It was a real turning point, that let me know I was on the right track, and vindication about your life choices is extremely important.
Corollary: Why aren’t you writing video games?
I got into application development for some unknown, odd reason. I realized that applications make the world go round. Every day, we use a multitude of applications to make our lives work the way they do, and that writing these applications posed a unique challenge: How do you write something that someone wants to use every day of their life?
I’m still not really sure, although I suspect that I’m at the right place to find out, all things considered.
I imagine someday, I may make a foray into game programming. I’ve certainly given it some thought lately, but my love for user interfaces is what keeps me here, and doing what I do, and hopefully making apps that people use every day of their lives.
Thanks to Anne, Colin, Steve Kochan, Aaron Hillegass, Mark Dalrymple, and well, pretty much everyone involved.