STP LabsDay 2017

Am vergangenen Donnerstag und Freitag (6. und 7. April 2017) habe ich wieder am STP LabsDay teilgenommen. STP veranstaltet diesen firmeninternen 24h-Hackathon jährlich und es ist jedesmal eine perfekte Gelegenheit während der Arbeitszeit eine neue Idee auszuprobieren. Dieses Jahr hat unsere Marketing-Abteilung alle Teilnehmer mit einem schicken Polo-Shirt und einem coolen Bluetooth-Kopfhörer ausgestattet. Außerdem übernimmt STP die komplette Verpflegung an beiden Tagen. Beste Voraussetzungen für zwei Tage Innovationsarbeit.

Schon im Herbst letzten Jahres hatte ich RethinkDB auf meine ToDo-Liste gesetzt aber seit dem nicht die Zeit gefunden, mich mit dieser Datenbank zu beschäftigen. Das Interessante an RethinkDB ist, dass diese Datenbank nicht nach Änderungen gefragt werden muss, sondern diese direkt in die Clients pushen kann. Ein ziemlich coole Sache, die die Entwicklung von echtzeitfähigen Anwendungen unterstützt. Also habe ich mit einem Kollegen aus meinem Team am STP LabsDay teilgenommen. Im Rahmen unseres Projekts wollten wir Daten, die in LEXolution.KMS entstehen, also der Software, die wir täglich entwickeln, in Echtzeit im Browser anzeigen. “Echtzeit KMS-Logs im Browser” war unser Arbeitstitel.

Am Donnerstag um 11 Uhr ging es los. Nachdem wir uns über den Umfang des Projekts im Klaren waren, hat mein Teamkollege sich der Erweiterung von KMS angenommen, während ich mich in RethinkDB-Tutorials gestürzt habe. Dank Docker hatte ich ohne Aufwand eine RethinkDB-Testumgebung zur Verfügung. Da wir noch nicht wussten wie und welche Daten wir aus KMS in die RethinkDB schreiben müssen, hat mein Kollege KMS so erweitert, dass beliebige Datenquellen und Datensenken angebunden werde können, ohne dass KMS selbst angepasst werden muss. Dadurch hatten wir eine perfekte Entkopplung auf fachlicher, technischer und zeitlicher Ebene. Er war um ca 16 Uhr fertig. Bei mir lief es nicht so gut. Zwar hatte ich ein gutes Verständnis von RethinkDB aufgebaut aber schnell gemerkt, dass es die Änderungen nicht ohne Weiteres in Browser-Clients pushen kann. Für die asynchrone Kommunikation über das Web müsste entweder eine Menge Websocket-Code programmiert oder die RethinkDB-Erweiterung Horizon eingesetzt werden. Also habe ich noch Horizon lernen müssen. Horizon ermöglicht die Entwicklung von echtzeitfähigen Web-Apps auf eine Art und Weise, die mich sehr an Meteor erinnert. Mit Horizon habe ich dann einen Webserver entwickelt, der meine RethinkDB mit einem Browser-Frontend verknüpft. In der Vergangenheit habe ich viel mit Aurelia gearbeitet, sodass ich auch hier gerne Aurelia eingesetzt hätte um eine hübsche Oberflächliche im Browser zu gestalten. Leider waren alle Horizon-Beispiele entweder in Angular oder React. Von Angular halte ich nicht viel, also habe ich auch noch React gelernt. Der ReactComponent.render-Ansatz hat mich sehr an Control.OnPaint erinnert. Schließlich hatte ich eine echtzeitfähige React-App, die über Horizon mit der RethinkDB kommunizieren konnte. Neue Einträge in der Datenbank erschienen automatisch im Browser. Endlich. Mittlerweile war es 20 Uhr und alle LabsDay-Teams haben sich zum gemeinsamen Abendessen im Besprechungsraum getroffen.

Nach dem Essen habe ich mir das Speichern der Events, die in KMS passieren, in der RethinkDB vorgenommen. Mein Teamkollege hatte nach seinem Erfolgserlebnis seinen KMS-Agenten mittlerweile sogar dokumentiert. Für die Kommunikation zwischen seinem Endpunkt und meiner RethinkDB habe ich einen Message Bus als Infrastruktur-Komponente mit EasyNetQ auf RabbitMQ installiert, den Labs Service Bus. Jetzt brauchte ich nur noch eine Komponente, die auf die Events wartet, die der KMS-Agent im Auftrag von KMS auf dem Bus veröffentlicht und diese dann in die RethinkDB einfügt. Dazu habe ich in der Solution des KMS-Agenten pro Event eine Assembly mit dem .NET Standard 1.4 und jeweils einer Klasse “Message” angelegt. Diese Messages, Akte angelegt und Zeiteintrag erfasst, gehören logisch dem KMS-Agenten, der KMS am Labs Service Bus vertritt. In meiner Komponente, die auf diese Events hören soll, habe ich diese .NET Standard-Assemblies referenziert und entsprechende Event Handler implementiert. Zum ersten Mal konnte ich jetzt in KMS einen Zeiteintrag erfassen und augenblicklich erschien in meiner React-App die Zeile “5 Stunden Aktendurchsicht erfasst”. In diesem Moment hatte ich eine Idee für einen Namen für meine App. Meine Vision war es alle Vorgänge und Aktivitäten innerhalb einer Kanzlei im Echtzeit hier anzuzeigen. In einer aktiven Kanzlei würden dann ganz viele verschiedene Ereignisse durch den Browser scrollen. Ich würde den Herzschlag der Kanzlei visualisieren: LEXolution.Pulse war geboren.

Mittlerweile war es kurz vor 23 Uhr und ich war ziemlich müde. Nachdem ich noch Icons und ein Logo eingebaut hatte, fuhr ich nach Hause. Auf dem Heimweg sind mir dann noch viele andere KMS-Aktionen eingefallen, die ich auch noch anzeigen wollte. In dieser Nacht habe ich schlecht geschlafen, wahrscheinlich vor Aufregung.

Am nächsten Morgen bin ich wie gewohnt ins Fitnessstudio gefahren und habe den Tag in Gedanken durchgeplant. Ich würde noch genug Zeit haben, weitere KMS-Vorgänge zu visualisieren. Als ich dann im Büro angekommen war, war mein Teamkollege bereits da. Wir hatten bis um 11 Uhr Zeit, da ab diesem Zeitpunkt der Hackathon endet und die Präsentationsvorbereitung beginnt. Nachdem ich unser verteiltes System wieder in Betrieb genommen hatte, habe ich es geschafft noch zwei weitere KMS-Aktionen in LEXolution.Pulse zu visualisieren: Rechnung abgeschloßen und Zahlungseingang gebucht. Just in time.

Anschließend haben wir unsere Präsentation vorbereitet und um 13 Uhr mit allen LabsDay Teams zur Ergebnispräsentation getroffen. Bei der Präsentation waren Interessenten aus allen Abteilungen, unsere Vorstände und sogar ein Kunde anwesend. Unsere Präsentation verlief sehr gut. Die der anderen Teams auch. Es ist immer wieder erstaunlich zu sehen, was innerhalb von 24 Stunden umgesetzt werden kann. Nachdem alle Teams präsentiert hatten, wurden wieder die drei Preise verliehen. Eigentlich geht es ja nicht um Preise, sondern um unsere Idee und das Ausprobieren von neuen Technologien. Obwohl alle Teams beeindruckende Ergebnisse präsentiert haben, würden zwei ohne Preis nachhause gehen. Leider wurde unser Projekt dieses Jahr nicht mit einem Preis ausgezeichnet. LEXolution.Pulse wurde zwar sehr gelobt, aber die Preise gingen an LEXolution.RenoJane, Abonnieren mit PayPal und DMS-Importer-Android-App. Herzlichen Glückwunsch an meine Kollegen aus diesen Teams. Eure tollen Projekte haben die Preise wirklich verdient.

Mein Teamkollege und ich sind trotzdem sehr stolz auf LEXolution.Pulse. Wir hatten viel Spaß und konnten während der Arbeitszeit an einer eigenen Idee arbeiten. Ich habe gehört, Google Mail wäre auch so entstanden. Für mich war der LabsDay ein voller Erfolg. Ich konnte Erfahrung mit RethinkDB, Horizon, React und .NET Standard sammeln und habe viel gelernt. Wie auch immer es jetzt mit LEXolution.Pulse weitergeht, ich bin mir sicher, dass der STP LabsDay 2017 und seine großartigen Projekte unsere gesamte Firma motiviert und inspiriert haben.

 

Abends zuhause war ich ziemlich erschöpft. Endlich konnte ich RethinkDB von meiner ToDo-Liste streichen. Der nächste Punkt ist…

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s