Archive for the tag 'Ramblings'

Rumours of the death of Flash have been greatly exaggerated

Recently we have seen a lot of progress with the capabilities of Javascript to leverage the capabilities of HTML to do things that was previously only possible using Flash.
Thanks to for example mootools and jQuery you can now create sites that looks like they are made with Flash with nice tweening animations, and of course AJAX have already for a few years been an option to update the content without reloading the page.
Does this mean that the future of Flash looks bleak?
Somerandomdude seems to think so, and points to some of examples if the impeding demise of Flash. John Resig’s Processing.js and experiments with HTML 5’s video element.

 

First of all, does any of these developments offer improvements over what Flash have been capable of for years?
Maybe if a site that is heavy on information but you might want to jazz it up a bit with some nice transitions.
When it comes to presenting text HTML has some advantages, mainly due to the browser integration.
Using the browsers built in search or select and right click to google a phrase for example.
Usually those advantages are greater than the possibility to embed font outlines with Flash.
But most implementations I have seen of for example slideshows and menus does not offer any advantages what I can see. Implementing them in Javascript still performs worse, gives you less possibilities and makes it less accessible.

 

When it comes to video on the surface I cannot see any reason why a video playback native to the browser would be preferable.
Of course one could argue that since you have a limited choice of compression formats with Flash it would open up to more options there. But to deploy content you will still have to make sure you use a codec that is included with a majority of browsers. It remains to be seen if it will mean much of an improvement in practice, and personally I do think that h264 is quite satisfactory.
All the above is true for the HTML5 audio element as well.

 

Of course the technical merits is only a part of the parameters that decide the acceptance of a technology. There are a lot of developers that really dislike Flash for various reasons and they are just really happy that they now can do the same things as has been possible for a long time with Flash.
The fact that it can be more tedious to implement and performs worse is not as important as various factors like avoiding proprietary formats or using a environment they are already accustomed to.

 

But even if Flash is not necessary to do a lot of things that previously was it's exclusive domain to me it seems like it's constantly gaining acceptance with developers.
Flash is still quite far ahead of the capabilities of DHTML/AJAX and how long will it take before HTML5 is widespread enough to make it a viable option?
Flash is still developing rapidly and the new versions of the plug-in is spreading extremely fast, so by the time HTML5 capable browsers is widespread enough probably 95% will have the Flash 15 plug-in installed.

 

I think the main issue here is the different ways in which Flash and HTML is being developed.
A lot of the hate against Flash is based on the fact that swf is a proprietary format, and even if that is not entirely true any more it's certainly not based on an open standard.
And that what makes it possible for it to stay on the cutting edge, and that's why the capabilities of DHTML, XHTML, Javascript, SVG etc. always is one step behind.
Even if I prefer open standards in theory it just doesn't seem to work as well in practice.
Rather than being impressed how HTML and Javascript is catching up with the capabilities of Flash I'm continuously surprised at how slowly it's happening.

 

I have been fanatic about Flash since I first discovered it in 1999, and I really have trouble being completely neutral even I try. But IMO Flash is not going anywhere. With AS3, AVM2 and FLEX a lot of new possibilities has opened up that DHTML will not be capable of any time soon, like for example decent 3d engines, socket connections and sound synthesis.
Overall I do see a trend though that the web is getting less and less fixated with certain technologies.
On the server side we have seen Python and Ruby gaining acceptance. MS will be trying with Silverlight to present an alternative to Flash and HTML will be able to compete as well.
But it's not a war where anyone has to die...there is certainly room for more than either ASP, perl or PHP on the server and HTML, Shockwave or Flash on the client, which pretty much used to be the case.

Does Flajax make sense?

Well, the word in itself maybe not, I just made that up myself.
But as you probably guess I'm talking about using Flash and AJAX together.

After my last post that also involved Flash and AJAX, "Right tool for the job...or right job for the tool?", I came across the following blog entry: Ajax and Flash Together
Some good examples of AJAX and Flash integration and I couldn't help to ask myself a couple of questions.

In what way does it affect me as a user if the buttons controlling flash is in the HTML page or part of the swf?

Looking at Yahoo finance and Google finance I really have difficult to see that the user would have advantages or disadvantages from an AJAX mix compared to only Flash.
The only case would be if there is browser incompatibilities with JS or that they lack the flash plug-in.
Obviously buttons is no good without graph and vice versa, so not having to rely on two separate technologies being available as expected is better. But to me it could just as well be one big swf...I would not notice any difference apart from when I right click.

On the google page I can agree that it's neat how it highlights the headlines to the left when you click the corresponding box in the graph. Using HTML for those headlines makes it possible to completely retain their visual identity, even if the result in Flash could be made very similar looking.

In what way would it affect me as a developer having to implement one over the other solution?

I cannot see that it would have any advantages when developing to move buttons to control the graph outside of the swf.
Anyone who can make the graphing app can in no time add the buttons instead of making a handler to respond to JS calls from the HTML buttons.

What have I missed?
In what way does combining Flash and AJAX help the user in those examples?
In what way does it help developers?

Right tool for the job…or right job for the tool?

Usually when people discuss Flash, AJAX and HTML there will be a lot of people saying "just use the right tools for the job, both have their strengths."
Seems obvious enough and makes sense.
But do we really have to learn to use all tools, and could one not turn it around to say that we should find jobs that fit our tools?

I many times been thinking I should have a look at AJAX because I might get a project where it would be a good solution.
The main reason I haven't bothered is that I have problem finding uses for it where Flash is in any way inferior. The only reason to go with AJAX that I can see is if you have a HTML page where AJAX could feel more visually integrated, but on technical merits alone I find it hard to see where AJAX would be a better tool.

The point I'm trying to make is not about if Flash is better than AJAX.
Regardless of the merits of using AJAX vs. Flash I really dislike having to deal with browser issues and a far from ideal development environment

Sure, if there was no demand for Flash and I had to make sure to put food on the table, then an AJAX job might seem tempting.
But as we all know Flash is higher in demand than ever, so why would I start using a technology that I don't enjoy working with that basically fills only fills some of functions as the one I already master?
To make sure that I can give the best solution to a customer who have a project that is one of the few where I think AJAX would be a better choice?
No thanks, if that situation would arise I'll be happy to send them on to someone who likes to deal with browser incompatibilities.

As long as I have the possibility I rather choose jobs where my skills is the right solution. Sure I like to keep up with new technologies, but only as long as they seem nice to work with and they bring new advantages. But to choose what tools to use according to the jobs on offer doesn't appeal to me.

So, what's your approach, choosing the skills that you find nice and useful to find matching jobs or adapting your skill set to the jobs on offer?

RIA wars

Here we go again.
What is the future dominant platform of RIA development?
The latest discussion that triggered me to reflect on the issue again is over at ajaxinfo.com

Actually I find discussions like this quite interesting and don't mind dissecting the pros and cons. I guess I just like a good argument :)
But I'm also aware of that it is impossible to judge what is the most suitable technology to use without knowing what the goals of the project is, and most of all, who's going to develop it.

The article by Alexei White on ajaxinfo does seem to reach a similar conclusion in a way. The major drawback with Flash according to the author is that it's hard to find developers skilled with the technology.
I do find the evaluation questionable though.
Sure there is more developers specializing in HTML and JS than ones specializing in actionscript.
But that doesn't mean that the HTML/JS developers usually can put together a complex RIA using their existing knowledge. To get it all to work together in a way that give reliable results seems to be a skill in it's own right.
That the developers have the "basic skill set necessary for interacting with components" for working with AJAX is not of much value if they don't have the full skill set needed to get the job done.
They could hopefully acquire it, but they could also learn a new language.
I would not think it's actually hard for someone already skilled in JS, Java and PHP to learn actionscript, and for sure Flex or Laszlo with their XML based markup can be worth the effort to learn if you want to be working with RIA development.

Sure finding a technology that matches the skill set available is beneficial, but I would say that there has to be a balance.
So you also have to consider finding developers that is capable of handling the technologies best suited for realising the goals.
What is the most efficient balance has to be carefully evaluated.
With large companies you of course have an inertia due to having invested in certain technologies and they can't sack their whole IT team every time a new and better technology come along, so hence there will be a large dose of conservatism involved.
And that's I think a big reason why AJAX is getting all the hype it has at the moment. To me it does seem like an attempt to squeeze the last drops out of a heavily invested skill set, financially by companies and intellectually by developers.

There is often much talk about all the variables one have to consider in the choice of technology. And sure many of them can be valid in very specific circumstances, but usually there is few variables that really matters and would outweigh any other benefits or disadvantages. And evaluating them properly can be hard enough without adding more to the equation.

From the perspective of the customer it's mainly two variables:

  • How much will it cost to develop?
  • How successful will it be at achieving it's goals?
  • From the developers perspective it's more of a conflict:

  • How efficient are the technologies compared to each other in achieving the objectives of the project?
  • How comfortable do i feel using one technology over the other?
  • How long can I go on what I feel comfortable with and still stay in business?
  • The user should of course not have to reflect on the technology and one has to presume all that matters is the result they are presented with and that they can get to it.

    The arguments often brought in to the discussion about Flash and FLEX being proprietary tends to be very superficial to me.
    Especially considering that the swf format is open.
    Alexei White mentions in his summary that Flash "suffer from the Vendor lock-in problem".
    I actually have problems understanding in what way it might been a problem for any project. Sure i prefer to support an open standard and open-source software based on my sentiments.
    But if we look at the standards based formats like HTML, CSS and SVG there is a lot of real problems that will have very immediate effects on any project involving such technologies.
    The "vendor lock-in problem" certainly pales in comparison to the problem of getting web standards to be standardised.

    Debunking Flash myths

    I love debating Flash and got a bit inspired to make some comments after reading the recent post at Just Another Rant and discussion at slashdot about the merits of Flash vs. AJAX.

    It always seems to me that there is a lot of emotion involved whenever this subject comes up, and very little rationale.
    There is for sure a very strong resistance towards Flash among developers in general, but what are the basis for their resent, or as they many times label it them self, hate?

    Most of the top arguments is purely based on presumption, or is in fact criticism of the way people use Flash rather than issues with the technology itself.
    Of course that's quite inappropriate when discussing the merits of a technology. You don't see people blaming HTML for the massive amounts of appalling HTML pages out there, so why should Flash be blamed for bad use of the technology?

    Skimming through the comments in the discussion on slashdot here is some issues that was brought up:

    AJAX doesn't require the user to download a plug-in as long as they are using a modern browser.
    That is of course true. But it does require javascript to be enabled, and from the statistics I been seing the amount of people with javascript disabled is probably higher than the amount of users without Flash installed.
    For the user I doubt it matters much what reason there is that they cannot access your site.
    If they really eager to enter the site and will forgive that it's not instantly accessible it's a matter of how easily they can get their browser set up to be able to enter.
    The Flash player installation seems to me a lot more straightforward for the average user compared to having to follow instructions on how to enable javascript on you browser.

    AJAX is not beholden to a single company who doesn't release their player in an open source format.
    Again this is true, but a bit pointless argument.
    The swf file format is open source. It's possible to develop swf files using only open source software, and isn't that what really matters?
    To have a plethora of players from different developers to choose from would not be good thing from what I can see.
    That's the beauty of Flash really, that because there is only one player it will be consistent, no matter what OS or browser people use.
    So IMO it's the best of both worlds...OS tools for development but only one and therefore consistent way to present the result with.

    Flash movies must always run at a fixed size. The fluid nature of HTML is a huge bonus when it comes to creating RIAs--something that takes a long time to compensate for when developing Flash RIAs.
    I find it very easy to create liquid layouts in Flash and you have a level of control you cannot get with HTML/CSS, so I would say the opposite but I guess it depends on what tools you are more used to.
    And you don't have to deal with browser inconsistencies which speed up development.

    If a page is made entirely in flash then a search engine can't glean text from it when it comes to crawl it if all your content is compiled into a swf.
    Here of course we are talking about a real issue with flash.
    Or IMO rather an issue with the search engines, because I would think it's their job to make sure that they can search the web, not the websites responsibility to make sure it constrains itself to the current limitations of search engines.
    I understand though that it's technically challenging, and that several search engines is working on capability to index swf's.
    But it's really not that hard to make contents accessible to search engines, since most serious flash sites uses XML or databases for their content.
    A simple text version will do to give both search engines and for example people with screen readers access to the content.
    And solutions like ripple makes it even less effort.

    Text is unselectable (unless it has been set to 'dynamic' which it rarely is) so if people want to copy and paste something from your site then tough luck to them.
    This argument comes up quite often.
    On both static and dynamic text you can decide if you want text to be selectable or not. It's up to the developer, but I must say that it maybe should default to selectable since there seems to be a lot of lazy or inconsiderate flash developers out there.

    Bookmarking, deep linking and back/forward buttons do not work.
    It can take a bit of effort to implement, and as a matter of fact I could not find any ready-made system that could handle full state management when making this site, and it did take me uite while to make a system that worked ok.
    And there is still work to do since it will not work on all browsers. At least IE and Firefox on windows I managed to get to work, which covers the large majority of users.
    I will put up the system here for download to help fellow Flash developers to solve this issue.
    So it's is possible to do, but yes, it's not immediate or obvious to implement, so I have to admit that it can be a problem.

    Ok...I won't go on with more of the points that I feel need debunking now, because the list is too long.
    I will admit though to what I see as actual issues that cannot be resolved at this time

    Flash will not integrate with extra browser functions, like mouse gestures and dictionary or web search plugins for Firefox.
    There is really no solutions, since it doesn't make sense to implement them in Flash when you don't know what plugins the user has and how they are configured.
    And I don't see those issues to be resolved in the forseeable future.
    I consider it a small price to pay though for the flexibility and consistency that Flash offers.

    Of course nothing is perfect.
    But Flash is as close to perfect as you can expect to come IMO :)

    It might not be appropiate to use in all instances, but it really comes down to three main factors:

  • If the technology have a feature set that is of advantage to the project.
  • The time and cost involved in development.
  • How accessible the end result will be.
  • Of the available technologies i think there is very little doubt that Flash is the most generous when it comes to features on offer.
    Probably that's one of the main reasons why it's so disliked by many as well. I sure also hate when some loud music starts up when I open a page, or some massive animations I have no interest in watching have to load before I can access a page.
    With the power comes responsibility...and unfortunately there is a lot of irresponsible developers, and not to forget, clients that want to abuse the technology.

    For a simple text page flash is time consuming and costly to use, that is certainly true.
    But as soon as more advanced interactivity is required it sure seems to me like AJAX is a lot more time consuming to reach a result that preforms as consistently as Flash across browsers.

    Like mentioned before Flash player penetration figures should be in a similar league as javascript enabled browsers.
    But with it's consistent performance across different browsers I would say Flash is more accessible than an AJAX solution.
    If anyone have figures contradicting that I would only be happy to hear about them.

    Like I said it should be rationale that is the basis for what technology is considered most suitable for a project, not emotion.
    I love to hear rational arguments against the use of Flash. It encourages developers and Macromedia to resolve the issues.
    I might even turn into an AJAX developer one day....but somehow I just don't see that coming.
    The more I look at the facts the more obvious it is that the future belongs to Flash.