Zweitag auf der Baruco 2014 - Tag 1
Zweitag war in diesem Jahr nicht nur mit 6 Mitarbeitern vor Ort, sondern war auch ein Sponsor des Events. Zu unseren Mitarbeitern gesellten sich noch weitere Entwickler von Kunden sowie ehemalige Zweitag Mitarbeiter.
Die abendliche Pre-Party zur Konferenz fand in der Mikro-Brauerei Fàbrica Moritz Barcelona statt. Im beeindruckendem Ambiente der Brauerei wurde sich zum ersten Mal beim hauseigenem Bier mit den Konferenzteilnehmern ausgetauscht und eifrig genetzwerkt.
Am Freitag stand der erste Konferenztag an. Moderiert wurde das Event von Jeremy Walker, welcher zu Beginn kurz seine open-source Pub/Sub Library „Propono” vorstellte, um dann im Anschluss in sympathisch eloquenter Art und Weise durch das Programm zu führen. Im Folgenden wollen wir einen Überblick über die gehaltenen Vorträge und deren Kerninhalte geben, sowie eine Sammlung aller relevanten Links bieten, um einen Eindruck über die Inhalte der Konferenz zu schaffen.
Yukihiro Matsumoto: mruby:AltRuby
Matz dürfte in der Ruby Szene allen bekannt sein. Er ist der Entwickler der ersten Implementierung der Programmiersprache Ruby und somit der Urvater der kompletten Ruby Community und dieser Konferenz. In seiner Keynote ging er auf die vielen unterschiedlichen Implementierungen der Ruby-Sprache ein und stellte sein aktuelles Projekt „mruby” vor. Nachdem es Ruby Implementierung auf Basis von C, Java, Android, C++ oder auch Ruby selbst gibt, ist es laut Matz nun an der Zeit, die Freuden der Ruby Entwicklung auf den Bereich der eingebetteten Systeme zu bringen. Mruby ist somit eine leichtgewichtige Ruby Implementierung für eingebetteten Systeme, basierend auf dem C99 Compiler. Dadurch ist mruby auf einer großen Menge an Systemen lauffähig. Matz trug seinen Vortrag auf seine bekannte und „Matz“-typische Art und Weise vor. Deshalb vermisste man an der einen oder anderen Stelle ein Code-Beispiel, welches das Erzählte ein bisschen anschaulicher gemacht hätte.
Piotr Szotkowski: Standard Library, Uncommon Uses
Piotr Szotkowski nahm seine Zuschauer mit auf eine Entdeckungstour durch die unerforschten Tiefen der Ruby Standardbibliothek. Er behandelte u.a. PStore und YAML::Store als Persistenzlösungen, Webrick als pragmatische Serverlösung und DRb zum Erstellen von verteilten Ruby Anwendungen. Piotr betonte, dass die Kenntnis der bereits in Ruby enthaltenen Funktionalitäten dem Einbinden von unnötigen externen Abhängigkeiten zuvorkommen kann. Zudem sieht er das Studieren der Implementierung dieser Bibliotheken als positive Lernerfahrung. Auch wenn die erwähnten Bibliotheken keinen „Wow-Effekt“ bei erfahrenen Ruby Entwickler erzeugt haben dürften, ist das Schaffen eines Bewusstseins über bereits in Ruby enthaltene Bibliotheken ein lohnenswertes Ziel für jeden Ruby Entwickler. (Slides | Video)
Pat Shaughnessy: Twenty Thousand Leagues Under ActiveRecord
Pat Shaughnessy ist bekannt dafür den Dingen auf den Grund zu gehen. In diesem Vortrag widmete er sich dem ORM ActiveRecord und verfolgte das Ausführen einer simplen Instantiierung eines Benutzer Objektes durch ActiveRecord sowie einer Datenbank. Herausstechende Teilprozesse dieses Vorgangs sind das Erstellen eines Abstrakten Syntaxbaums durch ActiveRecord und die zugrunde liegende Bibliothek Arel sowie die Übersetzung des erzeugten Baums in einen herkömmlichen SQL String. Auf der Datenbankseite wurde der “Parse, Analyze, Rewrite, Execute” Prozess zur Verarbeitung dieses SQL Strings sowie der B-Tree Algorithmus vorgestellt. Der Vortrag von Pat war definitiv eine inspirierende und beeindruckende Tour de Force durch die Algorithmen einer der definierenden Technologien von Ruby on Rails. Die Empfehlung, seine Werkzeuge und Frameworks besser kennenzulernen, können wir nur bestätigen.
Emily Stolfo: Release Responsibly
Emily Stolfo, Entwicklerin bei Mongo DB, hielt einen Talk über das richtige und verantwortungsvolle Vorgehen beim Veröffentlichen neuer Versionen von Software. Dabei legt sie den Fokus auf das Veröffentlichen von Ruby Gems durch OpenSource-Entwickler. Als Ausgangsthese beschreibt sie ein Dilemma zwischen Innovation und Stabilität in der Ruby-Welt durch das viele Entwickler in eine Dependency-Hölle rutschen.
Als Richtlinie für den richtigen Umgang mit Gem-Aktualisierungen beschreibt sie drei Hauptpunkte:
- Eine simple Api (simple API)
- Klare Kommunikation (clear communication)
- Semantisches Versionieren (semantic versioning)
Das Konzept einer simplen API führt Stolfo auf das Design Pattern von gov.uk “Do the hard work to make it simple” zurück. Dabei sollten die Programmier-Schnittstelle für die Anwender möglichst einfach gehalten werden. Sie gibt zu beachten, dass dadurch das Backend sehr wahrscheinlich komplexer wird.
Das klare Kommunizieren hat als Grundvoraussetzung die Festlegung einer Strategie „was“ „wie“ unterstützt werden soll. Dabei ist zu differenzieren welche Versionen des Gems selbst und welche Versionen der zu integrierenden Software unterstützt werden. Alle Kombinationen, die unterstützt werden, müssen durch den Entwickler getestet werden. Das kann automatisiert mit Hilfe von Continous Integration Werkzeuge über eine Versionsmatrix erfolgen.
Wichtig ist insbesondere das Erstellen von Changelogs. Dort sollten alle Änderungen festgehalten werden. Das ist nicht nur für den Nutzer sinnvoll, sondern bietet dem Entwickler auch die Möglichkeit die Anpassungen noch einmal zu reflektieren. (Slides)
José Tomás Albornoz: How I built my own Twitch Plays-Pokémon
José Tomás Albornoz erzählte in seinem Vortrag die inspirierende Geschichte eines Seitenprojekts: Ohne Informatik Grundkenntnisse nahm sich José vor, einen Nintendo Game Boy Emulator zu entwickeln um anschließend virtuelle Tastendrücke durch einen Web Server auslösen zu können. Josés Weg führte ihn durch die Untiefen der Prozessor Emulation und proprietären Maschinensprachen und endete in einer karthatischen Realisierung: Der beschrittene Weg außerhalb der Komfort-Zone stellt sich als extrem wertvolle und lehrreiche Erfahrung heraus. Seiner Empfehlung die Kenntnis von neuen Technologien und Paradigmen durch Nebenprojekte zu vertiefen können wir nur beipflichten. Trotz wenig technischem Inhalt war Josés Talk einer der unterhaltsamsten und einprägsamsten Vorträge der Baruco. (Slides)
Leon Gersing: Keep Software Weird
Ein etwas unkonventioneller aber dadurch nicht minder unterhaltsamer Vortrag kam von Leon Gersing. Leon Gersing versuchte durch philosophisch-gesellschaftstheoretische Ansätze die Entwickler dazu zu bringen über ihren Tellerrand zu schauen. Dabei beschrieb er, dass auch in der Software-Entwicklung verschiedene Gesellschaftsformen vorherrschend sind. Als Beispiel führte er an, dass das agile Projektvorgehen in der Entwicklerszene von einer kleiner Gruppe (die er mit der Punk-Szene verglich) zur dominanten Szene entwickelte und traditionelle Vorgehen, wie etwa das Wasserfallmodell, immer weiter ins Abseits drängen. Vor allem beharrte er darauf, Idiome, „Design-Patterns“ und Manifeste nicht immer wörtlich zu nehmen, sondern immer zu hinterfragen und auch mal unkonventionell vorzugehen. Seinen Vortrag schloß er durch den Vortrag des Gedichtes „The Perfect High“ ab, das als Schlussfolgerung „Der Weg ist das Ziel“ hatte. Auch wenn der Vortrag nicht der inhaltlich gehaltvollste war, war es doch aufgrund seines erfrischenden und amüsanten Vortragsstils einer der anregendsten.
Ryan Levick: A Dangerous Game: Safety in Ruby
Ryan Levick referierte in seinem Vortrag über statisch typisierte Programmiersprachen, die den Vorteil bieten, dass ganze Klassen von Fehlern schon vor der Ausführung des Programms erkannt werden können. So ist es z. B. möglich mit Optionals den weitverbreiteten Fehler „undefined method for NilClass“ komplett zu verhindern. Es gibt bereits Bestrebungen, Typ-Annotationen in Ruby umzusetzen, allerdings fühlt sich dies eher aufgesetzt an und lässt sich schwer mit der dynamischen Natur von Ruby vereinen. Es kann also durchaus von Nutzen sein, sich auch statisch typisierte Sprachen wie z. B. Idris und Erlang anzusehen und diese eventuell mit in die Toolchain aufzunehmen. Der Vortrag hat dazu angeregt, über den Tellerrand zu schauen und nicht davor zurückzuschrecken dort wo es Sinn macht auch andere Sprachen als Ruby einzusetzen. Gerade im Rahmen einer Service-Orientierten Architektur lässt sich dies gut umsetzen. Getreu dem Motto „choose the right tool for the job“ soll jeweils die Technologie den Vorzug erhalten, welche am besten für das spezifische Problem geeignet ist. (Slides)
Lightning Talks
Die Lightning Talks wurden wie oft dazu genutzt, kleine private Projekte oder Erfahrungen zu präsentieren. Yorick Peterse präsentierte Oga, einen selbst entwickelten XML-Parser. Oga kommt ohne native Erweiterungen aus und ist somit plattformübergreifend und unter verschiedenen Ruby-Interpretern einsetzbar. Tobias Pfeiffer hat mit Shoes 4 eine Ruby-DSL zur Umsetzung von grafischen Oberflächen entwickelt, die ebenfalls komplett ohne native Erweiterungen auskommt und plattformübergreifend verwendet werden kann. Shoes 4 basiert dabei auf der von _why entwickelten Bibliothek Shoes. „Good“ Tom Stuart stellte mit der Burrows-Wheeler-Transformation einen Algorithmus vor, mit dem man Text zur effizienteren Komprimierung vorbereiten kann. „Evil“ Tom Stewart zeigte im Stile des wat-Talks, wie man Ruby programmieren kann, ohne Literale zu benutzen - die Frage, ob man das wirklich möchte, stellte er allerdings nicht. Phil Nash beklagte, dass seine Twitter-Bots “Chuck Norris Facts” und “Guybrush Threepwood” mehr Social Life (also Follower) haben als er. Malwine Gier gab einen kurzen Crashkurs zur Erstellung handgezeichneter Slides, während Grzegorz Witek seine Erfahrungen aus 8 Monaten Nomadenleben schilderte.
Am Abend klang der erste Konferenztag für alle Teilnehmer in der Taverne der “L’Ovella Negra” aus.
Im morgigen Blogbeitrag berichten wir über den zweiten Tag der Baruco.