BOB2017

Auch dieses Jahr hatte ich die Gelegenheit wieder die BobKonf in Berlin zu besuchen, die wieder einmal hervorragend organisiert war und ein breites und vor allen Dingen interessantes Spektrum an Themen bot. Hier eine kleine Zusammenfassung meines Konferenz-Tages:

Why Functional Programming Matters (John Hughes)

Eine hervorragende Keynote mit sehr vielen Leseempfehlungen. John Hughes hat diesen Vortrag schon bei einigen anderen Gelegenheiten gehalten, deswegen kann man ihn sich bequem bei Youtube anschauen, ohne auf die Aufzeichnung von der BobKonf warten zu müssen.

The Future of Front-end Development: A Comparison (Alexander Thiemann)

Alexander war letztes Jahr der Session Chair bei meinem Talk über Elm bei der Bob und wir haben uns vor und nach dem Talk ausgetauscht. Deswegen wusste ich, dass er Elm skeptisch gegenüber steht und war gespannt welche Alternativen er in seinem eigenen Talk vorstellt beziehungsweise wie sein Vergleich verschiedener Front-end Technologien ausfällt.

Wenig überraschend fiel der Vergleich tatsächlich nicht zu Gunsten von Elm aus, stattdessen sieht Alexander das meiste Potential bei PureScript. Die beiden anderen vorgestellten Technologien empfehlen sich durchaus auch für bestimmte Anwendungsfälle: TypeScript, wenn man ein Team ohne funktionalen Hintergrund hat und GHC.js, wenn man sehr Haskell-orientiert ist und sich auf die durchaus nicht einfache Konfiguration zu Gunsten einer sehr umfangreichen Infrastruktur einlässt.

Sehr schade fand' ich, dass im Vergleich einige Dinge gar nicht zur Sprache kamen: Was ist mit ClojureScript, BuckleScript, Fable und ReasonML? Wenigstens ein Ausblick wäre nett gewesen. Auf der anderen Seite wollte Alexander nur Dinge präsentieren, die er selbst schon in Produktion eingesetzt hat - was sehr löblich ist.

Shell-Scripting mit Haskell (Franz Thoma)

Franz Thoma hat einen guten Überblick über Shell Scripting mit Haskell gegeben. Besonders interessant daran ist, dass es auf der einen Seite eine hübsche Möglichkeit ist um Haskell anhand kleiner Projekte zu lernen, auf der anderen Haskell in Produktion (oder wenigstens für den internen Gebrauch) zu schummeln. Leider wurde ein durchaus nicht zu vernachlässigender Nachteil der Technik schon während der Präsentation deutlich: Die Scripte werden von GHC interpretiert, das heißt bei jeder Script-Ausführung hat man die Start-up Zeit von GHCi. Das macht sich leider negativ in der Ausführungsgeschwindigkeit bemerkbar...

Functional Geekery hatte eine Episode in der der Autor der verwendeten Bibliotheken sein Werk und seine Motivation darstellt (hörenswert!).

Immutable Hash Maps (Peter Schuck)

Die Clojure-Implementierung von Datenstrukturen hatte und hat ziemlich großen Einfluss auf andere funktionale Sprachen und darf wohl weiterhin als state-of-the-art gelten. Dieser Vortrag hat dennoch gezeigt, dass weitere Verbesserungen hinsichtlich der Performance und der Code-Qualität möglich sind.

Bayadera: Bayes + Clojure + GPU (Dragan Djuric)

GPUs sind super in number crunching, aber unangenehm (weil low level-ig) zu programmieren. Dragan Djuric präsentiert in seinem Talk, wie man mittels der von ihm geschriebenen Clojure-Bibliotheken die Vorzüge von GPU-Programmierung nutzt, ohne die Schmerzen zu haben. Die Performance, die er damit erzielt, ist schon ziemlich beeindruckend.

Definitiv ein Framework, das man im Auge behalten sollte (sofern man sich für High Performance Machine Learning interessiert).

Functional package management with GNU Guix (Ricardo Wurmus)

Dieser Vortrag war mein Highlight der Bob. Obwohl ich schon vorher von dem funktionalen Paketmanager Guix und der Skriptsprache Guile ("GNU Scheme") gehört hatte, war mir nicht klar, wie mächtig und cool diese Tools sind.

Guix ermöglicht es nicht nur, dass man jederzeit einen bestimmten Stand von Pakten auf seinem Betriebssystem wiederherstellen kann, sondern auch das Anlegen von virtuellen Umgebungen: Ähnlich wie virtualenv in der Python-Welt, nur halt auf Betriebssystem-Ebene und für alle Arten von Paketen. Das Anlegen und Wechseln von Umgebungen ist einfach möglich.

Auch das Anlegen von noch nicht vorhandenen Paketen (aktuell kennt die Verwaltung "nur" 4.500) ist einfach: Es gibt komfortabeles Tooling und die Konfiguration erfolgt in leicht lesbarem (!) Guile-Code. Wenn ich das Konzept richtig verstanden habe, kann man so auch beliebige andere Quellen, d. h. andere Paketmanager einbinden.

Funktionale Programmierung in einer kleinen Firma (Raichoo Ketchum)

Es ist viel einfacher sich hinterher zu entschuldigen, als vorher um Erlaubnis zu bitten.

Raichoo Ketchum hat dieses Zitat von Grace Hopper angeführt und es fasst auch sehr gut seinen Vortrag zusammen: Um funktionale Programmierung durchzusetzen ist es manchmal das Beste einfach zu machen. In der Regel überzeugen die Ergebnisse, am Ende sind alle zufrieden unst es ist gar nicht nötig sich zu entschuldigen...