I’ve seen the browser-future, and it works!

Although browsers clearly have become better, faster and stronger (I doubt they’ve become “harder” as well), it sometimes seems as if no revolutions have taken place apart from the introduction of XMLHttpRequest by Microsoft back in 2000. But this morning I saw something that really blew my mind and the live mashup of that great Daft Punk song perfectly describes the mood I’m in since.
The reason for all this excitement is a prototype of new functionality in Firefox that redefines how you can interact with websites and -applications, allowing you to use the web more efficiently. Just watch this video to see what I’m raving about (skip the first 50 seconds to see the actual goods);

Ubiquity, as the 0.1 Firefox add-on is called, is the work of a group of smart people at Mozilla Labs, headed by Aza Raskin. Aza is the guy behind Humanized, the company that developed Enso, a merger of a GUI and a CLI leveraging the power of language in a graphical user interface. Aza and a number of his co-workers joined Mozilla at the beginning of 2008 and they’ve already produced some innovative ideas over the last few months.
Ubiquity is past that initial idea-stage, with a prototype that really builds on the great idea’s Aza and his Humanized co-workers had with regards to the power of language in a UI. I’ll bet you this will be the way to disclose and use microformats in Firefox as well (breaking the deadlock the microformat-guys were in). Even though it’s still in alpha/ prototype phase, this is the Future guys and it works! Now try it out, will ya!!

About:blazingbetabrowsers

zeer snelle vosDat er precies iets (heel snel) beweegt in browserland:

Dada Netscape, dada! *zwaait enthousiast*

de shiny netscape throbberNet op de blog van The Reference een nostalgisch postje over het einde van de Netscape browsers gelezen. Ik wilde in de comments reageren, maar waarom zou ik daar een epistel schrijven als ik hier even goed rustig kan bloggen en dan een trackbackske doen?
Alleszins; naar aanleiding van de dood van de Netscape browser, las ik op Wikipedia dat AOL op 15 oktober 2007 zelfs nog Netscape Navigator 9 uitbracht. Niks over gehoord of gelezen en dat hoeft niet te verwonderen. Netscape was na miskleun NN4 en de succesvolle bundeling van MSIE4 met Windows98, sowieso al hopeloos verloren. De overname van het bedrijf door het dolende AOL heeft daar niks aan kunnen veranderen.
De creatie van de Mozilla Foundation in 1998 zou je (met enig simplistisch cynisme) dan ook kunnen beschouwen als de enige goeie beslissing die Netscape na 1996 (het jaar van de release van NN3) nog heeft genomen. De open source Mozilla browsers zijn er sinds 2001 (en zeker vanaf 2004, met de release van Firefox 1.0) immers in geslaagd om stelselmatig marktaandeel van MSIE af te snoepen. Van pakweg 95% in 2003, is het gebruik Internet Explorer nu naar rond de 80% gedaald en steeg het marktaandeel van Firefox tot bijna 15%. Het succes van de Mozilla-browsers zou daarenboven ook wel eens één van de belangrijkste redenen kunnen geweest zijn voor de hernieuwde aandacht die Microsoft aan haar browser gaf. IE7 kwam in oktober 2006 uit, meer dan 5 jaar na het verouderde en door security-bugs geplaagde MSIE6.
Met de aankomende release van Firefox 3, de groeiende populariteit van Safari (Safari3 is in beta-versie ook beschikbaar voor Windows), de kwaliteit die klein duimpje Opera met elke nieuwe release levert en de te verwachten release van IE8 eind 2007/ begin 2008, wordt het browser-landschap levendiger en diverser. Dat Firefox, Safari, Opera en zelfs IE daarbij (in meerdere of mindere mate) wel de webstandaarden volgen, maakt ons werk er alleen maar aangenamer op.
firefox iconDat er geen Netscape browser meer komt, is dan ook echt geen reden tot treurnis, want “De koning is dood, leve de koning!
PS: met dank aan mijn dochterken voor de inspiratie voor de titel 😉

Uw Firefox hoeft niet te crashen!

In tegenstelling tot wat sommige fan-boys beweren, is Firefox niet “the best thing since sliced bread“. Akkoord, het is een goeie browser en het succes van Mozilla heeft leven in de browser-brouwerij geschopt, maar het is niet al rozengeur en maneschijn. Firefox durft na verloop van tijd al eens flink wat geheugen vreten en ja, we moeten eerlijk zijn, soms crasht de boel ook grondig, zoals sommige blogposts ook bewijzen.
Het goede nieuws: ge kunt daar dus echt iets aan doen! Streng zijn op welke plugins ge installeert helpt U bijvoorbeeld al een goed eind op weg. Kijk eens op de lijst met “Problematic extensions” op de MozillaZine Knowlegde Base. Een minimaal aantal plugins (want hoeveel van die bling gebruikt ge echt?) en ge zijt al een stap dichter bij een echt stabiele browser.
En als de historiek van al die plugins, al die Firefox-versies en al die configuratie-wijzigingen uw browser duidelijk te veel is geworden, misschien moet ge dan eens met een schone lei (ook wel ‘nieuw profiel’) aan de slag gaan? Op deze pagina leest ge hoe ge een nieuw profiel aanmaakt en uw data mee verhuist (alhoewel ik prefs.js nu niet persé mee zou migreren).

Michel Vuijlsteke vs Firefox (en post redirect warnings)

elementary, dear vuijlsteke!Michel Vuijlsteke heeft het moeilijk met Firefox. Het is “het véruit meest onstabiele programma op heel mijn computer” en dat kan op zich al tellen. Maar laatst vroeg diezelfde browser hem:

“This web page is being redirected to a new location. Would you like to resend the form data you have typed to the new location?”.

Michel was verward, een beetje geërgerd zelfs:

“Nee, Firefox, dat wil ik niet. Of misschien wel. Of nee… aargh! Ik weet het niet! I’m so confused! Ik héb helemaal geen form data ingevuld, en ik wil die helemaal niet doorsturen!”.

Omdat het welzijn van deze opperblogger me nauw aan het hart ligt en -ge moet dat durven toegeven Goossens- omdat ik een Firefox fanboy ben, haalde ik mijn Dearstalker-hoed, kalebas-pijp en vergrootglas nog eens uit de serverkast en leerde al speurend toch weer één en ander bij. Ontdekt U mee?
Alzo: bovenstaande waarschuwing in Firefox wordt door de browser zelf getoond bij een specifiek soort redirect van POST-requests. Er is geen setting in about:config waarmee deze functionaliteit af- en aangezet kan worden en je krijgt de popup niet bij triviale GET-redirects.
De flow van zo een POST-redirect (ik heb snel een voorbeeldje gemaakt, test gerust zelf) ziet er als volgt uit:

  1. gebruiker submit (bewust of m.b.v. javascript) een form met method POST naar server xyz.be
  2. server xyz.be retourneert een http status code 307 met Location abc.be
  3. browser POST de data van het formulier naar abc.be

Een soort bounce dus. Nu hebben de HTTP/1.1 specs (RFC 2616) blijkbaar ook een mening over hoe zo een 307 door de browser moet worden afgehandeld:

“If the 307 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.”

Eh! Tiens! Een browser moet in principe dus een waarschuwing geven als een POST-request wordt gebouncet? Straf. En wat doen Safari, Opera en MSIE dan? Awel: Opera vraagt ook wat er moet gebeuren (brave jongens, die Noren). Safari volgt de specs al iets minder en redirect zonder morren, maar alle formdata gaat wel verloren (oeps). Enkel MSIE (ook 7) volgt de redirect en herpost zonder een kik te geven. Akkoord, MSIE verwart de gebruikers op die manier niet met onduidelijke waarschuwingen, maar dat middels wat XSS of phishing in combinatie met zo een 307 logins en andere confidentiële data ongemerkt ontfutseld kunnen worden, daar malen we niet om. Toch?
Soit, conclusie voor webdevelopers: gebruik geen form redirects met status 307! De juiste manier om Post/Redirect/Get te implementeren is de form data bij de eerste (post-)request te verwerken en dan pas met een http status 303 (of 302, als ge persé moeilijk wilt doen) een redirect te triggeren.
En een tip voor Michel: Safari 3 voor Windows komt eerstdaags officieel uit (ik gok tegelijkertijd met Leopard, dat zou dus … vandaag zijn). Dat betekent misschien het einde van je Firefoxmiserie? 😉

Followup: coScripter voor Firefox

Naar aanleiding van mijn kort experiment met de coScripter Firefox add-on, mailde ik IBM over mijn problemen met de onbetrouwbare resultaten. Hun antwoord vertaald en samengevat:

“Je bent in aanraking gekomen met één van de probleempjes waar we nog aan werken. De ‘run’-knop geeft omwille van verschillende redenen inderdaad een onvoorspelbaar resultaat. We kunnen bijvoorbeeld niet altijd zien wanneer de pagina volledig in de browser is ingeladen en de pagina kan al verschillen met wat de auteur van het script zag. Voorlopig kun je de ‘step’-knop beter gebruiken om stap voor stap door een script te lopen.”

En over het probleem van coScripter op meertalige sites:

“Het klopt inderdaad dat scripts werken op basis van de tekst op de pagina. Een script dat opgenomen is op een Spaans-talige pagina, zal vermoedelijk niet werken op diezelfde pagina in het Engels omdat de nmaen van buttons en links verschillend zijn.”

Ik merkte overigens ook dat coScripter het moeilijk heeft met een pagina die verschillende forms bevat, zeker als die geen eigen id hebben of als de input elementen overheen die verschillende forms dezelfde id hebben. Aangezien veel webapplicaties het niet altijd even nauw nemen met de naming van formulieren in hun html, vrees ik dat er in coScripter nog heel wat zal moeten veranderen om echt bruikbaar te zijn op het wilde-wereld-web.
Maar kom, de vriendelijke IBM-dame noemde me in haar mail een “early adopter”. Enerzijds is dat altijd een compliment, anderzijds betekent dat evengoed “laat ons gerust, we zijn nog niet klaar”. Daar kan best ik mee leven, eigenlijk …

Scripten op webpagina’s met FF coScripter

Een op het eerste zicht toffe Firefox add-on van IBM; coScripter. Met coScripter kun je je acties op een website of -applicatie opnemen en daarna terug afspelen zonder ook maar iets van programmeren te kennen. Het systeem beschrijft je acties dan in gewone spreektaal (Engels). De “natural language processing” die die spreektaal terug omzet in code is meteen ook het grote verschil met het javascript aangestuurde Greasemonkey. De scripts die je zo in coScripter maakt, kun je daarna makkelijk wijzigen, bewaren en delen met andere gebruikers op de coScripter-site. Heel web 2.0 allemaal, toch?
coscripter script website
Een voorbeeldje, iemand?
Een voorbeeld van een script waarmee je je Facebook status kunt aanpassen;

go to “http://www.facebook.com”
enter your “e-mail address” (e.g. tlau@tlau.org) into the “Email:” textbox
enter your password into the “Password:” textbox
click the “Password:” button
click the “Profile” link
click the “Update your status…” link
enter your status into the status field

E-mail-adres en wachtwoord kun je lokaal bewaren en worden dan door het script gebruikt waar gebruikersnaam of wachtwoord moeten worden ingevuld. Maar bekijk het introductiefilmpje op de coScripter-site misschien even als bovenstaande te abstract is?
Volgens de Mozilla labs blog bekijken de developers van het Firefox accessability-team de mogelijkheid om de ‘natural language processing’-mogelijkheden van coScripter te gebruiken om Firefox toegankelijker te maken.
Maar in de praktijk …
Omdat ik een nieuwsgierig aagje ben, downloadde ik de addon (je moet daar wel een IBM ID voor hebben), speelde er even mee en heb het onding ook al terug gedeïnstalleerd. De resultaten waren niet consistent; veel lijkt af te hangen van de kwaliteit van de html-code van de pagina’s waarop je script. Met bovenstaand Facebook-script bijvoorbeeld, kwam ik soms op de juiste pagina (om mijn status aan te vullen), maar soms ook op totaal andere sites (gmail heb ik voorbij zien flitsen, maar ook horoscope.com en profile.com). Heeft ongetwijfeld te maken met advertenties en andere links die op volstrekt natuurlijke wijze verward worden met de correcte links.
Spijtig, ik denk dat ze bij IBM nog wat werk hebben 😉

Brengt Firefox 3 ons de nieuwe animated png standaard?

Net gelezen op de Mozilla Labs Blog: Firefox 3 zal apng’s ondersteunen, animated png’s. Een alternatief voor slome animaties in flash én voor de lelijke -want met een bijzonder beperkt kleurenpalet- animated gifs? “Tof”, bedacht ik, “nog even wachten tot MSIE8 die nieuwe standaard ook ondersteund en we zijn weer een stapje verder in de goeie richting”.
Niet dus: apng‘s blijken een uitvinding van de Mozilla-mensen en de png-werkgroep heeft hun voorstel, dat eigenlijk een alternatief wilde bieden voor de onpopulaire mng-standaard, in april 2007 afgewezen. Er liggen momenteel nog een paar andere ideeën op tafel, maar er is dus nog geen standaard voor animated png’s. apng’s zullen hun nut ongetwijfeld hebben als browser-component -en daar focust het artikel op Mozilla Labs dan ook op- maar voor animated png’s op het internet lijkt het alleszins nog altijd te vroeg. Spijtig.

De volgende web (r)evolutie is hier (bijna)!

some logo, not telling you what it’s from though :-pWeb 2.0: been there, done that? En wat nu? Wel, Tim Berners-Lee en andere visionairen beweren dat de toekomst van het web semantisch zal zijn. Waarmee ze bedoelen dat informatie op het web betekenis moet krijgen voor machines (software), zodat die zelf verbanden kunnen leggen om die verzamelde data dan aan de gebruiker te presenteren. Het idee van Tim Berners-Lee is ondertussen al meer dan 5 jaar oud en er is in de praktijk eigenlijk nog niet veel gebeurd op het vlak van het semantische web. Maar nu lijkt er een doorbraak op til met een elegante en betrekkelijk eenvoudige oplossing om web-data te structureren.
microformats logo De volgende web (r)evolutie zou dan ook wel eens kunnen worden ontketend door microformats. Dat is informatie in gewone web-pagina’s die in de html-code extra getagged wordt, om diezelfde pagina ook voor machines en software bruikbaar te maken. Een heel eenvoudig voorbeeld met een gewone link:

frank goossens

een beetje aanpassen naar

en mijn naam en de url van mijn (shabby) homepage zijn ontsloten middels de hcard-microformat en daarmee ook “machine-readable”! Voor hcard zijn er nog veel andere attributen (adres, geboortedatum, nickname, foto, …) en daarnaast zijn er ook microformats voor bv. kalenderinformatie (hcalendar), recensies en tags. In die laatste incarnatie worden microformats overigens nu al ondersteund door zowat alle blogsoftware.
Ja, en dan?
En wat kunt ge daar dan mee Goossens? Awel; de gestructureerde informatie in microcards kan in principe gelezen worden door je browser, door zoekmachines of door andere gespecialiseerde software. En daar kan die data aangevuld worden met andere gestructureerde informatie om al dat moois dan voor uw en mijn gebruiksgemak te presenteren. Het valt bijvoorbeeld te verwachten dat zoekrobotten (technorati heeft dit al in de keuken staan) microformat-informatie zullen verwerken en gebruiken om zoeken op iets als “alle events in Gent van 14 tot 23 juli” in kalender-formaat mogelijk te maken. Of dat je browser microformats herkend en je die rechtstreeks in je contact-, kalender-applicatie of in google earth/ maps kunt binnenhalen (spoiler: dat kan nu al, lees vooral verder).
Veel beter uitgelegd
Vorige maand hield FF-user experience designer Alex Faaborg een presentatie over microformats die in dit kader zeker mag gezien worden (link naar slideshare-presentatie).
De doorbraak
operator screenshotMicroformats bestaan ondertussen 2 jaar, maar er zijn een paar stevige redenen waarom de doorbraak er in 2008 zit aan te komen; ze zitten dus in Firefox 3 en Internet Explorer 8 zal die vermoedelijk ook ondersteunen (Gates gaf zijn zegen in 2006). Er is overigens nu al een microformats extensie beschikbaar voor Firefox 2; Operator, ontwikkeld door een IBM-developer, dat kan ook al tellen als geloofsbrief. Operator vormt overigens de basis van de microformats-ondersteuning in FF3.
Anderzijds lijkt er ook aan de kant van websites ook wat te bewegen: sites als upcoming.org, plaxo, salesforce en linkedin bieden hun info nu al via microformats aan. Aan de kant van “website beheer software” zijn ontwikkelaars van open source systemen als Drupal, MediaWiki en WordPress microformats aan het integreren. Het lijkt me niet meer dan logisch dat dit een selectiecriterium voor keuze van corporate webcms’en zal worden (waarbij CMS’en die op basis van contenttypes werken, duidelijk in het voordeel zijn).
Hoort U het ook?
Wat ajax gedaan heeft voor web 2.0, zullen microformats voor doen; met betrekkelijk eenvoudige technologie de basis leggen van ontwikkelingen die het web naar een volgend niveau kunnen tillen. Wie een site beheert waar contact-gegevens of gebeurtenissen op gepubliceerd worden, heeft de klok horen luiden, ga nu uw klepel zoeken!
Meer info:

Doe open die proxy!

Omdat het op het werk niet altijd eenvoudig surfen is naar porno- of hacker-sites, heeft een mens al eens alternatieven voor de almachtige coorporate proxy nodig.
Dat je met firefox + putty + openssh-op-je-linux-serverken al veel kunt bereiken, is ongetwijfeld al gekend. Samengevat: de ‘dynamic port forwarding‘ optie in putty (en andere ssh-clients) opent een socks proxy op je eigen computer. Firefox kan via die socks proxy dan over de ssh-tunnel requests voor de meest ongepaste wwwebpagina’s de wereld insturen, zonder dat de bigcompany-proxy daar weet van heeft. En met de Firefox Switchproxy-extensie kun makkelijk switchen tussen bedrijfs- en je persoonlijke proxy.
Eén probleem rest er ons nog; de dns-requests gebeuren in bovenstaand scenario wel nog op het bedrijfsnetwerk. Als je in Firefox een URL intikt, zal die eerst moeten worden omgezet in een ip-adres. Die “vertaling” gebeurt door de DNS-servers van je werkgever en zo laat je de coorporate wwwatchdogs toch weer weten dat je de duistere kant van het net op wilt.
De oplossing daarvoor zit verborgen in de kelders van je Firefox-preferences; in about:config vind je de setting network.proxy.socks_remote_dns. De waarde van die instelling staat standaard op “false” maar wanneer die op “true” staat, wordt de vertaling van URL naar IP-adres effectief in alle privacy via je socks-proxy aan de andere kant van de ssh-tunnel afgehandeld. Nu alleen nog zorgen dat die collega die achter je zit, die blote schoon madammen op je scherm niet ziet … 😉