Ich hab meine ersten Voxxed Days Vienna als überschaubare, angenehm kleine, Entwickler Konferenz wahrgenommen. Sie punktete mit internationalen Sprechern, interessanten Vorträgen und guter Verpflegung. Anregend waren außerdem die technischen Gespräche in den Pausen, mit Kollegen und angetroffenen ehemaligen Kollegen.

Tag 1

Eingeleitet wurde am ersten Tag mit dem Talk A history of computer programming, dessen Kernaussage für mich war: „Wir machen das schon länger als man denkt“. Beeindruckend waren die Bilder von den damaligen Maschinen mit ihren mechanischen Programmen.

Nach dem Vortrag hatte man dann die Wahl aus 3 Möglichkeiten. Ich hab mich für Migrating to Microservice Databases: From Relational Monolith To Distributed Data entschieden. Für mich war folgendes die wichtigste Aussage: „Will man keine Ausfälle bei Migrationen hilft es die alten Systeme laufen zu lassen während man die Erneuerungen parallel installiert. Läuft alles, kann man dann stückweise tauschen. Wendet man dieses Prinzip bei Daten an, ist es ratsam nichts gleich zu löschen. Stattdessen sollte man die alten Daten lieber verstauben lassen und erst wenn die Wahrscheinlichkeit hoch genug ist, dass sie keiner mehr braucht, löschen“.

Mein nächster Vortrag war The Art Of Clean Code auf den ich mich schon gefreut hatte. Und er hat auch nicht enttäuscht, wenn auch für mich nicht viel neues dabei war. Hier in meinen Worten ein paar Punkte: Ratsam ist wie eh und je, was man vorfindet ein Stück besser zu hinterlassen. Stolz und Angst sind schlechte Gründe Code nicht zu überarbeiten. Werkzeuge wie GIT und die IDE können wirklich gut unterstützen und man soll sie sich zu eigen machen und nutzen um den Code sauber zu halten. Die Meisten von uns arbeiten im Team, was man nicht vergessen sollte. Wissen gilt es zu verteilen, Konventionen sollte man erarbeiten und sich daran halten. Allein schon Vertrauen ins Team kann den Code von vielen unnötigen Absicherungen befreien. Kommentare die nicht gepflegt werden richten mehr Schade an als Nutzen. Es ist besser über sprechende Namen und kleine Strukturen (dadurch mehr sprechende Namen) den Code zu dokumentieren.

Darauf folgte Microservices with Kafka. Die Quintessenz dieses Talks war für mich folgende: Für das Team des Vortragenden hat es sich ausgezahlt einen schnellen Broker (Kafka) mit weniger Funktionen zu verwenden und die benötigten Features selbst zu implementieren. Auf diesem Weg konnten für ihre Problemstellung bessere Ergebnisse erzielt werden, als es zum Beispiel mit RabbitMQ möglich gewesen wäre. Damit wäre zwar weniger Entwicklungsaufwand angefallen, dafür ist RabbitMQ aber wesentlich langsamer (in ihrem speziellen Fall war eine hohe Performance ausschlaggebend).

Von dem Beitrag Offline-first apps with WebComponents hatte ich etwas anderes erwartet als präsentiert wurde. Ich hätte gern mehr über Design, WebComponents und den Browser Caching Möglichkeiten gehört. Mitgenommen habe ich jedoch, dass man sich auf JavaScript Seite mit PouchDB relativ einfach eine synchronisierbare offline Datenbank aufbauen kann.

Danach habe ich CQRS and Event Sourcing with Lagom besucht. Ich habe mich mit Lagom im Vorhinein für ein Projekt von mir schon ein wenig auseinander gesetzt. Mich hat dann gefreut, dass der Sprecher zu den Gleichen Schlüssen kam. Lagom wurde auch von Ihm als noch nicht produktionsfähig eingeschätzt. Er warnte ebenso davor, dass es auf mächtigen Frameworks basiert. Das macht es gefährlich wenn nicht alles wie erwartet funktioniert und man die Frameworks nicht gut kennt.

Abgeschlossen habe ich den Tag mit ThinkAsync in Java8. Meine Erfahrungen was funktionales Programmieren in Java8 angeht sind gemischt. Ich komme von JavaScript und Scala und bin vor Allem durch Scala schon verwöhnt, vielleicht verzogen? Java8 hat für mich das Thema jedenfalls nicht so integriert, dass ich mich gut und intuitiv zurecht finde. Ich hatte gehofft dieser Talk lindert meine Java8 Schmerzen ein wenig, und zumindest glaube ich jetzt etwas besser zu verstehen aus welcher Ecke Java sich diesem Thema genähert hat, und zwar Multithreading. Der Sprecher meinte scherzhaft, man könne jetzt in Java multithreaded Applications schreiben ohne das Wort Thread schreiben zu müssen. Und wenn man es aus diesem Winkel betrachtet erklärt das warum es z.B. viel auch als Variation „async“ gibt. Es wird allerdings noch ein wenig dauern bis ich mich an Java8 in dieser Hinsicht gewöhnt habe.

Tag 2

Gestartet hat mein zweiter Tag mit Resilient Java-based microservices with Kubernetes. Interessant war zu erfahren, dass Google schon lange intern mit Containern (wie z.B. von Docker generiert) arbeitet, was auch erklärt warum das Thema dort gut ausgearbeitet ist. Mitgenommen aus dem Talk habe ich: „Wir haben in der Cloud Pods für Eure Container und wenn Ihr mit unserem System arbeitet ist sehr viel schon automatisiert“.

Danach ging es zum Talk SOA lessons learnt (OR Microservices done better). Der Vortragende war erfrischend kritisch gegenüber aktuellen Trends. Er mahnte zudem, nicht die gelernten Lektionen aus Fehlern aus der Vergangenheit zu ignorieren. Zum Beispiel, dass das Schreiben von verschiedenen Prozessen in eine geteilte Datenbank zu unerwarteten Problemen führen kann.

Meine nächste Vorstellung war Machine Learning Exposed: Introduction to Machine Learning Hier hat ein sympathisches Duo die Grundlagen und etwas von den mathematischen Hintergründen von Machine Learning erörtert. Auch wenn einige meiner Kollegen hier schon munter unterwegs sind, muss ich leider gestehen, dass dieses Thema noch auf meiner Todo-Liste steht. Um so mehr hat es mich gefreut, dass die Vortragenden für mich die Magie dahinter ein wenig entschlüsselt haben. Es ähnelt für mich dem was ich in meiner Ausbildung unter mathematischen Näherungverfahren kennenlernt habe.

Ich bin dann gleich dabei geblieben und so schloss sich der Vortrag danach Machine Learning Exposed: Deep Learning and Reinforcement Learning dem Vorhergehenden an. Leider ist Ihnen hier dann die Zeit davon gelaufen, ich hätte gerne mehr von Ihren Erklärungen gesehen.

Die vorletzte Präsentation die ich besuchte war Hiding secrets in a Vault. Secret meint hier Konfigurationsparameter von Applikationen. Es wurde zu recht empfohlen diese aus der Applikation zu extrahieren und in einem eigenen, geschützten Config-File abzulegen. Dieses sollte dann auch nicht ins VCS eingecheckt werden. Warum, wurde mit Beispielen von dadurch finanziell geschädigten unterstrichen. Zudem wurde Vault vorgestellt, ein Tool das beim Ver- und Entschlüsseln hilft.

Als Abschluss gabs dann noch Flying services with a drone. Der Titel war für mich ein wenig irreführend aber der Vortrag war gut aufbereitet und amüsant. Mitarbeiter von TomTom haben Ihr „Spass Projekt“ vorgestellt, bei dem Sie einige Flug-Drohnen vernichtet haben, viel mit Image Processing probiert haben, nicht ganz zum gewünschten Ergebnis kamen, aber dennoch einen Nutzen davon hatten.

Ich hatte von den Voxxed Days Vienna auf alle Fälle einen Nutzen. Viele gute Tipps, aber vor allem viele gute Denkanstöße. Danke an die Veranstalter.