Archive for September, 2005

Big Flash

Some nice additions to the big names making serious use of what flash can offer lately.

The most impressive that been blogged a lot about already is the IKEA matrix kitchen.
Clever and skill full piece of work that really uses the internet as a media in an efficient and inventive way.

The even bigger news that even more people blogged about is Googles adaptation to using Flash to deliver video.
It seems like a surprise to many people since it somehow seemed like they have an aversion to Flash considering the efforts they made building AJAX contents.
Maintaining separate versions for different browsers to get your RIA applications working I guess is something you only consider if you don't consider Flash :)
And using a proprietary video format that requires user to download and install your software can of course be seen as a similar attitude trying to avoid Flash at any cost.
But now they have finally come to their senses it seems at least.
Of course the service itself it's not anything revolutionary to get excited about. It's video, in flash. The big news here is the big name.
That google uses Flash can seem like a seal of approval for serious large scale deployment of Flash content.

Peugeot's use of flash is not all that exiting, although nicely done.
The animation work is stylish and well carried out, but a bit bland in my opinion.
Clicking on a key flying around to test the sliding of the doors is hardly especially fun and doesn't make me feel closer to the product really.

It's how close you feel to the product that I love about applications like the one IKEA done.
It shows the possibility that multimedia technologies like Flash give for taking communication to a new level.
A video or an animation can be extremely good at delivering an experience, but when people figure out good ways to use interactive multimedia it gives you a presence previously unseen.

A picture says more than a thousand words, but a Flash application says more than thousand pictures :)
And in IKEA's case I guess it makes sense since it wouldn't surprise me if the application actually use about 1000 pictures.

Nasty notepad and the invisible BOM

First of all I'm happy to have received note that my blog have been added to MXNA today.

They tried to add it on friday, but apparently their parser didn't like my feed.
It contained an "feff" tag before the XML prolog I was told.

The feed was fine according to feedvalidator, other aggregators managed to parse it and it worked fine in my feedreader.
I double checked my PHP script that generates the feed and assured myself that there was no erroneous garbage.
Google help me!!

"FEFF" turns out to be a quite perculiar unicode character.
It's used to signify the byte-order of unicode documents, and also have the meaning "ZERO WIDTH NO-BREAK SPACE"....hmmm basically meaning it means nothing.
Using UTF-8 for my feed there is no byte order needed though, and if there ever is a need for a "ZERO WIDTH NO-BREAK SPACE" I'm curious to find out what it could be.

So what was the byte order mark (BOM) doing in my feed?
Apparently it's because I used notepad to make a quick edit to the document and told it to save as UTF-8.
Many apps will add the BOM also to UTF-8 encoded documents, not to signify a byte order, but to signify that the document is unicode.
But a parser might not be written to look for the BOM and strip it out if it's found, and hence choke since it's expecting the file to start with an XML prolog.
And for the parser there is no need to use the BOM to find out if the document is unicode. It will look at what encoding you have specified in the prolog, and assume UTF-8 for a document without encoding specified.

I guess that in my case the reason that the BOM ended up in the feed is that I use an include to get my db connection settings.
If the BOM appears before the PHP declaration I guess there should be no problem and it will not be included in the feed.
But with a BOM in the include you get a corrupted feed which not all parsers can handle.

In the end I used my preferred editor, SciTE, and saved the files as "UTF-8 cookie" to ensure that there was no BOM, and problem was solved.

Expression Interactive Designer

I had look at the video presentation for MS sparkle, or as it's officially titled, Expression Interactive Designer.

Previously when hearing about sparkle I figured it would probably not be anywhere close to living up to what it's many times refered to, a "Flash killer".
The picture I got in my mind was somewhere close to how the sparkle vs. Flash fight is portrayed in this animation.

Now I must say that I'm very impressed with what was shown of the application.
It sure don't seem like a Frontpage vs. Dreamweaver scenario to me anymore, and sparkle does have some very tempting aspects to it that could make it a worthy competitor to Flash in some aspects.
Honestly I hardly considered the option that it could be better than Flash and that I would ever contemplate to use it.
I don't hate MS for any other reason than that all the apps I used from them have been awful, and if they start putting out good applications I will not be adverted to them based on sentiment.

What really impressed me was the integration between code and design.
For me at least being able to see alterations made in code reflected instantly on the stage would be a great improvement for the workflow.
The resizable toolbars and pallets is a innovative feature, and although not that vital it's a nice improvement to the usual workspace in most graphics apps nowadays.
I don't get all that excited about the hardware acceleration and 3D capablities since I would normally not have that much need for them, but it's of course welcome with any performance boost and the 3D stuff will come in handy in some cases.

Of course Flash will have the edge for web applications, at least for a few years to come.
That means that MM will have a chance to catch up in some areas where sparkle seems to be ahead.
I doubt sparkle will ever be able to get to a state where it has the same universial deployment capabilites as Flash, which is really the prime reason that I got into Flash in the first place.

Dissolving the borders between the web and desktop as well as between different platforms is where the future is at, and I don't really swallow the talk about sparkle being for a different purpose than Flash.
For the user an application is an application, and if it needs to be downloaded and installed before it can be used or can't run on certain platforms it's just a drawback for that application.
In some cases you of course need access to the system in a way that would not be suitable to permit for web based content, but it's for sure not two separate worlds anymore.
To be able to do like with a Flash based app and decide that "hey, I need access to the file system, so let's publish this as a projector instead" is much better way of dealing with the separation needed between web based and desktop apps compared to have to use differrent tools and languages.
And no matter if you are targeting the desktop or the browser, universial deployment is in most cases a big bonus.

But of course MS want to tone down the "Flash killer" talk and focus on what sparkle actually might be capable of at the time of release.
That will be to enable developers used to the MS framework and designers to work better together to deliver products tageted at the newest generations of windows desktops.
Their long term goal is surely to be able to have a product that can rival flash as an application for merging the desktop and the web, and I'm sure they would love to have it working well on mac as well, just like with MS Word and IE.

I'm actually happy to see that it seems like Flash is getting what seems like it might be a worthy competitor, and I can't wait to see what developers using sparkle will come up with when it is eventually released.

Backbutton and deeplinking/bookmarking

I was looking around for some example code for how to implement full state management in Flash with both functioning back/forward buttons and deeplinking/bookmarking, but couldn't find any.

So I decided to put together my own and make it available in an attempt to silence the many Flash critics who, rightfully in my opinion, think that it is a major drawback with pure Flash sites.

It's only tested and working with recent versions of firefox and IE on windows.
Backbutton and bookmarking fails with Opera 8, but deeplinking works.
I'm quite sure someone with decent JS skills should be able to fix that though.
The problem is that "document[movieid].SetVariable();" does not target the swf correctly, which is a mystery to me since I have seen examples using the same syntax that does work.
Another solution would be to rewrite the code to use localConnection instead in which case most browsers should have no problem.

But for now at least you can easily have state management functioning for the very large percentage of users that use FF or IE, and other browsers should hopefully all fail gracefully and be able to follow deeplinks in to your flash site.
So there is no excuse to now implement state management into your Flash site now.

You can try the system with this little ugly example
Please leave a comment if you are using a browser other than FF or IE on windows so I can make a list of what browsers it is working on.

Get the download here.

Update:
I made a new version using Macromedia JS integration kit for communication between Flash and JS.
Get the download here.
It did not solve the issues with Opera 8.01 apart from getting rid of the JS error, and I doubt that Safari will work still.
So until I get some feedback on how it works with the Browsers that been problematic I'm not sure how much of an improvement it is.
I updated the example above, so try it out and tell me if it's not working with a particular browser.
So far confirmed to be working is FF 1.0.6 & 1.5 beta1, IE 6, Opera 8.5 and NS8. Not working so far is Opera 8.01

Dofus

I haven't found time to write in the blog for a few days.
The reason: www.dofus.com

It's a very well made MMORPG done with Flash.
Check it out if you like to see what Flash is capable of in the hands of good game developers.