Warning: Creating default object from empty value in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions.php on line 292
Joeflash’s Enigmacopaedia » Does Flash Need Saving? Nahh…

Joeflash’s Enigmacopaedia


Does Flash Need Saving? Nahh…

Posted in Adobe, Browsers, Flash Platform Community, Apple, iWhatever by Joeflash on the January 31st, 2010

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

Flash isn’t on the iPhone. It isn’t on the iPad, either. And for this, everyone is losing their minds.

Flash haters are coming out of the woodwork proclaiming the death of Flash, eager to feast on the dead flesh of another technological casualty while they bow in fealty to their white shiny god (Apple, dummy! :). Silverlight lovers, usually so vocal against Flash, are conspicuously absent from the debate.

But I think it’s a little premature to announce the demise of Flash. As my estimable colleague Derrick Grigg pointed out, there are so many things that Flash can do that are specialized and unique that no other web technology can do well.

As to the criticisms of the Flash Player: it crashes on OSX, it’s unstable, it’s insecure, it’s a resource hog. All potentially true, on the surface. But like a fixed TV debate subject to concision, 140-character tweets and troll rebuttals cannot give the whole story.

Flash does not work as well as it can on OSX because Apple and Adobe aren’t working well together, for whatever reason. Whether it’s Adobe being lazy in not utilizing Carbon in innovative ways, or Apple will not cooperate with Adobe in helping them develop better integration, I don’t particularly care who’s at fault. And it doesn’t look like it’s going to improve anytime soon. It looks like the two have declared war on that issue.

Runtimes like the Flash Player are more akin to browsers than the language which runs in them. So comparing HTML5 to the Flash Player is like comparing apples and oranges. It would be a more equal comparison if the Flash Player runtime were compared to Firefox, or Chrome, in that the Flash Player is the engine that renders [a SWF file containing] the language. Saying that HTML5 is better than Flash is like saying Javascript is better than Firefox. Huh? Say what?

In many cases, having a binary file which runs in a virtual machine gives it way way way more capability than a language running natively inside a browser. And because it’s a pre-compiled file, it is actually more secure than code running natively in a browser. And this is a good thing: Adobe doesn’t have to wait until five browser manufacturers or some open source plugin decides to seal a security hole, they just issue an update to the player, which is immediately pushed through the Flash plugin’s automatic updates. I’ll tell you, if anti-virus software companies were as quick at issuing updates as Adobe is about issuing new security patches, there would be far fewer virus threats to worry about.

These facts are just so obvious to myself and most Flash developers that it is barely worth mentioning, and its why when a tech pundit in Flash-hater guise brings up these points I just wanna just bitch slap them for being so willfully ignorant.

And if a Flash application is consuming memory at an atrocious rate, nine times out of ten it’s because of bad programming. The other time it’s because Flash is doing something which is truly worthy of being processor-intensive, like playing fullscreen HD video while running Flash in 20 other browser tabs. Adobe is working with device manufacturers, like Microsoft, like NVidia, to improve performance wherever they can. If Apple and Adobe are not working together towards that goal, well, of course performance will suffer.

Google solved this in Chrome by having each tab run in its own process, so if any plugin or browser code for whatever reason crashes, only that tab crashes, and it doesn’t take down the entire app or the OS for that matter. Tell me one good reason why Safari could not be engineered in this manner? No, I didn’t think so.

Saying that Flash running fullscreen HD video while running Flash in 20 other browser tabs should not consume much processor resources is like saying that running Halo on a netbook should run smoothly. The Flash Player should be regarded like an OS-level application. Like you’ve never run an application, under any circumstances, that consumed an inordinate amount of resources? C’mon. I’m not condoning Flash Player memory leaks and bugs that cause crashes, there are a few. But for the most part any developer worth their salt can code around them and optimize an application so that this does not occur.

So I think the blame for those few ill-performing Flash applications can squarely rest on:
a) Adobe for not being as responsive to the community as it could be in fixing runtime issues,
b) Apple for refusing to work with Adobe in facilitating better integration;
c) and dumbass programmers who have no business developing in Flash, because they don’t know how not to code an infinite memory-consumption loop. With power comes responsibility.

But for the most part, I am inclined to agree with my esteemed colleague Ben Clinkinbeard: if there is a Flash app out there that will definitely crash my browser, I’d like to see it.

And let’s clear something else up: the Flash Platform is NOT a closed technology. It’s runtime could be considered “semi-transparent,” in that Tamarin is an open-source version of the ActionScript Virtual Machine (AVM), but the Flash Player licensed to work in all major browsers is opaque. And the Adobe language frameworks are for the most part open source, and the specification for SWF binary files is an open spec, which means anyone can build a compiler to create SWF files.

A language like HTML5 and Javascript may have an open specification or open standards, but so what? That doesn’t give me, a developer any more ability to control how that code runs in a browser than I do about the ability of ActionScript to run in the Flash player, unless I want to crack open the source for Chrome or Firefox and create myself a whole new browser. “Oh but if I wanted to I could.” I see. Funny, I don’t see too many Flash haters on the W3C board, or hacking Chrome’s open source code to make a better browser, or taking the Tamarin open source ActionScript virtual machine to make more secure and transparent Flash experiences. So, flash haters, put your money where your mouth is or STFU.

In most cases I’m all for the “open web,” in that it allows me the developer to monkey around with source code to make my apps do what I want, and language specifications are subject to review by developers. Such is the case for many of Adobe’s frameworks, or a great many open source tools and frameworks offered by the Flash Platform community.

But in the case of the Flash player, its closed nature is a good thing; this very fact that ensures its ubiquity, if for no other reason that people do not have to contend with different versions of the Flash Player out there, which may or may not run a particular site’s content. The very reason I became a Flash developer is so that I would no longer have to bang my head against a wall account for every browser variation so my code would run properly. And that was just for javascript rollovers, back in the day. Do I want to be worrying about whether fullscreen capability will be available in the Flash Player my users will have access to? Not that again.

However, Flash may well be in jeopardy of losing that ubiquity, if the trend continues for the iPhone and iPad to be wildly successful with a large portion of users, and there is every indication that it will. Already it’s been pointed out that Adobe’s “99% market penetration” is only for desktop computers, which as we know is no longer the whole internet-enabled device market.

Flash Platform Developers are pissed, and concerned, and understandably so: if Flash loses its ubiquity, then web developers will start developing with alternate technologies, and the central advantage of Flash over other, more “browser transparent” technologies is lessened.

But there are things that Adobe is doing to staunch the hemorrhaging:

1) CS5 will have the capability to compile Flash apps into native iPhone (and I think) iPad-native code, so Flash apps will still make its way into the iPhone and iPad, just not through the browser.

2) Making aliances with every mobile device manufacturer under the sun to license its new, multi-touch capable Flash Player 10.1, which it is doing with its Open Screen Initiative.

Such as getting Google to license the Flash Player on the Nexus One. When that phone is released, the iPhone with its closed, locked down experience, is going to be looking very unappealing for so many users. And when companies like Lenovo and Asus start releasing their tablet netbooks, which will of course be Flash 10.1-compatible, the iPad with its lack of features and its locked-down architecture is going to look like a pathetic toy in comparison.

But there is one other thing Adobe should be doing.

I don’t think Adobe should create its own browser and enter the browser wars, which I think would be counter-productive.

But it should license the Flash Player to be natively included into Firefox and Chrome, so that ActionScript and MXML code would run natively in the browser. That would shut the open standards pundits up, for one. Second, it will usher in a new age of truly capable web applications. Safari OSX users would just have to switch over to a better browser.

I’ll admit, I do have a vested interest in seeing Flash as a technology succeed, as it literally puts bread on my table, since developing RIA apps in Flash and Flex is all I do for a living. And if I really thought Flash was in jeopardy, you can be certain I’d be learning C# for Silverlight development, or HTML5, or JavaScript even, because I’m not afraid of change. In the 12 years of my career as a digital craftsman, I’ve been a graphic designer, a web designer, an HTML/JS/PHP developer, a Flash animator, a Director programmer, a Flash programmer, and an ActionScript/Flex developer. If I then have to go back to JavaScript & HTML, or learn C# to deliver the same experiences, sure whatever.

But I won’t be running around like chicken little relearning everything I spent the last ten years doing because the Flash Player no longer has 99% market share of all internet-capable devices. I can live with 98%.

And my feeling is, so can everyone else.

9 Responses to 'Does Flash Need Saving? Nahh…'

Subscribe to comments with RSS or TrackBack to 'Does Flash Need Saving? Nahh…'.

  1. John said,

    on January 31st, 2010 at 8:01 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    “dumbass programmers who have no business developing in Flash, because they don’t know how not to code an infinite memory-consumption loop. With power comes responsibility.”

    While I agree to part of this, Adobe brought AS3 to Flash CS3, didn’t upgrade the code editor, no profiling tools, and, in my opinion, did a bad job educating on AS3. When AS3 does get used, we find tons of uncaught runtime errors. Yes.. responsibility is needed, but on both sides. Adobe gave the average Flash designer/developer a gun, pointed it toward their foot, and said, don’t shoot it.

    And yes, I’m an AS3 developer and can built a SWF to crash your browser very easily.

  2. Joeflash said,

    on January 31st, 2010 at 9:11 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    You’re right; Adobe did take it’s sweet time improving the tools to code AS3 applications, which is only just now being rectified with the Flash CS5/Flash Builder combo, and that they left it largely up to the community to ease developers into the transition to AS3, you will get absolutely no argument from me. That it took over three years for Adobe to include global runtime exception handling in Flash (currently in 10.1 beta 2) is deplorable, and they deserve harsh criticism for it.

    But runtime exception errors (which rarely crash the browser, BTW) is not what I was referring to. Coding an application which crashes a browser, which usually occurs through poor memory management, is quite simply irresponsible because it can be prevented. There are exceptions of course, and that’s where the fault lies with Adobe and Apple.

  3. John said,

    on January 31st, 2010 at 10:29 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    Fully agree that poor memory management can be prevented, but many times there is inadequate instruction on how to do that. Things like object pools, disposing of objects, and simply remembering to remove event listeners seems to be listed as “advanced” topics, when it should be talked about first. I can’t remember the last time I read an article on the DevNet that showed cleanup skills. This is particularly harmful because a lot of these designers come from AS2 where these practices were un-necessary for the regular work.

    They need to develop an overly aggressive garbage collector just for newbies.

  4. Joeflash said,

    on February 1st, 2010 at 12:34 am


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    To some extent, memory management has always been a a part of creating good Flash applications. And Adobe Devnet is not the only source of Flash memory management info, it’s out there:

    http://livedocs.adobe.com/flex/3/html/help.html?content=10_Lists_of_data_4.html#121376
    http://blogs.adobe.com/aharui/2007/03/garbage_collection_and_memory.html
    http://tv.adobe.com/search/?q=memory%20leaks

    “They need to develop an overly aggressive garbage collector just for newbies.”

    LOL, it’s called AVM1/AS2… :)

  5. Glenn Williams said,

    on February 1st, 2010 at 5:38 am


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    “A language like HTML5 and Javascript may have an open specification or open standards, but so what? That doesn’t give me, a developer any more ability to control how that code runs in a browser than I do about the ability of ActionScript to run in the Flash player, unless I want to crack open the source for Chrome or Firefox and create myself a whole new browser”

    Thank you for that, I’ve been trying to drill that into peoples heads for ages.

    As to the Apple question. Oh how Apple are driving me nuts these days. I have been an apple user. Back when Adobe Photoshop was better IMHO on mac than pc. It’s almost as if Jobs has forgotten who his friend’s are/where. I often wonder where Apple would be today if not for Adobe. Ultimately software sells hardware. How many Mac users cam to that platform originally because of Adobe, ok Im not saying all, and Im not saying Mac hasn’t got merits. I just wonder if the user base would have been quite the same with out Adobe products.

    We all know his reason for not adopting FlashPlayer on iPhone, are 1, the hardware wasn’t exactly great. 2, and the real reason, wanting to keep as much revenue as possible under Apple control. It comes to something when Apple seem to be more closed, controlling and megalomaniacal the microsoft.

    I totally agree with you on another point too. Im a flex developer for the last few years, but Im a flex developer only because at the moment it best offers what I need. I’ve been developing software for over 25 years now; I’ve forgotten more languages and platforms than I like to admit. I’ve used whatever fitted the task at the time. No loyalty at all, none. If something new and better and more suitable to my clients needs comes along, thats where I’ll be. I’m confident right now, with my 25 years of platform hoping and future trend experience working full out as always, that I’ll be using Flash for a long time yet.

    Glenn Williams
    www.tinylion.co.uk

  6. Tink said,

    on February 1st, 2010 at 9:15 am


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    “This is particularly harmful because a lot of these designers come from AS2 where these practices were un-necessary for the regular work.”

    You know what those designers should do? Design.

    I wouldn’t take my broken computer to a car mechanic, so why would you expect a designer to develop?

    Designers design stuff, developers develop stuff.

    “And yes, I’m an AS3 developer and can built a SWF to crash your browser very easily.”

    Can you post this easy code so that we can at least fwd it to Adobe and it can be addressed.

  7. Joeflash said,

    on February 1st, 2010 at 2:28 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    I’ll second that. I’ve yet to see a Flash application that can, on command, crash Flash Player 10. That’s crash, not trigger a runtime exception error. So if you have one John, please log a bug at https://bugs.adobe.com/jira/secure/Dashboard.jspa and send it to Adobe so they can fix it.

  8. Ali Nakipoglu said,

    on February 1st, 2010 at 2:33 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    Hi,

    Nice post. I want to comment about Flash Player,

    There are many reasons that makes people angry, for me, as a developer, i cant find a fast way of sorting numbers, there is no way of using non-container (unlike any interactive object in Flash, they are all containers) interactive display elements because lack off system design, very poor Pixel Bender integration, many Types are implemented in high level in ActionScript, to build some thing fast and optimized you need to work like a mad programmer to track every leak (no way of utilizing custom memory management), yo dont have low level access to memory that in SANDBOX, no compiler optimization, no inline functions (I don’t understand why LLVM can and mxmlc not), no Z-Buffer, and so on.

    I know they are all very specific but hey im talking as a developer. These are huge problems of Flash Player Development (i couldn’t remember all very sorry)

    Every one can create a content without knowledge of programming. Say a banner, i never heard some body optimizing it. Usually you can find dozens of them in single tab. What Adobe suggesting is decreasing frame rate to 5 :S when no body using it. How do i know that. How do a designer or animator know that?

    From a user perspective, i believe they really have problems… These are peoples who don’t even know how to install an application or remove it. I say, go and learn little bit about computer.

    Im sorry for my bad english.

    Again thank you for sharing.

    Ali.

  9. Joeflash said,

    on February 1st, 2010 at 3:40 pm


    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 161

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-content/plugins/codecolorer/codecolorer.php on line 162

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /nfs/c01/h02/mnt/36638/domains/joeflash.ca/html/blog/wp-includes/functions-formatting.php on line 76

    Most of these issues can be solved. You just have to dig.

    But the purpose of this post was not to infer that the Flash runtime does not have its warts: it does. Just that it does not need “saving” because some I-wanna-be-a-real-computer-when-I-grow-up supposedly threatens to unseat it as a ubiquitous rich content delivery platform.

Leave a Reply