Saviour.

Steve Jobs did an interview session after the Apple keynote last week where he covered, amongst other things, his attitude to Google and Adobe Flash. The man didn’t mince with words, branding Adobe as “lazy” and Google’s “don’t be evil” mantra as “bullshit”. I have a lot of respect for him, but I must admit to being disappointed with his comments.

Apple’s enmity with Google is somewhat understandable, what with Apple firing Eric Schmidt from their board of directors due to conflicts of interest, and Google entering the smartphone market with the Android OS. But their problem with Adobe is considerably more unfathomable – it can be argued that Adobe saved Apple when they were at their lowest ebb.

Adobe was Apple’s saviour for many years. Historically, many people bought Macs because it was the better platform for using Photoshop and Illustator, and the Mac became known as a “designer’s computer” because of it. These are the people who still bought Macs during their struggling, Jobs-less years in the mid-90s, and when the man himself made a comeback and announced the iMac, Power Mac and Powerbook ranges, they were the first in line to buy them. Apple obviously tries to occupy the “good for everything” space these days, but they can’t be biting the hand that feeds them – many current Mac users are long-time platform loyalists, brought to the platform because of the superior Adobe application experience. And since Adobe’s acquisition of Macromedia, Flash has joined the fray – almost every Flash designer and developer I know works on a Mac, again for the superior user experience.

Flash occupies a unique space in the fabric of the Web – a proprietary, third-party plug-in that has almost universal penetration. Adobe claims 97% penetration amongst Web users, and, from what I can tell, they’re not lying. Sure, many people deride Flash for allowing people to design horribly bloated animations, clunky user experiences and valueless “eye candy”, but for every one of these, there’s a YouTube, Google Maps (street view) or Hulu – sites that make full use of Flash as an enhancement to the user experience. Much of what these sites do simply cannot be done any other way. It’s not a bad platform, it’s just that some bad designers and programmers have taken advantage of it, just like every other platform. HTML5 may be the future, but until it allows you to do all the things you can do with Flash, and do them in a user-friendly fashion that doesn’t require someone building a simple Web animation to be a Javascript guru, and until it gets mainstream support from Microsoft in Internet Explorer, it’s still going to be some time before it can take up Flash’s mantle as the preferred rich media technology on the Web. And, looking towards the future, some of the things that have been done in the augmented reality space in Flash, as well as in the realm of 3D, cannot be replicated with any other online technology.

Since its introduction as FutureSplash Animator in 1995, Flash has come along in leaps and bounds as a technology platform. Initially just an animation platform intended to replace the venerable animated GIF, it has evolved to have its own powerful programming and scripting language in ActionScript, hugely powerful animation support, incorporating elements such as inverse kinematics and physics, and simple and powerful video support that powers almost all video on the Web. Also, its abilities as a platform for rich internet applications are unrivalled – just check out any car manufacturer’s website (specifically, their “car configurators”) to see what can be done with it. What’s more, it does all this in a platform-agnostic fashion, meaning any site you build with Flash will render identically across all platforms, bypassing all browser compatability issues. There’s also the fact that it can be used to develop and deploy platform-agnostic desktop applications using Adobe AIR – this is the technology that powers the likes of TweetDeck.

Yes, I am a Flash apologist (not to mention a Macromedia Certified Flash Developer). I think it’s a great technology, and, what’s more, I think it’s the best route into a career in programming for young people. When I was a spotty, nerdy 10-year-old, I learned to program using BASIC on my Sinclair Spectrum. It was right there on the computer, enabled me to do “cool” things (well, “cool” being relative – this was 1982) and gave me a good grounding for the career I now enjoy. Computers these days don’t come with built-in programming languages, let alone anything that enables you to do something relatively “cool” with not too much work. For the most part, nowadays, if you want to learn to program a computer, you have to go to college. You could always install Visual Studio on your PC, or Xcode on your Mac, but you’d quickly learn that it takes many lines of code just to open a window and display, “hello world”. Plus, you have to worry about compiling, linking, dependencies, stack pointers and all those kinds of things. So, as a 13-year-old who likes computers and thinks they might like to do something a bit more ambitious than playing video games and going on MySpace, what do you do? You quit the application and fire up World Of Warcraft instead, because it’s more fun and doesn’t have a stupidly huge learning curve. Plus, in this increasingly social online world we live in, a window showing “hello world” isn’t exactly something you’d want to share with your friends. How about a technology that enables you to do fun animations with easy interactivity, all without doing loads of hard coding, then being able to output it in a format you can embed right on your MySpace page? And, if you do want to get cleverer, you’ll be using ActionScript, a programming language that, being an ECMAscript-based language, gives you the much of the knowledge you’d need to program in all the commercially desirable languages (C++, Java, Javascript, etc), and which is also a career path in itself.

As far as Apple supporting Flash on their mobile devices, Adobe, on the surface, seems a bit stuck for options, since I’d imagine asking Apple to incorporate the Flash Player is like banging your head against a brick wall. However, there has been some progress – a very clever chap called Tobias Schneider has written Gordon – a version of the Flash runtime ported to Javascript, thus enabling a very limited degree of Flash support. It’s slow, it’s missing quite a few features, but it works. Safari 4 (including Mobile Safari, the iPhone and iPad browser) and Google Chrome have made huge advances in the processing speed of Javascript recently, so I think Adobe’s tactic should be to provide a feature-complete version of the Flash Player implemented in Javascript, therefore bypassing the whole plug-in architecture entirely. Mr. Schneider’s work might not be feature-complete, but it’s a very good proof-of-concept. In technical terms, you could have some sniffer code that detects if a browser is HTML5-capable, then sets up a custom <canvas> tag and interprets and displays the Flash content in there. Maybe something to put into Flash CS5, Adobe?

People, including the eminent Mr Jobs, should stop fighting Flash. In fact, I think Adobe should make deals with Microsoft and Apple to provide a version of the Flash IDE on all new computers. You may deride it, but the Web would be a much more boring place without Flash. You wouldn’t have YouTube, Hulu and FarmVille, for a start.

Text tagged as: flash apple ipad prigramming