Speaking at Flashbelt

While I was at Flash on the Beach back in December, I met Dave and didn’t even realize he was the dave from Pilotvibe and the organizer of Flashbelt. Schematic sent a few people up there last year to give presentations, and they all said it was fantastic, so I was very excited when Dave invited me to speak at this year’s conference.

I’ll be giving a talk called Progressive Enhancement with Flash that will cover stuff like:

  • Using SWFObject (maybe SWFFix by then) to embed Flash content
  • Using progressive enhancement to allow search engines to properly index your content and increase SEO for Flash websites
  • Flash content vs. Flash style, and how to treat them differently
  • Deep linking and back button support in Flash

And a few other areas. I should also be able to talk about SWFFix a bit (hopefully it will be fully released by then, but who knows).

Go check out the Flashbelt page for more info. I can’t give you a direct link to my session, but it’s listed there in the session list. Hopefully I’ll see some of you there!

Announcing the SWFFix project

SWFFix is a new joint project from myself and Bobby van der Sluis. The project’s goal is to replace SWFObject and UFO with a single method that is (hopefully) more standards compliant and doesn’t rely entirely on Javascript.

We’ve put up a dev blog on the site, and will be asking for help and feedback throughout the development cycle, so head over and watch the blog for updates in the coming weeks.

Bobby also has a great A List Apart article out today that talks about the problems with current Flash embed techniques.

Using progressive enhancement with Flash

There’s a fantastic article on Adobe’s devnet site that Bobby wrote (he’s the guy who wrote SWFObject’s biggest competition, UFO*). All about progressive enhancement with Flash. It includes helping your Flash content get picked up by search engines, supporting people without the Flash player, and a ton of other good info. Go have a read.

* But hey, it’s not really a competition, use whatever works best for you.

What’s the haps, chaps?

No good nerd info in this post, just wanted to brag give an update as to what I’m up to the next few weeks/months.

Today is the start of a new semester at Cooper, which means a new XHTML + Flash class! Next week I’m off to Austin for Flash Forward, where I’ll give a presentation about SWFObject and general Flash embedding. If you are going, feel free to stop and say ‘hi.’ If you can’t make it to Flash Forward, I’ll be heading to the UK in December for Flash on the Beach, where I’ll be giving another presentation, this one will be geared more towards Flash and Web 2.0 stuff living in harmony (Yes! It’s possible!).

Also: “The most influential Flash site of the decade” uses SWFObject (FlashObject actually, but same thing).

Also (again): The 5th edition of Javascript: The definitive guide is out. I got a copy yesterday from O’reilly (I did a tech review of one of the chapters a while back) and I must say that it’s fantastic. The 4th edition of the book was great, and is one of the only books that has a permanant spot on my desk, so this is a very welcome update.

That’s about it. What’s new with you?

On embedding Flash content using Web Standards (yes, again)

Lately there’s been a bit of buzz around embedding plugins while adhering to Web Standards™. First this ALA article came out and said “bye bye embed”, then yesterday one of the WaSP nerds posted something about “Valid Flash, video and audio embed (object) markup”.

It’s understandable to want to try and force browsers to display your plugin content in a way that adheres to “Web Standards”. It’s a very popular subject, and it’s been covered a few times before. These two recent articles don’t uncover anything new, other than bringing to light (via the comments on them) that Javascript is the only viable method of embedding Flash (and other plugin based) content on the web today.

Now I’m going to say something here that might seem a little controversial, but I really want to get the point across, so I’m going to use some ‘shock and awe’ tactics:

Using only the object tag to embed your plugin content (especially Flash content) is fucking stupid.

There. I said it.

You may say that I’m a bit biased because I wrote some fancy pants Javascript Flash embed script. Maybe I have a hidden agenda of world domination based on plugin detection. So while I no doubt would like to dominate the world, let me say that my reasons for advocating the use of Javascript are much more mundane.

This post was originally going to be titled “Flash Satay considered harmful,” and since the main topic are these “Web Standards” compliant ways of only using the object tag to embed plugin content, I’ll focus on the issues with doing so:

  • “Click to activate” in IE. The only way to get around this is to use Javacript.
  • No plugin detection. While Ben says ‘meh’ to this, it’s a very important aspect of the user experience. If I have Flash Player 6 installed, and I visit a site that uses Flash 9 content, my player will go ahead and try to play that swf anyway. I could end up seeing half of the content, or broken content, or who knows what. Do you really want to show your users broken content?
  • Issues in older Safari versions: Safari pre 1.2 will completely ignore param tags, which are often used to pass information to the plugin. This means broken content for your users.
  • Support for the object tag varies widely from browser to browser. Do you think that just because you work around all the quirks in the 3 main browsers today, it will still work when the next new browser is released?
  • A bug in Flash Player 9 can cause the browser to crash if you have more than one swf on the page and are using ExternalInterface to communicate with Javacsript. While this isn’t specifically related to how the swf is embedded, SWFObject does include a fix for this issue.
  • Using Flash Satay or other ‘object only’ methods will not stream your Flash movies to the user – this means extra work for you in creating a ‘loader’ swf
  • JAWS will ignore it.

It’s a pretty long list, right? Now if you compare that to the user experience when using SWFObject (or other Javascript based techniques), you can see a noticable difference:

  • The only time a user doesn’t see Flash is if they have Javascript turned off, or they don’t have the required version of the Flash Plugin. This one is a two parter: One, do you think that people really turn off Javascript but leave Flash on? Consider the type of person who turns Javascript off. They are probably the über nerd user who considers anything that isn’t text to be completely evil. They browse the web using Lynx. They probably stay a mile away from the Flash Plugin anyway. The beauty of the way SWFObject works is that even these people get content if you set it up right. Since you put alternate content ‘under’ your swf, they will just see the alternate content. As long as you set it up right (you do, don’t you?) they may never even know they are missing out on Flash content.
  • They don’t have to click your movie once to ‘activate’ it
  • Their browser doesn’t crash just because you had two swfs on the same page that use ExternalInterface
  • They only see Flash content if their browser and plugin support it.

Taking all of the above into account, the choice is very clear: Javascript wins hands down. Any questions?

Now that all of that is taken care of, I wanted to address a couple of things:

First, these types of posts are not good for the Web Standards community. Basically what’s happening is highly visible people (even if they aren’t that well known, they still carry the WaSP name, or have articles on well respected online publications like A List Apart) are posting information that is bad for your users. Even worse is that they are doing it in the name of “Web Standards” and not taking into consideration any of the other options outside of pure HTML. This is extremely bad for the Web Standards movement. It makes the standards advocates look like crazed zealots who don’t care about user experience, but only care about adhering to the written rules exactly how they are stated even if it hurts them.

Second, you may be saying “well, if I can’t use the object tag, then what good is it?” and that is a FANTASTIC question. What good is it? Beats me, because the object tag is completely and utterly broken in nearly every web browser out there. Want to do something about it? Maybe you could join WaSP and create a task force to fix how browsers handle plugins?

UPDATE: I added this as a comment below, but wanted to put it in the main post as well: I want to say that as for Flash Satay: It was fantasic for the people who use(d) it, and in it’s time it was great. But now that certain big issues with it have been discovered, and Flash has changed over time, it’s time for it to retire. This is something I’ve been meaning to mention for a while, and it was sort of implied on the SWFObject page. So, since we are on the subject, it’s time to give it up.

UPDATE (8-17-2006): Ben has posted a follow up.