Meanwhile, back at Adobe Labs

Prezi exposes Flash's rotten core
Prezi exposes Flash’s rotten core

A colleague recently showed off a slide presentation created using, a Flash-based slideshow program. (The home page of this site is atrocious, which is not a good sign, but I think the idea is actually better than you might guess from the home page.) The basic idea of Prezi is really simple and neat — instead of slides you simply build a giant poster and each slide is simply a subview of this giant poster. The thing that struck me about this is that:

  1. It’s very clever and simple,
  2. I don’t think it will be useful for most presenters who have enough trouble putting together interesting slides as things are, and
  3. It doesn’t work very well (basically, the second slideshow I tried out was a speaker’s package for TED presenters (not that I am or ever will be one) and the frame rate dropped to something like 2fps while performing a simple transition in a small rectangle on my screen — on my late model Dell desktop).

And the reason it doesn’t work very well is Flash.

To be fair, the slideshow that first annoyed me was heavy with bitmaps, so I tried out some really simple slideshows and discovered that it is fully capable of choking on a pretty much empty page (my guess is Flash is really bad at culling — which is a technical term meaning “figuring out what isn’t visible and not wasting time on it”) and surprisingly bad at rendering text (quite a few “prezis” seem to have text so badly misrendered as to be illegible).

The problem with Flash isn’t that it’s not optimized for Macs.

The problem with Flash is that it’s just not very good.

Would all this work better in HTML5? Not without a lot of clever programming. And producing something like Prezi in HTML5 would be a lot more work than doing so in Flash. The problem is that Flash is a “mature” product — it’s been through four scripting languages, multiple virtual machines, and over 10 versions of the IDE (I can’t remember what version FutureSplash Animator was at when it was acquired by Macromedia). Normally, maturity means that a product will have all this deep functionality, but Flash’s utility basically boils down to “it makes it easy to create custom video players”.

If you want a really tragic example, go to Adobe’s online store (yeah, it’s one of those sites that requires you to tell it where you are rather than automatically guessing and letting you override it if it guesses wrong). For some reason, Adobe has chosen to implement its store entirely in Flash instead of, say, HTML. As a result, it looks a lot like a web page but everything works much worse. For example, on Macs mouse-scrolling isn’t supported. On Windows it’s supported but it’s jerky and annoying (versus smooth-as-silk for most web pages of similar complexity in any browser on the same hardware). But hey, it’s only been 15 years and 10 (.1) versions — we’ll get to it.

Basically, if you’re using Flash to display thumbnails, captions, and a few UI widgets it works OK.

Thanks to bad press from Steve Jobs, Adobe suddenly got the performance religion with Flash Player 10.1, which it’s now touting all over the place, but the sad thing is that Flash still doesn’t do anything smart when simply drawing stuff on the screen — and that’s its core functionality — it also implements a whole library of UI widgets that don’t work properly, and it has an IDE which has an absolutely infuriating UI* and still screws up common tasks like importing graphics (from both Illustrator and Photoshop).

That said, Photoshop CS5 looks like being totally awesome.

* e.g. some panels won’t dock as tabs to other panels but need to be on their own, the code view of an external ActionScript file doesn’t go in Action panel where internal code goes so if you want your code in nice large panels you need to constantly futz with the UI, the online help is now on Adobe’s website which by default does not search through Flash’s ActionScript documentation and also, by default, shows links to random outside websites rather than Adobe’s official documentation (you’re pretty much better off using Google to find docs or online help for Adobe products these days).

  • I’ve actually been doing a bit of Flash development lately (side note: I like ActionScript 3, but I wish I hadn’t had to learn ActionScript 1 and 2 first) — yes, I hate it from a position of knowledge — and I’m pretty stunned by how primeval the video component remains.

    Just for example, there’s no way to set video playback speed (e.g. for slow motion, cue and review, or interactive scrubbing). I can understand not wanting to do it in many cases but hey this is a QuickTime 1.0 (i.e. 1991) feature.