I started programming in 1986 at age 13. I got an Apple IIc for my bar mitvah and it turned into a (mostly) life long passion.
I learned to program in BASIC, which served me well for quite a few years. I self-taught for a couple of years until it was the first language in the first computer science class I had in tenth grade at age 15. I used it off and on for years as the scripting language for Excel as well.
After BASIC I learned Pascal. I used that language in 11th and 12th grade. I didn’t program my first couple of years of college but then took a Pascal then C class in my third year of college. (I went five thanks to transferring from a quarter school to a semester one.) I became proficient in ANSII C, writing various apps on Unix, Mac and Windows, but ANSII C isn’t event-driven programming. Visual C was, though, and I took a semester of it plus a semester of Assembly my fifth, senior year of college. I wouldn’t say I really understood it but I learned enough to get an A in the class and complete my senior project.
That was also the year I started Infinity Softworks, developing our first apps for PalmPilot. That was the year event-driven programming kicked my rear end. The PalmPilot was so crude in those days as a development environment. I also went to graduate school and took a programming class that did a whole bunch of languages in one semester, including Java. That was 1998.
By 2001, though, Infinity Softworks was growing and I needed to focus on the business. I wrote a little bit of Palm code after that, did quite a bit of HTML and CSS (not a programming language — don’t let anyone convince you otherwise) but didn’t write any commercial code again until 2007 when we had shrunk back to two and we had an opportunity to work on BlackBerry (Java language) and Ruby on Rails, the former of which is dead to me and the latter has served me well for the past five years.
In 2008 we started working on iPhone and later iPad, or rather iOS code using the Objective-C language. Since then it has been all Objective-C for iOS, Ruby on Rails, and a little design work with HTML and CSS.
Notice I referred to it as Objective-C for iOS. The problem with developing for a new platform isn’t the language, per say. It is actually the programming calls (APIs or Application Programming Interfaces) into the operating system that are difficult. APIs are usually complex and involved and learning what is provided for you and what isn’t is so crucial to programming on a new operating system.
Well, this week I started learning Objective-C for Mac OS X. And I can tell you I have never had so much fun learning a “new” language. I say “new” because, yes, it is the same Objective-C language but the hard part, all the user interface APIs, are completely different.
I generally find this part of the routine a struggle. But not this time. I am really enjoying learning the OS X way!