I Am A Flash Developer. And I Am Learning the iPhone SDK.
Yup, you heard it right.
So. The controversy is out there. You’ve no doubt, by now, read all the widely-publicized hype and hoopla surrounding said controversy.
Unsurprisingly, the majority of the people in the Apple camp agree with Apple. And it seems, the majority of the people in the Flash camp take Adobe’s side. As a Mac-loving Flash designer/developer who has built a career on both Mac OS X as well as ActionScript (or as I like to say, “Flash is how I got famous!”), I most definitely feel torn. So what’s a guy like me to do?
Well, I can definitely tell you what I am not going to do. And that is: I am not selling my Mac and moving to Windows or Linux. And I am not putting up my iPhone on eBay and replacing it with an Android or Palm Pre or God forbid, a Blackberry. As a matter of fact, I will both be upgrading to the very impressive Adobe Creative Suite CS5, as well as buying myself a brand-spankin’ new MacBook Pro complete with a Core i7 processor, thank you very much. (It’s interesting to note that both product updates were announced this week.)
Are you surprised? Shocked? Outraged? Well, here’s a bit of my story. Ever since the iPhone first came out, I guess I’ve been a little bit envious of iPhone developers. Many iPhone apps felt so much like Flash apps: the elegant animations and transitions combined with a touch interface inviting your taps and swipes felt like Flash at your fingertips. I remember thinking how cool it would be if I could transfer all of my ActionScript kung fu over to the iPhone — I could then get in on the action! But it wasn’t ever a super high priority for me. This was mostly due to the fact that I had, at one point, taken a very intense class in dynamic web development which covered PHP. And by intense I mean intense (at least relative to my own experience).
You see, in PHP, one does have to be wary of memory and resource management and allocation. Variables, functions, operators, arguments, and parameters I can do. But memory management?! Needless to say, I pretty much failed that class. :-( It was a memorable point in my career as a designer/developer where I realized and subsequently decided that when it comes down to it, at my very core, I am a designer first, a developer second (and then only in the service to design), and maybe — just maybe — a programmer. That’s essentially where I drew the line.
So I pretty much came to the conclusion that I just wasn't going to develop for the iPhone period because I didn’t want to invest the time in learning “real” programming. It was too hard. And not to mention boring. So I just gave up, really, and left iPhone development for the real programmers.
But then! Then Adobe made their announcement about the upcoming Flash CS5: the Flash for iPhone compiler! How exciting! Now I could get in on the action that I had previously ruled out! This opened up an entirely new world for me: I started thinking of all the apps I could write using my existing ActionScript kung fu. This got me really pumped and I started to lay out plans for world domination via the App Store.
But then (again)! Apple made the most unforunate announcement regarding section 3.3.1 of the iPhone Developer Program License Agreement:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
And my career in World Domination via the App Store stood in a brief stand-still. I had to decide what I was going to do now.
After reading everything that I could on the subject: analysis, commentary, the official statements from Adobe and Apple, and then letting it sink in both mentally and emotionally, I decided I had just gotten way too emotionally invested at this point to just give up on iPhone development for the second time. Using Flash CS5 was going to be dodgy at best, and learning the native way to do things via Objective-C and the iPhone SDK was going to be my most secure bet at creating apps that would get accepted into the App Store.
I figured I would probably end up having greater control and knowledge over the apps I create, since I’d be using the official, documented APIs rather than private ones that would map themselves to the native API (and re-map themselves after any changes to the APIs by Apple). This may prove beneficial during the testing and debugging process, for example: if, when something’s wonky, I’d have one less thing to worry about, namely, the Flash/ActionScript translation layer standing in-between the interaction and the official API. I would only have the official API to wrestle with.
Of course, the disadvantage would be diving into a much deeper and wider part of programming I’d only previously tried to conquer before (and failed). But this time around, my motivation is stronger, and I feel more excited about it than intimidated. It’s not unlike the first time I ever tried my hand at scripting with Lingo in Director. I remember feeling so befuddled at the concept of a variable: what is it, what does it do, what does it mean to be a “variable”? I am at the same point again, but with things like model-view-controller and pointers and format specifiers. Just a bundle of joy, I tell ya.
And I suspect what some of you may be thinking: that I’ve defected and am now doing exactly what Apple wants me to do. And you’re right: I am doing exactly what Apple wants me to do, namely, learn the iPhone SDK and Objective-C in order to develop for the iPhone! I view it similarly to what I faced when I really, really, really wanted to create my own Flash websites: no longer was animation on the timeline going to be sufficient to do the things I wanted to do. I had to buckle down and learn ActionScript. And so I did — and ended up building my career upon it.
I reckon it will take me anywhere from 3 - 6 months to really grok the essence of Objective-C and the iPhone SDK to be able to know my way around this new jungle, given that I do already have experience with the fundamentals of programming and that I have rudimentary understanding and expierence with object-oriented programming with ActionScript 2.0 and 3.0. Thank God for that, huh?
So in conclusion, Apple, I won’t tell you to go screw yourself. And Adobe, I don’t think that you are a dying dinosaur. I continue in my love for both companies. This is the decision I’ve made and I’m stickin’ with it.
Pressing F5 in OS X While Editing Text invokes Autofill!
(Preface: this post has nothing to do with ActionScript or Flash, but will be of use to Mac users.)
I consider myself to be a fairly advanced Mac power user (a.k.a. nerd), so there’s not a lot that I’m not aware of when it comes to those little tricks that can boost your productivity in oh-so fun ways.
Consider my surprise when I was fleshing out an outline in the venerable and indispensable OmniOutliner, where I was mid-sentence, mid-word and accidentally hit the F5 key:
Autofill! Okay, so it doesn’t work in exactly the most ideal way.... For example, if you continue to type, the autofill widget disappears, rather than narrowing down possible other suggestions for you. But it’s still handy if you can only remember how to spell the first few letters of a word but can’t recall how to spell the rest, or if you’re just plain lazy and want OS X to finish out the rest of a long word for you.
Give it a shot in any Cocoa-based app in OS X! You will be tickled with warmth. ![]()