follow me on twitter

hello world


hello world


hello world


hello world

Flash for iPhone was a gamble that Adobe lost

The tech blogosphere is abuzz at the moment over Apples move to limit the methods in which you're allowed to develop iPhone and iPad applications. The new version of the Developer Program License Agreement, released last week, expands on rules banning private APIs to extend to the banning of cross compiled code. The modification to section 3.3.1 of the License Agreement now results in the following:

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)

This means that all future applications for the iPhone and iPad may only be authored using one of the allowed languages, primarily Objective-C, the native language of the Mac and iPhone platforms. The previous version of section 3.3.1 stated that you may only use Documented APIs; non private APIs.

Back in October of 2009, in Los Angeles at their annual conference, Adobe announced at a brand new flagship feature for Flash CS5 - the ability to export Flash authored applications for iPhone.

The Adobe community had been anticipating news about Flash and iPhone compatibility for well over a year, and Adobe finally delivered. It was certainly not the news most had been waiting for (the ability to view browser based Flash content) but it was just as fantastic; the empowerment to take Flash authored content and sell it as an App on the iTunes store for iPhone.

I was in attendance when this feature was announced on stage at the Nokia Theatre @ L.A. LIVE. The community were in rapture over the announcement by Adobe. The iPhone was a key theme for the whole conference, in-fact on the second day, it was used as a stage prop throughout the general session. Adobe were very proud to be able to show that they had already been able to publish Flash Apps to the iTunes store and it was just a matter of time before everyone else could.

What amazed me during the conference was the way they'd been able to dodge around the Flash in the browser issue by creating this distraction. If they were able to ship cross compiling Flash Apps, why couldn't they get the Flash Player for the iPhone's browser. I believe the answer is still quite simple - because Apple will not allow it.

So if Apple, to this day, still blocks Adobe from shipping Flash Player for the iPhone browser, what are the chances that Apple will allow for Flash authored apps in the App Store. This was one of my first questions to people back in October - nobody had a concrete answer. In order for Flash Apps for the iPhone to be a reality, you first need to have a long lasting agreement with Apple - apparently Adobe didn't.

You'd of thought that for Adobe to standup in front of it's entire user community and promise breakthrough feature X, that they would have done so without risk. It would be absurd to promise a feature on a gamble, right? But this is exactly what Adobe did, they knew exporting Flash Apps for iPhone was a gamble, they knew Apple could block the Apps at anytime, but they went with it anyway and lost.

I'd of thought that Adobe would be bearing some of the blame for this, but it seems that most of the community is going after Apple. This is fair to an extent; they don't exactly have the best history in this area. But I do slightly understand why Apple takes these steps; I'm not a fan of platform segmentation either. It seems that Apple wants to be able to control the flow of the developer in order to maintain a certain platform standard/normality.

I think the blame for this should be spread much more evenly between Adobe and Apple. They are both as arrogant as each other. But if I were to side with anyone, I'd put the majority of the blame on Adobe for rallying up its userbase with hype and anticipation about a feature that was filled with risk and uncertainty.

Posted Mon Apr 12 2010 17:01:50 | 552 Comments | Post a Comment

What would an open Flash look like?

The Flash platform today has several open source elements, but the part that remains closed is the player implementation. The player is the part of Flash that holds the features; it loads bitmaps and data, rasterizes vectors and text, composites elements on screen and dispatches timers and input events. Things such as the SWF (flash file format), RTMP, FLV/F4V, AMF, and MCD specs and (ActionScript) virtual machine are already open, but without an open-sourced player, these offerings fall flat.

The argument is that given enough open spec, a company or group could build their own player implementation. While this is true, it's questionable that this logic would be workable in the real world. And while this thinking works for HTML, maintaining multiple variants of Flash while keeping compatibility at a maximum, all while following Adobes closed feature lead and developer tool-chain timelines would be excruciating.

Most people will agree that a multi implementation approach is an awful way to take Flash open; HTML continues to suffer because of this. If we have to have an open Flash, the only people who can make this happen are Adobe. A master implementation would allow for fast feature development and compatibility standard that Flash maintains today while allowing the community and vendors to port and contribute to the platform.

If Flash became open and was still a relevant technology, I can picture a day when Flash is no longer a browser plug-in, but something that is actually part of the HTML spec. I could easily see the canvas tag being used as a Flash context, much in the same way canvas is being used to display WebGL and SVG. You could even have plain-text ActionScript sitting in script tags. Now I'm not proposing that we expose the IP of the world, SWF files will always have to be supported. I'm just trying to paint a picture where Flash can be lightweight inside the browser, because if it's not Flash it'll be something else.

Adobe today is the bottleneck of Flash's future. As computer platforms become more varied, needs become different and wider, Flash will fall behind. If Adobe is to hold onto Flash's relevance, they need to let other people in.

Posted Mon Feb 08 2010 12:37:59 | 134 Comments | Post a Comment

Flash 11 should be a switch to JavaScript

Flash 11 should be a switch to JavaScript

Let's press the reset button and drop ActionScript. It hold no relevance or advantage in todays world.

Over the past few months I've been working closely with JavaScript in different environments outside of the HTML DOM. Two of those being on the server side - Node.js and CouchDB. The other being an experimental front-end, RIA like platform. And what I've concluded over these past few months is that I really like using JavaScript - I'm genuinely surprised!

It was only a few years ago when I finally rid myself of ActionScript 2 and I was ecstatic about that. The ActionScript 3 way of doing things seemed to make a lot of sense to me and I've since written tens of thousands of lines of the strictly typed, compiler checked goddess. But is she a false idol.

At present, Adobe is recruiting people to the Flash platform via the new child, Flex. Up until people started throwing around the term RIA, the Flash user base was primarily made up of creatives & devigners who made some pretty amazing websites (lets forget about skip-intros for now) with what they had. Now the Flash base is increasing filling up with Java and C# types who expect a certain level of features, complexity and checks - Adobe continues to encourage it and the old base seems to be increasingly disillusioned.

The overwhelming message is that ActionScript 3 is necessary and better than all it's predecessors. Now a big part of me believes this, in-fact I'd say it was pretty accurate. But I can't help but feel that it's hurting the essence of the platform and the web in general. It's almost as if ActionScript (and some of it's base) has a kind of inferiority complex and must be more like its mature peers in-order to be accepted. In-fact the power of ActionScript (and some of it's base) was always in it's simplicity - "less is more" so they say. And this is exactly what I've found out over the past few months with JavaScript.

The expressive power of JavaScript is wonderful. And so is the expressive power of AS3 once you take away the strict typing, package name-spacing, verbose eventing and the classical-OO pretense because you're left with the stuff you care about, the stuff that actually gets things done. More importantly you're left with something that looks just like JavaScript, no surprises there seen as they are ECMAScript cousins. Well maybe you could say AS3 is the bastard child now that ECMAScript 4 has been abandoned (- I think this post can stand without doing into depth on this subject).

But isn't the big benefit of ActionScript 3 with strict typing the speed? - surly this is key to Flash success. This statement is utterly incorrect. First and foremost, the majority of Flash's execution lies in the rendering of the stage. If AS3 is only doing [box.x+=1] then render is doing a hell of a lot more updating pixels on the screen. It is OK if your AS3 code is convoluted because the renderer will always be your bottleneck. The other mis-conception is that strict-typing improves execution speed. The evidence is probably running right in your face: most modern browser JavaScript engines are in-fact faster than Tamerin (the AS3 virtual machine). Additionally, Joa Ebert has really thrown egg on Adobes face this past year by showing the community just how unoptimized the AS3 compiler is.

So what was good about the introduction of ActionScript 3. Well, for me I think the bigger issue was at the API level. I think people enjoy AS3 over AS1 and AS2 because of a cleaner API into the platform and the finer-grain/cleaner control you get over the display-list. If you were to put put ActionScript 3 into the browser as a JavaScript replacement, you'd still end up with the problems of having to work with the awful HTML DOM. The language in Flash was never the issue.

Adobe Flash is increasingly being squeezed by it's competitors who all want a bite from the RIA apple. Adobe can no longer afford to ship a niche language. Especially if they expect to draw in fresh blood into platform. A move to JavaScript (ECMAScript 5) would seem like the sensible option for the future of Flash. A grander alternative option would be a .NET type approach, enable many commonly used scripting languages (JS, Python, Ruby, Lua, etc) to becoming first class Flash languages, but maybe that's too over the top. Simply moving to JavaScript will bring renewed expressiveness to the platform and once again it'll be approachable by new talent, who at the end of the day, will make or break a platform.

I'll end this with an example of expressiveness. Both these snippiest do the same thing: load an external JPEG and add it to the stage once loaded. I understand that you could encapsulate the JavaScript approach in AS3 - The point is that you shouldn't have to.

EDIT: People have commented heavily about the following snippets. Please don't take them as the overriding message of this article. The main message of this article is about AS3 being a niche language with too many constraints - JS could easily take it's place.

EDIT2: I've started an open source project called $flash, hosted github, with the aim of creating a whole AS3 lib based on the JavaScript snip below.


// JavaScript

flash.load("lolcat.jpg", {
success: function(bitmap) {
gallery.addChild(bitmap);
},
error: function(msg) {
trace("no lolcats found");
}
});


// ActionScript 3

import flash.events.IOErrorEvent;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;

var url:URLRequest = new URLRequest("lolcat.jpg")
var loader:Loader = new Loader()
addListeners();
loader.load(url);

private function addListeners():void {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeEvent)
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function removeListeners():void {
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeEvent)
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}

private function completeEvent(event:Event):void {
removeListeners();
gallery.addChild(loader);
}
private function ioErrorHandler(event:IOErrorEvent):void {
removeListeners();
trace("no lolcats found");
}



Posted Sun Jan 10 2010 15:10:15 | 366 Comments | Post a Comment

Win an Adobe MAX '09 Pass

I've been given the opportunity to gift a full Adobe MAX 2009 (L.A) conference pass.

I've got to give it away by the end of Friday evening (PDT). So, I'm going to use a simple "random name out of a hat" technique with the help of twitter.

How to enter:

1) Be a member of twitter
2) Be following me on twitter: abustin
3) Tweet this exact message: I want to win your #adobemax pass @abustin -http://tinyurl.com/winmaxpass


I'll announce the winner live on twitter tomorrow (Friday).

Posted Thu Oct 01 2009 19:16:43 | 19 Comments | Post a Comment

24 Predictions for Adobe MAX 2009



  • Flash Player for iPhone (announcement/demo)
    Prediction Rating: B+


  • Mobile Flash Player, Mobile AIR & SDK tools (labs release for Android, Symbian and Win Mobile)
    Prediction Rating: A+


  • Adobe AIR 2.0
    Prediction Rating: A+


  • Flex Mobile Components
    Prediction Rating: B


  • AS3 multi-touch API
    Prediction Rating: A+


  • Simple AS3 Callbacks API. (The stuff some people miss from AS2)
    Prediction Rating: D


  • New supported Flash video codecs (eg. Theora)
    Prediction Rating: D


  • AS3 Threading API
    Prediction Rating: C


  • Flash Catalyst is being rewritten to be useful
    Prediction Rating: F


  • Flash executes Pixel Bender shaders on the GPU
    Prediction Rating: B+


  • All the old built-in bitmap filters have been upgraded to use Pixel Bender
    Prediction Rating: C


  • Flash Player GPU accelerated rendering
    Prediction Rating: B+


  • Flash Player GPU accelerated video decoding
    Prediction Rating: A


  • AS3 OpenGL ES bindings that draw to pixel buffers (bitmaps)
    Prediction Rating: B


  • Additional AS3 P2P APIs. Maybe to aid in creating MMO games.
    Prediction Rating: C


  • ActionScript 3.5 (generics, method overloading, Lambda expressions, Generators, Object initializers, operator overloading, etc)
    Prediction Rating: D


  • The introduction of coding Flash in other/new languages. This might also include new micro-formats for the timeline.
    Prediction Rating: F


  • Flash Professional will be renamed to Flash Animator. The Flash platform tools will be sold in a package named Flash ABC (Animator-Builder-Catalyst).
    Prediction Rating: D


  • Flash Player in the Cloud; Thin HTML5 client.
    Prediction Rating: F


  • AIR versions of Acrobat.com apps such as Buzzword
    Prediction Rating: C


  • Brand New HTML5 IDE for creating Flash like experiences.
    Prediction Rating: C


  • Stereoscopic 3D DisplayList projection filter in Flash
    Prediction Rating: F


  • Ability to create and distribute new Tools for Flash Professional (why did we have to wait for IK and the deco tools)
    Prediction Rating: D


  • The Flash community will lose Phillip Kerman to Hollywood
    Prediction Rating: bingo!






What are your wild predictions?

Posted Mon Sep 28 2009 07:44:53 | 27 Comments | Post a Comment

Coming Soon