Op 19 september bezocht ik Kings of Code, de conferentie voor web developers. Het aardige aan Kings of Code is dat het complete spectrum aan web development aan bod komt en dus niet alleen een bepaalde programmeertaal of een bepaald framework. Hieronder een kort overzicht van wat ik op deze dag gezien en gehoord heb.
Understanding, Choosing & Instrumenting NoSQL

Tim Anglade werkt voor Cloudant en is de maker van NoSQL Tapes, een project met interviews en case studies over NoSQL-projecten. Hij gaf een uitgebreid overzicht van verschillende (open source) NoSQL-producten: CouchDB, Couchbase, BigCouch, Cassandra, Riak, MongoDB, Redis, Neo4j; besprak ze aan de hand van de volgende eigenschappen: distribution (Dynamo-style, master-slave, master-master), data/query model en disk structure; en gaf voor elke database een ideaal scenario. Zie de slides voor het overzicht:
Ik vond het opvallend dat hij NoSQL-oplossingen ziet als technologie waar je pas naar zou moeten gaan kijken als relationele databases je in de steek laten en je echt niet meer met een RDBMS toe kan. Onze ervaring met CouchDB is dat een NoSQL-oplossing ook gewoon allerlei wenselijke features kan hebben die je bij relationele databases niet vindt, zoals bijvoorbeeld de REST API van CouchDB. Aan de andere kant was het ook goed om een verhaal te horen dat niet uitsluitend de positieve kanten van NoSQL behandelde.
Declarative Applications

Steven Pemberton (CWI, W3C) is een oude rot op het web. Hij stond aan de wieg van de programmeertaal ABC (een voorloper van Python) en is tegenwoordig o.a. voorzitter van de XHTML2 en XForms Working Groups van W3C.
Na een interessante geschiedenisles over de kosten van computers en programmeurs door de jaren heen trekt Steven de conclusie dat programmeertalen traditioneel ontwikkeld zijn om zo efficiënt mogelijk door computers verwerkt te kunnen worden, omdat computertijd vroeger enorm duur was in vergelijking met het loon van een programmeur. Tegenwoordig is dat precies andersom: goede programmeurs zijn niet goedkoop, maar computers wel. Maar zijn programmeertalen daar op aangepast? Volgens Steven niet, of in ieder geval veel te weinig.
Het gros van het programmeerwerk wordt nog altijd in procedurele programmeertalen gedaan: de programmeur vertelt de computer stap voor stap wat er moet gebeuren. Volgens Steven is dé manier om programmeurs efficiënter te laten werken om ze gebruik te laten maken van declaratieve programmeertalen: specificeer wat je wil dat er gedaan wordt, niet hoe.
In beginsel ben ik het helemaal met Steven eens: het is prachtig als je declaratief kunt specificeren wat er moet gebeuren en de computer laat uitdokteren hoe dat precies moet gebeuren. Helaas illustreert Steven zijn punt met voorbeelden in XForms. De user interfaces van de voorbeelden zijn wat Spartaans (duidelijk een academicus, die Steven) en XML is naar mijn idee ook niet de meest leesbare vorm voor code, dus de wow-factor was wat laag. Daarnaast waren zijn voorbeelden dusdanig compact dat waarschijnlijk niemand in de zaal dacht: “Goh, dat levert een hoop winst op! Ik ga nooit meer iets met JavaScript doen!”
Het concept is prachtig, maar het is nog even wachten op degene die declarative programming naar de massa gaat brengen.
Zie ook de slides.
Varnish, The High Performance Valhalla?

Jeroen van Dijk (CTO Enrise) gaf een mooi overzicht van hoe je ‘application accelerator’ Varnish Cache kunt gebruiken om de performance van je website te verbeteren. Hij liet onder andere zien hoe je performance kan verbeteren door cookies te laten negeren door de cache en hoe de website van AutoTrack.nl gebruik maakt van Edge Side Includes om verschillende onderdelen van de pagina voor verschillende periodes te cachen. Hierbij wordt de pagina dus eigenlijk samengesteld door Varnish (who needs a CMS?) en dat gaat toch wel wat verder dan een simpele reverse proxy (waar je Varnish overigens ook prima voor kan gebruiken).
WTF Is Chef and Why Should I Care?

Stephen Nelson-Smith (Atalanta Systems, Opscode) kwam ons vertellen waarom je je infrastructuur eigenlijk net zoals je software wil behandelen. Is een extra server toevoegen aan je setup een hoop werk? Is het lastig om een testserver te vervangen? Niet als je het installeren en configureren van een server en z’n applicaties automatiseert in code. Die code kun je testen, je kunt er versiebeheer op toepassen en je setup wordt makkelijk ‘repeatable’. Een server toevoegen aan een cluster wordt dan ineens een eitje.
En dat doe je dan uiteraard met Chef als het aan Stephen ligt. Chef voed je met ‘recipes’, wat feitelijk gewoon stukken Ruby-code zijn die gebruik maken van de Chef API. (De Chef Server gebruikt trouwens CouchDB als backend.) De vraag waarom je Chef zou moeten gebruiken in plaats een concurrerend product als Puppet (of CFEngine?) werd helaas ontweken.
Het zou naar mijn idee in beginsel best een goed idee zijn om de setup van een aantal applicaties bij de VPRO in een dergelijk systeem te vangen, maar het nadeel is dat onze infrastructuur niet erg homogeen is. Als al je machines (test, acceptatie en productie) bij Amazon in de cloud staan is dit waarschijnlijk goed werkbaar, maar als je lokale testserver een VMware image is en je acceptatieserver in een omgeving met NFS-shares staat, dan wordt het al snel een stuk lastiger.
Het zou interessant kunnen zijn om hier eens verder over na te denken en het zou misschien zelfs een argument kunnen zijn om een OTAP-straat te homogeniseren: het wiel niet opnieuw hoeven uitvinden voor elke stap in het proces kan een hoop tijd schelen en je documenteert ook indirect je infrastructuur.
Stephen Nelson-Smith gelooft niet in het publiceren van slides:
Web API’s World

Michele Zonca (Mashape) geeft een vliegensvlug overzicht van de staat van web API’s. SOAP was te complex, hoe REST opkwam, dat dat geen standaard maar een stijl is, dat een hoop mensen het verkeerd doen, het gedoe rond verschillende authenticatie-mechanismen en hoe je er geld mee zou kunnen verdienen. Dankzij zijn Italiaanse accent was het even lastig om erbij te blijven, maar het was een lekker compleet overzicht!
HTML5 - Time for Some Slicker Apps

Chris Heilmann (Principal Evangelist Mozilla) presenteerde een tsunami aan technieken die HTML5 programmeurs in staat stelt om een lekker gelikte webapplicatie te maken. HTML5 is een misnomer, want de standaard omvat meer dan alleen markup: CSS3 (animatie, calculatie, hardware acceleratie), HTML5 forms (validatie (hoewel je daar voor beveiliging niet op kan vertrouwen, lijkt me, je zal toch server-side moeten valideren om te voorkomen dat iemand met de validatie heeft gerommeld), nieuwe elementen), File API, HTML5 video, Popcorn.js, Canvas, WebGL, local storage, offline mode, History API en SVG met D3.js en Raphaël.
Zijn presentatie was uiteraard ook helemaal HTML5.
Ook indrukwekkend: Mozilla’s Awesome HTML5 Dashboard!
Node.js

Bert Belder is één van de core developers van Node.js, het event-driven I/O framework voor server-side JavaScript-applicaties op basis van Google’s V8 JavaScript-engine. Na een korte introductie over wat Node precies is begin hij aan een live demo. Hij begon met de mededeling dat live demo’s altijd een slecht idee zijn, omdat er altijd wat mis gaat. Waarom hij alsnog een live demo gaf is dan ook een raadsel, want het ging inderdaad mis. Een erg eenvoudige Node-applicatie startte zonder foutmeldingen, maar werkte niet. En Bert kon ook niet ontdekken wat er mis was. Niet al te beste reclame voor een systeem dat conceptueel wel erg interessant is.
Een tweede demo verliep iets beter en hierbij viel op dat Bert letterlijk JavaScript-code van de client naar de server kon verplaatsen, om deze door de server af te laten handelen. Het begin van de demo was een JavaScript-implementatie van Gorilla die in de browser draaide. Even later had hij een multiplayer-versie met een Node.js backend waar iedereen in de zaal met z’n laptop of telefoon op kon inloggen om ook met bananen te gooien. Node.js is duidelijk nog een jong project, maar heeft zeker potentie, zeker voor mensen die graag één programmeertaal gebruiken voor zowel frontend als backend.
Big Data

De dag werd afgesloten door Werner Vogels (CTO Amazon). Hij gaf geen presentatie, maar werd op het podium geïnterviewd door Robert Gaal, de host van Kings of Code, waarna er ook nog tijd was voor vragen van het publiek. De video van dit gesprek is nog niet beschikbaar, maar toevallig was hij enkele dagen later ook op bezoek bij Fast Moving Targets van o.a. oud-Digibaas Erwin Blom:
Kings of Code, het was me weer een waar genoegen!

