Von Fraktalen und Containern – Rückblick auf das CologneJS-Meetup am 12. Dezember

Weihnachtsmärkte nennt man bekanntlich auch das Wacken der Büroangestellten. Und während auf dem nasskalten Roncalliplatz am Dienstagabend der Weihnachtsmarkt glühweinbefeuert tobte, trafen sich auf der exakt entgegengesetzten Seite des Kölner Doms Entwickler der CologneJS-Community im gemütlich beheizten Eingangsbereich der Sevenval zu Talks, Pizza und kaltem Bier.

Den Anfang sollte ein Talk von Jörn Zaefferer zu „Docker für JavaScript-Entwickler“ machen. Da Jörn kurzfristig ausgefallen war, wurde der Talk von Jörns Kollegen Martin Wilz gehalten. Jörn und Martin arbeiten an sloppy.io, einer Hosting-Plattform für Docker-Container.

Ich muss zugeben, dass ich nach wie vor dazu neige, bei der Arbeit zu viele Libraries und Tools auf meinem Rechner zu installieren. Docker ist hier eine sehr interessante Alternative. Akut wird das Problem, wenn mehrere Entwickler mit der typisch uneinheitlichen Ausrüstung aus Macs, Linux- und Windows-Rechnern an einem Projekt zusammenarbeiten. In der Regel verbringen alle Beteiligten die ersten Tage damit, die Projektarchitektur auf ihren jeweiligen Betriebssystemen zum Laufen zu bringen. Ein bemerkenswerter Vorteil, wenn man allen Beteiligten einen Container zur Verfügung stellen kann, der auf allen Plattformen gleichermaßen läuft und das jeweilige Host-System unangetastet lässt.

Martin zeigte die recht übersichtliche Docker-Konfiguration, die benötigt wird, um ein Beispielprojekt mit nginx/React-Frontend und einem Node.js/CouchDB-Backend in zwei Docker-Containern anzulegen. Einigen Zuhörern war die Möglichkeit von Multi-Stage-Builds in Docker noch unbekannt, bei denen in der ersten Stufe ein Docker-Image mit React erstellt wird. Die einzige Aufgabe der ersten Stufe ist es, die Dateien für das endgültige Image zu bauen, das dann nur noch HTML und minifiziertes JavaScript enthält. Im weiteren Verlauf ging es um das Deployment auf Produktivsystemen und die Möglichkeiten des Hostings von Docker-Containern. Martin konnte live das unproblematische Deployment bei sloppy.io demonstrieren.

Im zweiten Talk über „Image Generation in JS“ nahm uns Markus Over von ip.labs auf die Achterbahnfahrt der Suche nach der Grenze der Float-Genauigkeit von JavaScript mit. Beginnend mit einfachen Beispielen der Verwendung des Canvas-Elements programmierte er schnell die Grundlage eines Zeichenprogramms mit unterhaltsamen Optionen weit jenseits der Möglichkeiten von MS Paint. Markus Leidenschaft scheint jedoch die Generierung von Fraktalen zu sein. Mit einer überraschend übersichtlichen Menge Code erschuf er eine imposante Darstellung einer Julia-Menge, deren Parameter per Mousemove-Event modifiziert werden konnten und zoomte uns bis an die Grenze der praktikablen Iterationstiefe der Fraktalberechnung.

Die dreidimensionale Version von „Conway’s Game of Life“ war optisch eindrucksvoll, allerdings schienen die Spielregeln noch nicht ganz reif für eine dritte Dimension zu sein. Das Spielfeld starb immer recht schnell aus, im Gegensatz zur üblichen 2D-Version, wo sich nach kurzer Zeit oszillierende Objekte etablieren.

Weitere Beispiele waren Grafikfilter, Generatoren einfacher Muster und die Visualisierung simpler physikalischer Objekte. Aha-Erlebnisse waren garantiert, wenn man sah, welche Ergebnisse leicht nachvollziehbare Änderungen an den Formeln der Canvas-Berechnung haben können. Es dauerte nicht lange, bis die Zuhörer begannen, Vorschläge zu Abwandlungen der Formeln einzuwerfen, um zu sehen, welche Ergebnisse diese hervorrufen.

Um einige Erfahrungen reicher löste sich die Veranstaltung gegen 22 Uhr auf, so dass wir mit dem Abbau beginnen konnten, und der Tag dennoch noch nicht ganz vorbei war. Eventuell nutzte der ein oder andere die Chance, den Abend ausklingen zu lassen. Vielleicht mit einem Besuch auf dem Weihnachtsmarkt.

Martin M. (Software Developer @ Sevenval)

Links:

Jörn Zaefferer: „docker for js-devs“, Frontend
Jörn Zaefferer: „docker for nodejs-devs“, Backend
Jörn Zaefferer: Slides zum Talk“
Markus Over: „Image Generation in JS“

Zur Blog-Startseite