Terugblik op RailsConf Europe, Berlijn 17-19 september
Het was wel apart om op RailsConf rond te lopen als Java ontwikkelaar. Een unieke mogelijkheid om een Ruby conferentie te verslaan voor de java wereld. Maar voor Ruby ontwikkelaars is hier natuurlijk ook genoeg te vinden.
Ondanks een aantal licht puntjes viel de conferentie over het algemeen een beetje tegen. Zeker als je bedenkt dat je er bijna €600 voor neer legt. Er waren meerdere mensen die RubyEnRails in Amsterdam beter vonden. Misschien komt het door de beperkte blik van deze conferentie, RubyConf is vast een stuk spannender.
Om je een beetje te helpen met dit verslag is elke presentatie gemarkeerd op interesse gebied:
- [A] Algemeen – bevat algemene ideeën die door alle ontwikkelaars toepasbaar zijn
- [J] Java – van nut voor de Java ontwikkelaar
- [R] Ruby – van nut voor de Ruby ontwikkelaar
- [T] Talen – van alles voor taal enthousiastelingen
[A] Wees een artiest – Dave Thomas
De bekende auteur van The Pragmatic Programmer is ook een fantastisch spreker. Hij spreekt over kunde (engineering) en kunst (art).
There is no such thing as software engineering. The equivalent of building a bridge is taking a whole lot of dirt and filling in the hole.
Daarna draait hij het om: we zijn eigenlijk software artiesten, met dezelfde problemen: ‘writer’s block’, ‘not knowing when to stop’ en ‘satisfying the customer’. Zijn oplossingen: gewoon jabber typen en wachten tot er wat komt, scetches en andere studies maken (prototypes, tracer bullets en explorerend testen), ontwikkelen in iteraties van vaste lengte, en tot slot de klant goed bestuderen zodat je zijn intentie begrijpt en niet alleen zijn woorden (vergelijking: een kiekje tegenover een portret).
Enigszins inconsistent zegt hij daarna dat kunst en kunde eigenlijk hetzelfde zijn:
There is no engineering without art.
There is no art without engineering.
Zoals gebruikelijk eindigt Dave met een oproep. Deze keer:
Be an Artist.
Sign your work.
Dat laatste bedoelde hij overigens vrij letterlijk. Een inspirerend praatje voor programmeurs van alle rangen en standen.
[R] Rebel wordt vakman – DHH, David Heinemeier Hansen
Het praatje van de oorspronkelijke ontwikkelaar van Rails begin erg saai. Op verschillende manieren herhaalde hij dat de revolutie voorbij is. Rails is niet meer de underdog maar gewoon een van de gevestigde frameworks geworden: van revolutie naar evolutie, van rebel naar vakman. Uiteraard laat hij hierna de nieuwe mooie dingen van het snel verwachte Rails 2.0 zien.
[R] Slimme dingen – AI in Rails
De sprekers van het Spaanse bedrijf Bee tonen een aantal eenvoudig te gebruiken Ruby libraries voor het doen van Bayesiaanse netwerken, Bayes classificaties en Genetische Algoritmes. Alleen de laatste toonden ze in iets meer detail.
[-] Uniforme data – Service Data Objects (SDO) en Service Component Architecture (SCA) in Rails
Enigszins schoorvoetend presenteert Doug Ridwell van IBM dit idee. SDO is een manier om disparate typen databases op een consistente manier aan te bieden aan een applicatie. Op zich zijn de ideeën aardig, maar helaas is geen concrete code (ook geen prototypes) en had Doug net niet genoeg onderzoek gedaan om het helemaal geloofwaardig te maken. Een aantal mensen in het publiek zijn enthousiast, de meesten zien het als een van die enge enterprise dingen en haken af.
[AR] Het vergeten kind: CSS
Geoffrey Grosenbach, senior visionair van het eenmanszaak TopFunky, geef een onderhoudende presentatie waarin hij vertelt hoe je in Rails gemakkelijk CSS kunt genereren. Zeer innovatief is het HAML-tool SASS waarmee je verrijkte CSS kunt schrijven wat op runtime naar normale CSS wordt omgezet. Heel cool is dat je berekeningen kunt doen met afstanden en kleuren! Bijvoorbeeld: !roze = #ff1493; color: roze - #333333 produceert een donkerder roze.
[RT] Een alternatief Ruby – Rubinius
Evan Pheonix, hoofdontwikkelaar van Rubinius, verteld de stand van zaken met deze alternatieve Ruby implementatie. Een van de redenen dat Rubinius ontwikkeld wordt is dat de oorspronkelijke Ruby (MRI, Matz Ruby Implementation) geen voortgang toont. Daarnaast is communicatie vanuit de westerse wereld met de Japanse ontwikkelaars moeizaam; slechts 1 op de 20 e-mails naar de ruby-core e-mail lijst worden beantwoord. Daarnaast neemt Rubinius vele barrières weg waar MRI nu tegenaan loopt door de C implementatie. In Rubinius zijn de standaard libraries zoveel mogelijk in Ruby geschreven en is er alleen een kleine C runtime. Daarnaast maakt Rubinius gebruik van byte codes om zo net als Java op runtime optimalisaties uit te kunnen voeren.

Evan toont zijn humor door doodleuk allerlei grafiekjes te presenteren (geheugengebruik, performance vergelijkingen) die volledig verzonnen zijn.
Een erg interessant project dat ondanks de hoge moeilijkheidsgraad mijn sympathie heeft en hopelijk slaagt.
[JRT] Nog een alternatief Ruby – JRuby
JRuby, de Ruby runtime voor de JVM, kan intussen Ruby code JIT compileren naar Java byte code. Hierdoor is JRuby in het algemeen sneller geworden dan standaard Ruby. Ander goed nieuws is dat een Rails applicatie nu zeer eenvoudig als WAR verpakt kan worden.
Vanuit JRuby code kun je zeer eenvoudig Java code aanroepen. Daarnaast is er veel gedaan om standaard Java classes (bijvoorbeeld java.util.Map implementaties) zich te laten gedragen als hun Ruby tegenhanger. Dat laatste zorgt ervoor dat de krachtige Ruby syntax direct gebruikt kan worden op Java objecten!
[A] Van de maker van – The rest of REST
Roy T Fielding, de bedenker van REST en zeer betrokken bij de ontwikkeling van HTTP, vertelt een grappig verhaal met de geschiedenis van HTTP. Helaas komt hij daarna niet echt uit de verf wanneer hij het model achter REST net niet probeert uit te leggen. Mijn interpretatie was dat het model achter HTTP (en REST) zodanig flexibel is, dat het op vele manier te gebruiken en misbruiken is.
Het is jammer dat de man waaraan de (internet-)wereld zoveel te danken heeft, niet krachtiger over komt.
[JR] Struts-bedenker bekeert – Craig R McClanahan
Deze Sun-medewerker en de man aan wie we Struts te danken hebben heeft eindelijk het licht gezien: hij werkt met Rails en wil niet meer terug. Mijn reactie: geen wonder; na Struts en JSF zijn er heel wat frameworks die beter te gebruiken zijn. Zijn zachte en vriendelijke manier van presenteren maakt deze achtergrond enigzins goed. Verder roept hij Rails plugin ontwikkelaars op om zoveel mogelijk uit te gaan van duck-typing, en niet te vereisen dat je controller of model een bepaalde Rails class extend.
[A] Met noodle tekeningen de enterprise in – Cindy Mitchell
Als belangrijke sponsor mocht Thoughtworks een korte presentatie houden. Tot mijn verrassing was dit een erg leuke presentatie met een unieke manier van projector gebruik. Gedurende de hele presentatie was er maar 1 pagina waarop met steeds meer noodle-tekeningentjes het hele idee dat ze wou overbrengen in beeld kwam. Haar verhaal laat de recente geschiedenis van software ontwikkeling naadloos overlopen in de voorspelling dat de volwassenheid van Rails, in combinatie met bruggen-bouwer JRuby, het mogelijk maakt om ook in de enterprise wereld snel applicaties te gaan ontwikkelen.
[JR] Hoe het zou moeten – Marcel Molina Jr, Michael Koziarski
In deze presentatie komen een aantal aardige best-practices aan bod. Het verhaal kwam voort uit de observatie dat er soms veel manieren zijn om iets te doen, maar er is niet altijd een idee van hoe je Rails zou moeten doen. Zeer nuttig voor elke Rails ontwikkelaar die zichzelf werk en moeite wil besparen.
Hier echter een aantal algemeen te gebruiken tips:
- Schrijf veel kleine functies. Dit geeft vaak beter testbare code en is daarnaast ook nog eens beter leesbaar.
- Zorg ervoor dat alle code in een method van hetzelfde abstractie niveau is. Ik vermoed dat het goed toepassen van deze regel het belangrijkste ingrediënt is voor het maken van mooie code.
[R] Kijk mij eens – JRuby at Thoughworks
Ola Bini, JRuby core ontwikkelaar en verse Thoughtworks medewerker geeft onverwacht een niet-interesante presentatie. Een aantal kleine punten:
- JRuby is erg traag in unit tests, maar sneller in productie. Mbv UnitRecord kun je unit tests sneller maken. UnitRecord geeft een database-loze database.
- Het opstarten van Rails mbv JRuby is nog te traag om fatsoenlijk te kunnen ontwikkelen
[R] Look ma, no ERB! – HAXOR
Deze absurde afkorting staat voor het gebruik van statische HTML example layout waarbij de echte data met javascript wordt opgehaald uit een relatief domme REST server. Tot mijn grote verrassing zag de javascript code er best wel schoon en leesbaar uit (het gebruikte jQuery). Dit experiment kwam voort uit een project waar de presentator (Tim Dysinger) moest werken met een grafisch ontwerper die niets van Rails moest hebben (want het was geen PHP). Ruby in de view gebruiken was dus niet goed mogelijk. Ondanks dat het er leuk uitzag, zijn er belangrijke nadelen welke dit tot een niche oplossing maken.
[A] Breng je gedachten in kaart – MindMeister
Ervaringen van het maken en in de markt zetten van het zeer mooi en bruikbaar uitziende MindMeister, een on-line tool waarmee je met meerdere mensen tegelijk een mind-map kunt maken. Heel aardig was dat ze de 10 opeenvolgende versies lieten zien van het scherm waarmee je mensen kunt uitnodigen. Zijn boodschap was dan ook dat het loont om geld en tijd te steken in een goede UI expert.
[A] Functioneel programmeren in Javascript
Een korte niet zo goed voorbereide presentatie van Ben Nolan, auteur van Behaviour.js, waarin hij uitlegt hoe je functioneel kunt programmeren in JavaScript. Belangrijk is om te begrijpen hoe Prototype‘s bind werkt. Verder moet je veel kleine idempotente functies schrijven (dus zonder zij-effecten) (hé, waar hebben we dit meer gehoord?). Daarnaast promoot Ben het gebruik van de enumerators (het voor Rubyisten bekende each ipv een for-loop). Each constructies zitten trouwens zowel in prototype als in jQuery.
[R] Hoe vullen we nog een praatje? – Het Presenter pattern
Sponsor ThoughtWorks moest blijkbaar nog een praatje vullen. In deze presentatie wordt het presenter pattern gedemonstreerd (met incomplete code) met de vele nadelen ervan. Het pattern kun je gebruiken als je view model niet overeen komt met je data model. Gelukkig komt Remco van ‘t Veer binnenkort met de plugin ActiveForm waarin hij een betere oplossing voor het probleem geeft.
[A] Fantastisch!
Met een grote glimlach kwam ik uit deze presentatie. Eerlijk gezegd ging het bijna nergens over, maar wat een presentator! Sam Aaron verteld enthausiast en met verve hoe hij met een simpele taal zeer complexe where SQL clausules kan bouwen.
———————————————————————————–
Meer weten over Ruby-specialist Finalist IT Group?

Goed om te zien dat het gat tussen Java en Ruby kleiner lijkt te worden; gezonde competitie is een positief iets.
Op het weblog van DHH die normaal nogal bot uit de hoek kan komen met betrekking tot bijvoorbeeld Sun zien we eindelijk eens een positieve post over Sun: http://www.loudthinking.com/posts/11-sun-surprises-at-railsconf-europe-2007
Nou nog hopen dat de Java community meer heil gaat zien in synergie tussen de platforms!
p3t0r September 21, 2007 7:30