I know kung fu
RealBASIC blew my mind, because suddenly I could create software just as easily as plotting a town in SimCity; drag and drop buttons and views into a window, double click them and paste in a snippet of example code and boom! You have an app. Of course, it would take years before I'd built anything more interesting than a Notepad clone, but the seed was sown.
In early 2002 (late to the party, I know), I managed to get my hands on a Mac OS X v10.1 disc. I'd 'borrowed' an OS X Developer Preview 1 CD from my dad's work a couple years before and happily installed it on my PowerMac G4 (the first computer I had that belonged to me), only to erase it in disgust a couple hours later. The early Developer Previews of OS X I found horrid; I remember thinking 'this is too much like Windows' at the time. Now, a couple years later, OS X was on the shelves, and was like a completely different OS to what I'd tried some years back. I chose to go all-out on OS X from the get go, and RealBASIC had been updated to create apps that could run on both OS 9 and OS X from the same binary so it continued to take up all my hobby time.
Before this point, I hadn't really realized that there were more OSes than Mac OS and Windows out there. With the OS X release, I had been reading a lot about NEXTSTEP, and my curiosity led me to virtualizing all sorts of OSes in Virtual PC: BeOS (one of my favorites!), Solaris, Red Hat 5, QNX and every pre-release build of Windows I could find (these were the days of Longhorn, filled with grandiose visions and crazy new features appearing every other month). I learned to appreciate all the differing takes on what an OS should be, and I pulled them all apart with gusto trying to learn as much as I could.
Meanwhile, I stuck with RealBASIC until I was sixteen when I finally reached the limits of what I could do with it, and conveniently Apple had just released Xcode 1.0. I had been putting off learning how to make Cocoa apps, but this time I had no choice so I decided to delve head first into Xcode and not come out until I'd figured out how to recreate everything I was doing in RB. Before long, I'd crossed the point of no return; although everything was that tiny bit harder to do, everything I was making was a hundred times better than before. For the rest of my school days I made all sorts of Mac apps, even posting some online, but never going as far as selling anything.
It's a UNIX System. I know this!
Then, the iPhone happened. It was my final year of school, and I'd been rocking a Nokia 6630 for three years at this point. Little known fact: I was a complete Symbian fanboy up to 2007. I had started with the 7610 and had two N-Gages before the 6630; it was a real OS, with real apps, running on a phone. The mere idea of writing apps for it was thrilling, but unfortunately writing anything for Symbian at the time was a nightmare. I was the kid who sat in his dorm room compiling an open source Symbian toolchain for OS X for hours just to try and create 'Hello World'. After several failed attempts I'd given up trying, but then, halfway through my final year, Steve Jobs stood up on a MacWorld stage and announced Apple had built a phone, with a touchscreen, and it ran OS X. The concept blew me away -- OS X! On a phone! I was fascinated by it, and followed all iPhone-related news closely, hoping that someone would be able to hack it and create their own apps to run on it.
A couple days before the news broke, a hacker friend of mine sent me a screenshot showing a 'Hello World' app running on his own iPhone -- it was possible! I tore the OS apart, put together my own toolchain, and set to work on reverse engineering just enough to figure out how to build an app. It stunned me how similar this was to desktop OS X; even though everything was different, it was still built in the same way, still had all the same design patterns. I already knew how to write for it! It was going to be months before I had an iPhone or iPod touch of my own, but that didn't stop me; I emailed a copy of my app to a friend in the US who would see if it ran, screenshot it, then send me the results ('remote debugging'). I would go on to build several apps and hacks for the iPhone that year (including a popular one you may know called 'Stack'
). The final puzzle piece came in 2008, when Apple announced the App Store; finally, I knew what I wanted to be -- I had a professional career in app making ahead of me.
End of Line
That first year of developing for iOS before there was an SDK (or sample code, or documentation) left me with most of the skills I value today; learning to disassemble and reverse engineer code, designing for a limited screen, and focusing your design for a specific-purpose app instead of trying to do too much. In recent years I've expanded my knowledge (and apps) across a variety of other platforms (I'm on everything-fanboy: Mac, Android, WP7, webOS, MeeGo Harmattan, Symbian, BlackBerry PlayBook, and so on) but iOS will always be home to me. The iPhone is my blank canvas, and I've always thought of it that way. It's not a computer, it's not a phone, it's a software appliance; it's only bounded by your imagination. I couldn't imagine working in any other profession.
You can check out Steven's work at High Caffeine Content and follow him on Twitter (@stroughtonsmith)