DPC 12 - dag 1

Door Sjoerd Maessen, lead software engineer
8 juni 2012 - 852 x bekeken -

Na een vlotte rit richting Amsterdam Rai was het tijd om te luisteren naar de eerste talks van die dag. Mijn schema voor deze dag ziet er als volgt uit:

Schema

09:30 Keynote
10:45 How not to design a toad
11:45 Designing Beautiful Software
13:30 ElasticSearch [R]evolution: Welcome
14:30 The API Dilemma
15:45 Fast, Not Furious => Separation of concerns
16:45 Scalability issues: cure first, prevent later => Designing HTTP Interfaces and RESTful Web Services

En is natuurlijk 's avonds het plan om met de social maar meteen de eerste wedstrijd van het EK mee te pakken.

Keynote

De openings keynote Programming Style and Your Brain van Douglas Crockford was erg interessant. Er werden een aantal goede punten aangehaald met betrekking tot de stijl waarin je als programmeur code schrijft. Doe je dit met gevoel of met je hoofd? Het zette je aan het denken. Verder werden er een aantal tips gegeven (met name gericht op Javascript) die ik zeker meeneem in mijn volgende stuk javascriptcode dat ik schrijf.

How not to design a toad

De tweede talk door Mike van Riel ging over design (ook de auteur van PHPDocumentor). Hoewel ik als PHP developer voornamelijk bezig ben met het schrijven van code is het toch interessant om ook wat design principes mee te krijgen. Het was grappig om te zien dat Mike als slecht design voorbeeld Jenkins aanhaalde. Een tool die we bij E-sites dagelijks gebruiken. Helaas waren de aangehaalde onderwerpen niet heel vernieuwend. Enkele onderwerpen die aan bod kwamen: het gebruik van witruimte, ontwerpen aan de hand van een boxmodel, typografie, leesrichting en kleurgebruik. Enkele andere tips om tot een beter ontwerp te komen als developer: gebruik een bestaand (CSS) framework of maak gebruik van bijvoorbeeld jQuery UI.

Designing Beautiful Software

Met grote verwachtingen ging ik naar deze talk gegeven door Matthew Weier O'Phinney (project lead van Zend Framework). De talk begon met de vraag: "what is beautiful software design?". Aan de hand van een code voorbeeld (het versturen van een shop email) werd er een simpele checklist zonder problemen afgetikt. Later werden er requirements aan de mail functie toegevoegd waardoor het nieuwe code voorbeeld een stuk groter werd. Een logische evolutie was het omvormen naar een class. Bij elke aanpassing van de code werd opnieuw de vraag gesteld: "is it beautiful?". Hoe complexer de code hoe meer er komt kijken bij het schrijven van "mooie code". Composition, abstraction, interfaces, object relations, de voorbeeld mail code bleef groeien in omvang maar dit zorgde er tegelijkertijd voor dat alle gebruikte elementen herbruikbaar werden en "future proof".

Tot slot kwam Matthew eigenlijk tot een aantal vragen om te kijken of je eigen code "mooi" is:

  • is het onderhoudbaar?
  • kan ik het gedrag veranderen wanneer nodig?
  • kan het getest worden?
  • is het leesbaar?

Deze talk voldeed zeker aan mijn verwachtingen en maakte de vorige design talk weer helemaal goed. Tijd voor lunch!

Elasticsearch {r}evolution

Na een lunch met een ruime keuze aan broodjes was het tijd voor 'Elasticsearch {r}evolution'. Naast MySQL full text search, Lucene, Solr en Sphinx bedacht ik me dat elasticsearch misschien een mooi alternatief (of een toevoeging) kan zijn aan het rijtje met bestaande zoekoplossingen, vandaar het bijwonen van deze talk.

De talk werd gegeven door Andrei Zmievski (project zoals: PHP, Smarty, Unicode…). Bij het begin werd al meteen aangegeven dat de talk is een snel tempo gegeven zou worden aangezien de talk normaal gezien een uur duurde en er nu een 45 tal minuten waren voorzien. Net als bijvoorbeeld Solr is Elasticsearch gebaseerd op Lucene. Een belangrijke eigenschap is dat Elasticsearch REST based is. Het gebruik van ES zag er erg eenvoudig maar compleet uit. Andrei waagde zich aan (succesvolle) live coding exempels, wel met de nodige voorbereiding natuurlijk maar het blijft toch altijd maar de vraag of alles goed gaat. Fuzzy search was ook een feature die zonder problemen werkte en erg handig kan zijn wanneer je gebruiker bijvoorbeeld niet precies weet hoe hij een bepaald woord moet spellen. De ingebouwde analyzers kun je gebruiken om ervoor te zorgen dat 'café' ook wordt gevonden met de zoekterm 'cafe'. Ook query strings behoorde tot de featurelist zoals je die kent van bijvoorbeeld google: 'php array -php.net'. ES is met snelheid, flexibiliteit, en sharding/replication in het achterhoofd gebouwd. In no-time heb je als developer een zoek cluster opgezet die vervolgens bloedsnel is. Ook de fallbacks die ingebouwd zijn zoals een gateway klinkt allemaal erg doordacht. Andere leuke features zijn filters, facets, geo search, percolator en rivers. Deze laatste is een plugin die externe data kan indexeren zoals tweets en wikipedia artikelen. Dit zorgt ervoor dat je zelf geen cronjob meer hoeft te schrijven om tweets zelf op te slaan in je database en hierop te querien wanneer je deze doorzoekbaar wil maken of de populaire termen wil verzamelen.

In de talk kwamen een groot aantal voorbeelden en features naar voren, te veel om op te sommen. Elasticsearch is iets wat ik zeker op korte termijn wil gaan uitproberen (lees aanstaande maandag). Het zier super uit en is echt echt super snel!

The API dilemma

Bij E-sites krijgen we veel te maken met allerhande API's. Niet alleen met externe API's komen we vaak in aanraking maar ook hebben we zelf een aantal API's draaien in websites die andere partijen gebruiken om te communiceren met onze data. Aangezien je nooit genoeg kan weten over API's leek me dit een interessante talk.

De talk begon met een snelle overview van wat een goede API maakt, zaken zoals documentatie, naamgevingen en afspraken kwamen ter sprake. Gedurende de talk deelde Chris Cornutt een aantal tips. Begin klein, biedt niet te veel opties aan want uitbreiden kan altijd nog was de boodschap. Zorg er verder voor dat elke method input verwacht en output geeft aan de gebruiker. Wil je dat andere gebruikers sneller je API gaan gebruiken? Zorg dan voor een opensource library en stel deze beschikbaar. Ook kwamen er een aantal valkuilen aan bod zoals performance, ondersteuning, rate limiting, privacy, feedback of het juist het gebrek aan.

Een talk waarin ik graag code voorbeelden had gezien, desalniettemin wel interessant maar niet heel vernieuwend. Een hoop besproken onderwerpen waren 'common sense'.

Separation of concerns

Hoewel het eerst de bedoeling was om bij de talk "Fast, Not Furious" aanwezig te zijn toch maar besloten om een oud collega (Joshua) te gaan aanmoedigen.

Als beetje developer zou je natuurlijk al bekend moeten zijn met het concept separation of concerns. Toch is een opfrissingscursus nooit een slecht idee en in iedere talk is er wel iets nieuws te leren.
Aan de hand van een case (het ophalen van tweets en Facebook items) kwamen de verschillende pijlpunten van separation of concerns in het begin van de talk aan bod. De rest van de talk bood een korte MVC opfrissing en ging dieper in op onderwerpen rondom separation of concerns zoals dependency injection, reusability, maintainability, code quality, isolation.

Designing HTTP Interfaces and RESTful Web Services

De laatste talk van die dag werd gegeven door David Zülke. Een spreker die altijd wel humor weet te brengen in zijn talks. Ook dit keer zat er voldoende humor in zijn presentatie. Als eerste waren de SEO guru's het slachtoffer. Dit zijn volgens David de mensen die na het klappen van de internet bubble nieuwe banen zochten. En tegen alle developers "nein, nein, nein" riepen bij het zien van 'lelijke urls'. Nadat de toon gezet was ging David dieper in op API's al dan niet met SOAP, POST, XML, HTTP. David maakt een aantal sterke punten tijdens zijn bespreking over REST services en URL's. Ook de Twitter API die we bij E-sites regelmatig aanroepen bleef niet buiten schot. De sessie ronde af met meer praktische voorbeelden van hoe een webservice eruit zou moeten zien en aan welke regels de service zich zou moeten houden. Een tip om te houden: maak gebruik van links in je XML's die je returned aan je client vanuit je service. Links zijn makkelijk te volgen voor een client en geven jou als developer de vrijheid wijzigingen door te voeren qua url opbouw bijvoorbeeld.

Tijd voor een hotel check-in, een hapje eten en een eerste EK 2012 wedstrijd!

Het cookiemonster: de gewijzigde Telecomwet

Door E-sites

De gewijzigde Telecomwet is eind mei in werking getreden. Dit betekent dat internetgebruikers voortaan toestemming gevraagd moeten worden voor… - Lees meer

Lees verder