bran.name

Ode aan de grootste kennisbank ooit

Published

⚠️ Wait up! The article you're viewing was published a long time ago (in internet years), it may be irrelevant or completely incorrect by now. Thread carefully!

Een verhaal over progressive enhancement

Je zoekt naar de locatie van een restaurant door het adres in Google Maps in te voeren. Sinds een tijd krijg je niet alleen de locatie van dat restaurant te zien, netjes op de map geplot, maar ook andere zaken zoals de openingstijden en een telefoonnummer. Een jaar geleden ofzo kenden we die functionaliteit nog niet. Handig! Toch?

Of dat Google in staat is om verrijkte zoekresultaten te laten zien als je zoekt op de titel van een film. Je krijgt in de zoekresultaten de IMDB score van een film te zien en nog wat handigheden.

De data die Google nodig heeft om dit te kunnen haalt het uit de grootste kennisbank ooit door de mensheid samengesteld: content van het web. De robots van Google zijn 24/7 iedere seconde bezig de content van het web te indexeren en er betekenis aan te geven. Dat eerste is niet zo opzienbarend, indexeren is in feite gewoon verzamelen en opslaan. Dat tweede is wel bijzonder. Hoe kunnen robots betekenis toekennen aan menselijke taal? Als we eerlijk zijn over vertaal-robots of stemherkenning-robots dan zien we dat menselijke taal voor machines nog altijd erg lastig is.

De gelaagdheid van het web

Toch komt Google in bovenstaande voorbeelden een heel eind. Ze weet op de een of andere manier te achterhalen wat de openingstijden van een restaurant zijn. Gedeeltelijk komt dat door hele slimme algoritmen . Maar het belangrijkste hulpmiddel wat Google heeft is de basis-laag van het web. Iedere ontwerper en programmeur die zich bezighoudt met het web weet dat het web is opgebouwd uit lagen. De eerste en meest basale laag van het web is de HTML met daarin de content. Machines begrijpen HTML. Via die HTML kunnen de robots van Google betekenis toekennen aan menselijke taal.

Even over die gelaagdheid van het web. Progressive enhancement is een setje eenvoudige regels (ik zou haast zeggen gedragsregels) die beschrijven hoe om te gaan met de gelaagdheid van het web. Het fundament waarop we het web bouwen is altijd HTML. Alle volgende lagen haken op de een of andere manier in op de HTML. Die HTML laag —waarin we betekenis geven aan de content— is de enige laag die we niet als enhancement zien. Alle lagen die we er vervolgens op stapelen zijn verrijkingen, enhancements.

Je kunt jezelf misschien voorstellen dat dit fundament zorg en aandacht nodig heeft.

De paradox van HTML

HTML is een paradoxaal taaltje. Aan de ene kant is het uiterst eenvoudig, kinderlijk simpel vanuit het perspectief van een programmeur. Iedereen kan het leren. Aan de andere kant wordt het gebruikt om iets onwaarschijnlijk complex uit te drukken: menselijke taal. Deze paradox is de reden dat HTML eenvoudig door machines gelezen kan worden maar voorlopig niet door machines geschreven zal kunnen worden.

De basis-laag van het web dus. Geen enhancement, maar een noodzakelijk fundament. Hoe meer expressiviteit we in dat fundament weten te verwerken, hoe bruikbaarder het is. Dat levert ons veel op.

Om menselijke consumptie van - en interactie met de content zo vlekkeloos mogelijk te laten verlopen voegen we design (CSS) en gedrag (JavaScript) toe aan het fundament (de content in de vorm van HTML). Volgens de regels van progressive enhancement ontwerpen en bouwen we onze software zodanig, dat mensen er prettig mee kunnen werken. Hoe beter het fundament, hoe beter de uiteindelijke gebruikerservaring. Eén op één.

Om machinale consumptie van - en interactie met de content zo vlekkeloos mogelijk te laten verlopen hebben we aan het fundament (de content in de vorm van HTML) genoeg. Iedere programmeur kent het principe "garbage in, garbage out". Dat geldt ook voor die gigantische kennisbank van het web. In een klassieke database gebruik je tabellen en kolomtypen om je content te classificeren en typeren op het web gebruiken we HTML. Hoe beter het fundament hoe beter we die kostbare data kunnen hergebruiken en combineren zoals in bovenstaande voorbeelden.

Toekomstmuziek

Je vraagt Siri een route naar een bepaald restaurant. Dit wordt geplot op Google Maps en Siri meldt dat het restaurant op dit moment open is. Vervolgens stelt ze de vraag of ze even moet reserveren. "Ja. Twee personen, Siri." zeg jij. Omdat de website van het restaurant een reserveringsformulier heeft wat met zorg en aandacht opgemaakt is met de juiste HTML snapt een machine wat er met dit formulier mogelijk is. Siri kan jouw reservering plaatsen.

Toekomstmuziek natuurlijk, maar niet zo heel ver weg. Probeer jezelf de mogelijkheden voor te stellen van het vrij kunnen combineren met al die data op het web. Over big data gesproken; huge data zou ik zeggen. Omdat we lang niet alle toekomstige scenario's kunnen voorspellen is het goed onszelf zo generiek mogelijk voor te bereiden op wat komen gaat. Om die enorme berg data nu en in de toekomst toegankelijk te houden, moeten we onszelf rekenschap geven van het fenomeen wat ons die toegang verschaft: uitstekend geschreven HTML.

Trouwens, hoe relevant is een mooi ontworpen website van het restaurant nog als je alle relevante info en interactie via Google Maps laat lopen? Minder relevant, toch? En neemt de relevantie van HTML dan juist niet alleen maar toe? Dit is in ieder geval één van de scenario's van dit moment en dus geen onrealistische inschatting van de nabije toekomst.

De expressiviteit van microformats

Als je het zo bekijkt lijkt het onvermijdelijk dat we HTML door ontwikkelen naar iets nieuws, expressiever en meer semantisch. We kunnen de basis-laag van het web incrementeel verbeteren door er expressiviteit aan toe te voegen: microformats is een mooie manier om dat te doen. Kijk maar eens op schema.org om een beeld te krijgen van de semantiek die we op dit moment al kunnen toevoegen aan onze content.

IMDB doet dit al en Google maakt, in het voorbeeld hierboven, slim gebruik van die hoogwaardige, expressieve HTML. Die extra betekenis die de makers van IMDB hebben toegevoegd aan de HTML wordt hier beschreven: Aggregate Rating op schema.org. Op die manier hoeft niet iedereen superslimme, Google-achtige algoritmen te schrijven om te kunnen spelen met al die content. Jij en ik kunnen er ook op los combineren en prachtige nieuwe toepassingen bij elkaar copy-pasten.

Respect voor de gelaagdheid van het web en voor het principe van progressive enhancement. Het gaat ons nog veel opleveren en zal in toenemende mate leiden tot een betere en completere gebruikerservaring.