Monthly Archives: May 2008

RIA or POIA?

I went to a Dolmen-organized seminar about RIA‘s today, where some smart people talked about GWT, Flex and JavaFX. I hooked up with an old acquaintance there, he was a customer of my previous employer actually, working in banking and finance. We exchanged ideas about when and more importantly when not to use RIA-technologies. I just now received a mail from him as well, in which he wrote (roughly translated from Dutch);

I’ll keep you posted on our findings concerning RIA as well, but when I tried to visit www.parleys.com at work just now, all I saw was a black screen. In that case I prefer those PIA’s; they might not be that fancy, but they do work.

I couldn’t agree more, Poor Plain Old Internet Applications for president!

Stijlvol de grond in; het einde van Six Feet Under

Nu de fuckers van 2BE (het voormalige kanaal2) Six Feet Under (tijdelijk?) hebben afgevoerd, zijn we aangewezen op DVD om de twee laatste seizoenen te bekijken. Veerle heeft ze voor een mooi prijsje tweedehands kunnen kopen in Nederland en de DVD-boxen zijn al met de post onderweg. Ik dook ondertussen al ongeduldig in YouTube en vond daar onder andere deze magistrale laatste 10 minuten van de laatste aflevering van het laatste seizoen (massive spoiler, zeg niet dat ik U niet gewaarschuwd heb!):

De muziek is van Sia, “Breathe me”. Ik heb hier bijna zitten blèten. Maar bijna eh! En ja, smartass, over de middag mogen we hier YouTubekes bekijken.

Firefox 3rc1 shines in Javascript benchmark

blazing firefox3As the official release of Firefox 3 is getting closer, with Release Candidate 1 being available since May 17th, I decided to boldly go where codinghorror has gone before and do a quick-and-dirty Javascript-performance comparison of the different browsers I’ve got installed on my Dell Latitude D620 laptop, using Webkit’s Sunspider benchmark.

Let’s start with the results for the browsers on my Windows XP SP2 installation, ordered from slowest to fastest. Each test was executed 2 times, clicking on the results will teleport you to the detailed results where you can paste the URL’s of another test to compare.

The MSIE7-results are probably not entirely representative, as I use Tredosoft’s standalone IE7. This is a bit of a hack to have IE7 on my otherwise MSIE6-based system. Moreover my corporate Windows-installation is infested with crapware, notably McAfee OAS and Zonealarm seem to be slowing things down enormously. The codinghorror-tests indeed show significantly better results for this browser, although IE does have serious issues with string concatenation, which should be fixed in IE8.

On the same hardware, but booting in Ubuntu 8.04 (Linux) form my external USB HD (a.k.a. my ‘disktop‘), I got the following results:

Firefox 3 RC1 seems slightly slower then b5, but maybe the Ubuntu-b5-version is compiled with optimizations? Firefox is also faster on Ubuntu, but the anti-virus-bloat is probably messing with our heads here (although Opera is slower on Linux, go figure).

The general conclusion however; Firefox 3 is a huge step forward as far Javascript-performance is concerned. Users of javascript-heavy web-applications such as Gmail, Google Reader, Zoho Office and Zimbra should benefit enormously from this. It would however be very interesting to perform similar tests with regards to ‘normal page rendering’ (html/css). Does anyone know of such benchmarks?

Linux distro’s en SSH-bugs in beeld

Vandaag 2 opvallende beeldekes gezien in verband met Linux, snel even op de blog gooien::

Naar aanleiding van de lichtjes genante openssl-bug in Debian-gebaseerde distro’s deze grappige cartoon van xkcd (de inhoud van de title-tag komt ook van daar!):

 

True story: I had to try several times to upload this comic because my ssh key was blacklisted.

Iets serieuzer (alhoewel, een openssl-bug is eigenlijk bijzonder serieus), een indrukwekkende Linux-distro timeline zoals gevonden in een interessant artikel over forking van FOSS-projecten (nav. de recente boedelscheiding in het Pidgin-kamp):

linux distro's stamboom (by NPA, hosted at kde-files.org)

Are you doing Web2.0 the wrong way?

gapingvoid cartoonAccording to Jakob Nielsen, jumping on the web2.0-bandwagon often implies adding unneeded complexity instead of getting the basics right. I tend to agree; in our quest for sexier, more responsive web-sites and -applications, we seem to easily forget boring stuff such as accessibility and sometimes even usability. How much time did it take you to find your way around the new LinkedIn-UI? Have you tried to use a web2.0-site on a PDA or smartphone? With your keyboard instead of your mouse? Using a screenreader instead of your normal display? Or with JavaScript disabled (I installed the Firefox NoScript-extension to guard against XSS and other JS-attacks)? And if you have ever tried loading Gmail on a slow connection, you’ll surely have noticed that they automatically fall back to their more accessible “Web 1.0”-version?

Lately I’ve been reading a number of interesting articles on this subject and at work we’re carefully applying some Web2.0-techniques as well. Based on that, here are a few suggestions on how to build better websites and -applications:

  1. Don’t use GWT or Flex unless you’re building a complex desktop-style webapp and if you’re willing to invest in a second “basic html”-version as e.g. Gmail does. Let’s face it, most websites and even -applications do not have the level of complexity that warrants the use these RIA-frameworks.
  2. Develop your core functionality in “web1.0”-style, using semantic HTML (structure) and CSS (presentation) only and apply your usability- and accessibility-wisdom here.
  3. Sprinkle JavaScript (behavior) over that static foundation using an established JavaScript-framework to define event-handlers for objects and to modify the content of divs (but test if you can already write to the object, or you’ll get those ugly “operation aborted” errors in MSIE).  Give users a chance to opt out of this enhanced version, even if they do have JavaScript enabled. With this progressive enhancement (a.k.a. hijax) you add extra functionality for those people who can make use of it, without punishing users who can’t because of physical or technological impairments. Read more about progressive enhancement on London-based Christian Heilmann’s site.
  4. Only load your JavaScript-functions when you really need them, creating a kind of stub for methods of an object and only load the real method when it is needed. This technique is dubbed “lazy loading” and can help making your pages load & initialize much faster. To learn more about the concept of “lazy loading” on digital-web.com.
  5. Use <noscript>-tags if you absolutely have to use JavaScript without having a meaningful object already in place in your static version. Explain what is going on and provide a link to a normal page where the same information or functionality can be found.

Off course these tips won’t guarantee you a perfectly usable and accessible website or -application, but when done right, this will help to get 80% of the way. A good functional analysis and thorough testing, both keeping usability and accessibility in mind, will push you towards 99,99%.

Afkicken van Duitsers met José James

Genoeg Krautrock door m’n hoofd gejaagd de laatste dagen (nog fantastische liveopnames en een documentaire over Kraftwerk op Youtube gevonden), gisteren herinnerde de samensteller van Exit op Radio1 me aan jazz-vocalist José James, protégé van Gilles Peterson. Negeer die artficiële onderverdeling tussen Jazz en nu-jazz, vergeet de -weliswaar jazzy- pop van Amy Winehouse, Norah Jones of andere Joss Stones, dit is echt mooie, beluisterbare jazz;

Jose James – Park Bench People

Watch this video on YouTube.

José James komt op 16 augustus naar Jazz Middelheim vertelde de Exit-presentator en dat is zeer de moeite, getuige de vele tubekes van zijn concerten en jam-sessies met oa. Soil and “Pimp” sessions.

Don’t let Google fool you; tame your Flash!

As I wrote some time ago, Google indeed does index Flash. Great? Well, maybe not: you might even lose valuable site visits this way! This is because Google does not direct users to the page on your site that contains the Flash (as it does for image search results), but to the standalone SWF-file. That means that people doing a normal search in Google, will in some circumstances get high-ranking links straight to your Flash-files instead of to your website and that these prospects will not be drawn into your website’s sales funnel at all. So much for SEO.

Solutions? Well, you could refrain from using Flash all together, there’s too much of that stuff around anyhow. Or you could prohibit googlebot (and others) from indexing swf-files by specifying this in your robots.txt-file.

These are both great remedies, but somehow I think not everyone will agree. So what if we could perform some ActionScript-magic to make a Flash-file force itself in its correct context? Although I am not a (Flash-)developer by any account, I hacked together a small demo (in ActionScript 2) to show how that could be done.

And indeed, if you point your browser to the standalone swf-file, you’ll see you are redirected to this page. How this is accomplished? Quite easily actually;

  1. add a flashvar (e.g. “embedded=true”) to the object/embed tags in the html
  2. check for the value of that flashvar in the first frame of your movie:
    var embedTrue=_root.embedded;
    if (embedTrue=="true") {
         // all normal flashyness goes here
         stop();
    }
    else {
         gotoAndPlay(2);
         stop();
    }
  3. and in frame 2 we do the redirect to the correct url:
    onEnterFrame = function() {
    // weird, stupid test to avoid this from being executed more than once
    if (!runOnce) {
    		var targetUrl = "http://blog.futtta.be/2008/05/06/";
    		geturl(targetUrl);
    		runOnce="1";
    	}
    }
    stop();

I’m sure the code stinks and it indeed is only actionscript2 and not 3, but maybe someone out there can build something usefull out of this general idea. And if not, I’ve had fun learning some (very) basic actionscripting. Now off to “Add/remove software” to get rid of that hog of an IDE! :-)