RailsConf eerste dag

Gepubliceerd op: 14.IX.2006 00:17 BST
Categorieën: events, rails

Eindelijk is het dan zover RailConf Europe 2006 is vandaag begonnen! En nog uitverkocht ook! Gelukkig maar, ik was een beetje bang dat het voor de helft uit overgevlogen Amerikanen en een handje vol Londonaren zou zijn maar ik hoor Frans, Italiaans, Duits en talen die ik niet thuis kan brengen. Dit is echt RailsConf Europe!

Gisteren ben ik in London aangekomen, op tijd om PizzaOnRails bij te kunnen wonen. Georganiseerd in een nachtclub met een open bar en meisjes die pizza uitdelen, goed werk van CoMinded. Als je een tijdje niet de kans krijgt een stuk pizza te bemachtigen maar wel bier wordt praten heel gemakkelijk. Een IJslander, een Zweed, een Nederlander en een Brit gesproken.

Update 11:00: opening

Update 23:00: sessies bijgewerkt

David Heinemeier Hansson

Simply RESTful, ActiveResource.. Tegenwoordig werkt het ook echt! David geeft een demonstratie en verteld CD-Baby gebruikt het in productie om verschillende rails applicaties aan elkaar te knopen. Maar het is nog lang niet af. Er is bijvoorbeeld nog geen goede conventie gevonden voor zoeken; POST /comments?author=Remco is een voorbeeld maar of dat het wordt.. David wil ActiveResource misschien niet in Rails 2.0 hebben maar andere core leden zijn het daar niet helemaal mee eens. We zien wel.

Als RailConf 2006 over Simply RESTful ging, gaat de Europe variant over Simply Helpful. Eerlijk gezegd iets waar ik me veel meer bij voor kan stellen. Over het algemeen zijn m’n controllers vrij simple en verhuis ik veel code daar naar application.rb of een class in lib/.

Simply Helpful introduceert conventies in de view laag. Hoe maak je bijvoorbeeld een id in html voor een div welke een comment toont. Over het algemeen als "comment_#{comment.id}" maar waarom moet ik dan bijvoorbeeld 2x comment schrijven? David is daar, terecht, erg gevoelig voor. Met de simply helpful uitbreiding kan je het volgende schrijven (voorbeelden zijn van mijzelf, kan die DHH niet meer reproduceren):

<% div_for @comment do %>
  <%= @comment.title %>
<% end %>

en dit levert:

<div id="comment_34" class="comment">
  Wee cool!
</div>

Dat is mooi, vooral om de javascript helper methodes ook uitgebreid zijn. Zo kan je in plaats van:

page["comment_#{@comment.id}"].visual_effect(:highlight)
page.select('.comment').each { |c| c.hide }

het volgende scrhijven:

page[@comment].visual_effect(:highlight)
page.select(Comment).each { |c| c.hide }

De helpers zijn zich dus nu ook bewust van de #comment_123 en .comment notatie zoals prototype/scriptaculous al doet met bijvoorbeeld drag’n’drop.

Als je edge draait kan je hier al gebruik van maken door de simply_helpful plugin te installeren.

Kathy Sierra, creating passionate users

Kathy staat bekent om haar goede presentaties en die reputatie misstaat haar niet. Ze schrijft voor de “Head first” serie een boeken serie bij O’Reilly waarin veel gebruik wordt gemaakt visuele middelen om de lezer te helpen.

Ze vertelt over de beleving van gebruikers en hoe het gereedschap dat software ontwikkelaars voor hen maken niet in de weg mag zitten maar ze instaat moet stellen “kick ass” te zijn in waar ze mee bezig zijn. Slechte documentatie wordt aangehaald, hier wordt alleen “the tool” beschreven en niet hoe je ermee specifieke problemen oplost. Ze legt uit hoe je gebruikers kan helpen uit de “suck at it” fase naar de “passionate about it” fase te helpen.

Een erg leuk praatje met veel herkenbare truuks welke lezers van de “Head First” boeken zullen herkennen; gezichten en visuele grapjes om aandacht vast te houden, conversatie stijl gebruiken om gebruiker betrokken te houden. Erg interessant en vermakelijk!

David Goodlad, Rails speaks C

Een beetje teleurgesteld dat ik de “Unobtrusive Ajax with Rails” sessie niet bij kon wonen, heb ik me bij de “Rails speaks C” aangesloten. De spreker geeft een korte inleiding over het schrijven van C extenties en haalt daarbij SWIG aan een library om glue code te genereren tussen C en scripting talen zoals Ruby.

Een belangrijke problemen bij een dergelijk aanpak zijn garbage collection en het gevaar dat een rails proces enorm veel geheugen gaat gebruiken als je grote libraries zoals RMagick inzet. Een hele troep mongrels kan zo heel wat resources vergen op je server.

Hij sluit als met BackgrounDRb een plugin om zware processen buiten je rails applicatie te draaien door een werker proces op te starten via DRb.

Peter Krantz, Building accessible web interfaces in Rails

Peter begint het de mededeling dat hij alle conferenties over accessibility onzin vind omdat deze voor het verkeerde publiek zijn. Hij vind dat juist RailsConf en dergelijke een goede plek zijn om ontwikkelaars op de drempels te wijzen die mensen met een handicap tegenkomen op het web.

Daarna bespreekt hij de media die een ontwikkelaar tot z’n beschikking heeft om informatie over te brengen: Tekst. Hij laat horen hoe iemand die gebruik maakt van een screen reader het web ervaart. Dat gaat gemiddeld met 100 woorden per seconden, het is ongelofelijk hoeveel informatie mensen kunnen verwerken die aan screen-readers gewend zijn!

Om er achter te komen wat een screen-reader allemaal opleest heeft hij fangs ontwikkelt, een firefox plugin die in tekst uitdrukt wat populaire screen-readers voorlezen. Daarnaast heeft hij een ruby gem, raakt, beschikbaar gesteld waarmee HTML pagina’s op drempels getest kan worden, dingen als het gebruik van <i> en <b>, tabellen voor layout, links zonder betekenisvolle inhoud en afbeeldingen zonder alt attribuut. raakt is gemakkelijk in functionele tests op te nemen, ik heb nu al een paar dingetjes in deze blog gevonden..

Eleanor McHugh, Camping: Going off the Rails with Ruby

Deze sessie over camping is jammer genoeg erg moeilijk te volgen omdat mijn plat-engels niet vloeiend genoeg is. Er wordt verteld over het gebruik van de Ruby/Pcap extension library om DNS te sniffen maar wat het verband met het über stoere web framework camping is blijf een mysterie. Wat ik wel kan verstaan is echter heel vermakelijk, jammer dat ik de helft moet missen..

David A. Black, Database engineering and Rails

David Black, één van de organisatoren van deze conferentie, stelt de vraag of rails wel genoeg helpt om een datamodel te laten voldoen aan de 6 normal forms zoals deze aan tientallen jaren door database experts worden gehanteerd. Waarom zou je de web standaarden wel religieus ondersteunen maar de database standaarden niet?

Automagische velden zoals created_at en de counter caches zijn absolute zonden in de database wereld en volgens onze spreker moet daar aandacht aanbesteed worden. Een rails core ontwikkelaar in het publiek geeft aan dat er aandacht voor is maar dat het probleem erg ingewikkeld is omdat bijvoorbeeld in het geval van caches de statusloze natuur van rails het moeilijk maakt dingen buiten een sessie of een database te “onthouden”.

Daarnaast zijn de databases die door het gebruik van ActiveRecord ontstaan typisch application databases. Een dergelijk aanpak heeft z’n voordelen maar levert problemen als andere applicatie er ook direct gebruik van gaan maken, iets wat in grote organisaties gebruikelijk is. Op dat moment is de applicatie niet meer de enige eigenaar van de database kan deze die niet meer ongestraft het schema aanpassen.

Thomas Fuchs, Adventures in JavaScript Testing

Thomas Fuchs, ontwikkelaar van script.aculo.us, laat zien hoe je unit test kan schrijven voor je JavaScript libraries. Hij heeft allerlei test frameworks voor JavaScript bekeken maar toch besloten om er zelf een te schrijven, geïnspireerd door Test::Unit. Hij neemt de bijna de hele API en ja het lijkt sprekend op Test::Unit.

M’n verveling en gevoel dat ik beter naar de “Localisation of Rails applications” sessie had kunnen gaan verdween toen hij de javascript_test plugin introduceerde. Deze plugin bevat een generator welke test templates voor je kan genereren en stelt je in staat deze tests met rake test:javascripts. Deze rake taak start voor alle beschikbare browsers op je ontwikkel machine een browser, draait de tests en geeft de resultaten terug zodat ze in de console gerapporteerd kunnen worden. Knap werk hoe deze tests geïntegreerd zijn in!

Het testen beperkt zich tot unit tests, functionele tests zijn jammer genoeg heel moeilijk te maken om dat browser het niet toestaan om events te genereren zonder dat een gebruiker aan het klikken is. Er zijn allemaal dure tools beschikbaar om dit soort klik-gedrag op te nemen en weer af te spelen maar de resulterende tests zijn moeilijk te onderhouden. Misschien dat browser ontwikkelaars hier in de toekomst hulp kunnen bieden.

Rails Core Team Panel Discussion

Na een biertje en een hapje bij een Indier in de straat met mede conferentie ganger, begint de panel discussie. De vragen voor het core team zijn in de loop van de dag verzamelt door de heer Black. Ik vond de vragen niet zo interessant en zal er verder ook niet op in gaan.

Het enige wat me opviel is dat een vraag over accessibility liet doorschemeren dat de panel leden geen idee hebben wat mensen met een handicap allemaal met een computer kunnen. Een beetje jammer..

David Heinemeier Hansson

Door technische probleempje was de ochtend sessie van DHH wat ingekort en hadden we nog wat te goed. Het deel waarmee bij vanmorgen z’n praatje wilde af maken was een reactie op de manier waarop er gereageerd is op de het security probleem van een paar weken geleden.

Er is een hoop negatieve publiciteit geweest wat DHH als “Vendoritis” kenschetst. Hiermee bedoelt hij dat mensen die helemaal niets aan rails hebben bijgedragen op dat moment reageerde alsof ze een product hadden gekocht dat ermee op was gehouden.

Hij is fel en grof, “I do like to say fuck you!”, en haalt de MIT License (waar rails onder valt) nog eens aan;

DHH.translate(MIT_LICENSE)
# => "I DON'T OWE YOU SHIT!"

Ik heb een fantastische dag gehad in London vandaan. Hopelijk wordt het morgen net zo leuk!