Die EuRuKo 2016 in Sofia, Bulgarien

Dieses Jahr fand die EuRuKo (Europäische Ruby Konferenz) in Sofia, Bulgarien statt. Mitgefahren von der dkd ist das Ruby Team: Kieran, Luka, Nicolai und Michael.

Tag 0

Im Gegensatz zum letzten Jahr verliefen An- und Abreise absolut problemlos mit dem Flugzeug und der Metro.

Unser Hotel lag sehr zentral und in der Nähe des Kongressgebäudes (NDK). Geladen mit großem Hunger besuchten wir ein Restaurant mit bulgarischer Küche (mit für uns unaussprechbaren Namen in kyrillischen Buchstaben) und waren sehr begeistert – sowohl die Fleischesser als auch ich mit meinem Kartoffelgratin.

Zufriedener Ruby Entwickler am Spieß

Tag 1

zu früh

Am nächsten Tag waren wir vorbildlich pünktlich zur Registrierung im NDK. Überpünktlich, es waren noch wenige andere Teilnehmer/innen am Ort.
Das gab uns die Gelegenheit, die schöne Aussicht und ein zweites Frühstück zu genießen (ein interessantes bulgarisches Gebäck, würzig und gefüllt mit Käse) sowie die Stände der Sponsoren zu begutachten.

Sponsorenbereich Aussicht wird fotografiert Aussicht

Der Stand von einem bulgarischen Payment Unternehmen versorgte uns sogar mit leckerem Espresso und Capuccino, serviert von einem Barista :)

Espresso Sponsor

Eröffnet wurde die Konferenz wieder von Yukihiro Matsumoto ("Matz"), der in seiner Keynote die Features anteaserte, die beim nächsten großen Versionssprung von Ruby (Ruby 3) zu erwarten sind. Heraus stach hierbei Threading und Typing. Bezüglich Terminen gibt es keine Roadmap, außer "it will be years". Wie im letzten Jahr machte sich das Gefühl breit, dass man die Ruby Community bei der Stange halten möchte.

I don't want the Ruby community to be dead. I want it to keep moving forward!

Im zweiten Vortrag sprach Xavier Noria über Programmierstil anhand von vielen Einzelbeispielen und regte dazu an, sich stärker um guten Code zu kümmern.
Dazu passte auch der darauffolgende Vortrag von Andrew Radev, der in "Rules, Laws, and Gentle Guidelines" etwas abstrakter wurde, ein altes Paper über Object Oriented Programming heraus kramte und u. A. über das Law of Demeter und Single Responsibility Principle sprach. Er kam zu dem Schluss, dass diese Grundsätze nicht als Gesetze zu verstehen seien, sondern als Guidelines. Augenzwinkernd beendete er seinen Vortrag mit einer Anekdote und zwei eigenen Programmiergesetzen von ihm:

"You can't fit a complex, content-dependent programming principle into a tweet-length sentence." ~Radev's First Law

"Don't force-push stuff to master at 3 in the morning." ~Radev's Second Law

Nach der ersten Mittagspause (auch hier wieder gutes Essen bei Made in Home) gab es zwei Vorträge über Frameworks oder hilfreiche Software. Zunächst präsentierte Terence Lee Apache Kafka und dessen Integration in Ruby als Alternative zu bestehenden Messaging Systemen wie sidekiq. Danach hörten wir einen Vortrag über die Benutzung von GraphQL (Graph Query Language, von Facebook) mit Rails, als Alternative zum mühsamen Definieren von REST Schnittstellen. Das wäre für eines unserer Projekte in diesem Jahr ein großer Segen gewesen.

Im Vortrag, den Grace Chang von Yammer hielt, ging es über den Entstehungsprozess der Organisation eines ordentlichen Bereitschaftsdienstes statt dem häufig zu erlebenden "Alle haben Bereitschaft, weil es keine Probleme gibt". Neben Rotationsregelungen für eine soziale Verträglichkeit blieb mir auch die Idee der Incident Reports hängen.

Ausklingen ließen wir den Tag wieder mit einem schönen Abendessen im Restaurant Made in Blue, das auch wieder eine sehr herzhafte Küche anbot und die zweite Cocktailbar lieferte vorzügliche Cocktails.

cocktail cocktail

Tag 2

Der erste Vortrag des zweiten Tags ist auch derjenige, der am meisten "Buzz" erzeugte und dabei ging es dort nicht um Ruby. Der Erfinder der Sprache Elixir begann frühmorgens mit einer Einführung zu Elixir. Dies ist eine funktionale Programmiersprache, die ähnlich aussieht wie Ruby und in einer Erlang VM ausgeführt wird. Eines der Versprechen ist die konsequente Ausnutzung der heutzutage üblichen Multicore Prozessoren.

Coding for [multiple] cores is no longer the exception in 2016.

Nach der Einführung stellte er die Fault-Tolerance einer Elixir Anwendung vor, die durch die etlichen Subprozesse entsteht.
Noch beeindruckender als den Enthusiasmus, den José Valim bei seinem Vortrag versprühte, war wie die Community auf ihn reagierte. Als er das Publikum fragte, wer Elixir schon kenne, gingen fast alle Hände nach oben. Nach dem Vortrag bildete sich eine große Menschentraube, um ihm Fragen zu stellen, zuzuhören und zu diskutieren. Das brach auch nicht ab: während des folgenden Vortrags verschob sich diese Traube einfach in den Flur.

Enttäuschend war leider der Vortrag "How to Begin to Develop Ruby Core". Statt konkret zu zeigen, wie man an Ruby entwickelt, wurde nur über organisatorisches referiert. Danach blickte Carina Zona noch etwas weiter über den Tellerrand hinaus und ermahnte in "Consequences of an Insightful Algorithm" dazu, dass wir uns auch über die Auswirkungen unserer Software auf die Menschen Gedanken machen sollten und statistische Ausnahmefälle nicht unter den Tisch zu kehren.

Zum Nachmittag berichtete Ivan Nemytchenko über seine Erfahrungen beim Organisieren von Praktikas über das Internet. Danach gab es einen für das Ruby Ökosystem sehr wichtigen Vortrag. André Arko sprach über die Entwicklungen und Erfahrungen nach einem Jahr Ruby Together, eine Organisation zur Professionalisierung der Plattform Rubygems und des Package Managers bundler. Neben den Erzählungen was geleistet wurde in einem Jahr war es aber auch ein Plea for Help - die Organisation braucht viel mehr Geld, bis ein/e Vollzeit Entwickler/in eingstellt werden kann.
Außerdem machte André eine große Ankündigung:

We will merge bundler & rubygems

Den letzten Vortrag hielt Nick Sutterer, der eine Präsentation über die Evolution von APIs hielt.

Zum Abschluss hörten wir uns noch die Lightning Talks des zweiten Tags an, die naturgemäß eine unterschiedliche Qualität hatten. Eine Entwicklerin von Deliveroo ermahnte dazu, dass die Antworten von unseren APIs bessere Antworten liefern sollten als "Internal Server Error" und verglich das sehr anschaulich mit Erfahrungen in der Gastronomie. Thomas Leitner stellte sein Pet Project für PDF Erstellung und Parsen mit Ruby vor, das er leider noch nicht veröfentlicht hat. Dazu passend sollten wir im nächsten Jahr einen Lightning Talk über unsere indoctrinatr Anwendung halten - die schönsten PDF Dokumente generiert man schließlich mit LaTeX!

Als nächster Austragungsort der Euruko wurde Budapest gewählt, da freuen uns wir schon drauf!

Zu guter letzt möchte ich nur noch einen großen Dank an Michi aussprechen, der uns die ganzen Tage über immer vorbildlich von Restaurant zu Bar und Hotel navigiert hat, sowie die Recherche zum Finden von guten Locations übernahm. Das alles hätte höchstens noch besser laufen können, wenn unser lieber Kollege Ivaylo (der aus Sofia kommt) dabei gewesen wäre.

Links zu Slideshares der Vorträge:

Diejenigen, die bisher zu finden waren

  1. Hiroshi SHIBATA - How to Begin to Develop Ruby Core
    http://www.slideshare.net/hsbt/how-to-begin-to-develop-ruby-core
  2. Carina C. Zona - Consequences of an Insightful Algorithm
    http://www.slideshare.net/cczona/consequences-of-an-insightful-algorithm/5-CCZON
  3. Andrew Radev - Rules, Laws, and Gentle Guidelines
    https://speakerdeck.com/andrewradev/rules-laws-and-gentle-guidelines
  4. Marc-Andre Giroux - GraphQL on Rails
    https://speakerdeck.com/xuorig/graphql-on-rails-2
  5. Ivan Nemytchenko - What I Have Learned from Organizing Remote Internship for Ruby developers
    http://www.slideshare.net/creatop/my-experiense-of-remote-internship-for-junior-ruby-developers

Und von den Lightning Talks

  1. Alex Jahraus - Feel worse. Do better.
    https://docs.google.com/presentation/d/14WvR_JhdF20OC75C-i0OuV6vRaLtSbMf7ussatcNWHM/edit#slide=id.p
  2. Victor Shepelev - Reality demo
    https://twitter.com/zverok/status/779929840057278464
  3. Thomas Leitner - Working With PDFs in Ruby
    http://talks.gettalong.org/euruko2016/
  4. André Freitas - Rails and Docker in Production at NDrive
    https://speakerdeck.com/andrefreitas/rails-and-docker-in-production-at-ndrive
  5. Krzysztof Wawer - dry-validations
    https://speakerdeck.com/wafcio/dry-validations