Codecamp 2015 in Dänemark

Genaugenommen in das beeindruckende Anwesen von Heine Bartsch in Sallinge. In toller Atmosphäre wurde hier zwischen allerlei spektakulären Kunstexponaten in kleinen Teams an definierten Projekten gearbeitet.
Für unser leibliches Wohl sorgten unsere mitgereisten Lieblingsköche Firat und Marcel. Danke Jungs, es war einfach nur genial, von euch bekocht zu werden!
Nach 2 ½ Tagen der intensiven Code-Produktion wurden die Ergebnisse anschließend dem gesamten Team präsentiert.
Die Teams:
Kalle und Marian - Simple IoT
Anfang September habe ich das IoT-TechCamp mit Unterstützung von Cap3 und Starterkitchen nach Kiel geholt.
Das Thema „Internet der Dinge“ finde ich persönlich sehr spannend. Marian konnte ich ebenso für das Thema begeistern. Fürs Codecamp haben wir uns als Ziel gesetzt, eine möglichst einfache Schnittstelle zur Verwaltung von IoT-Geräten zu implementieren.
Wir haben einen Server aufgesetzt, bei dem sich die Geräte mit ihren Sensoren und Aktoren registrieren können. Der Server wurde mit einem C# Backend als Windows 10 Universal App auf dem Raspberry Pi 2 entwickelt. Für das Frontend setzten wir auf HTML5 mit React.
Mit einer Webseite als Benutzeroberfläche kann der Anwender einfach und schnell Regeln erstellen und damit definieren, wie auf bestimmte Sensorwerte reagiert werden soll. Als Controller für die Sensoren und Aktoren kam ein CC3200 von RedBearLab zum Einsatz. Programmiert wurde hier mit C++.

Als Showcase wurde der Micro-Controller mit einem Bodenfeuchtigkeitssensor und einer Pumpeinheit verbunden. Der Sensor befand sich in einem Glas, welches über die Pumpenschläuche mit einem zweiten Glas verbunden war. Über den Server konnte jetzt mit wenigen Klicks eine Regel eingestellt werden, dass immer wenn in dem Sensor-Glas zu wenig Wasser ist, die Pumpe angehen soll und den Wasserpegel wieder erhöht.

Mein Resümee: Unser Ziel für die 2,5 Tage CodeCamp konnten wir erreichen. Grundsätzlich war die Programmierung ohne die Unterstützung der gewohnten Highlevel Sprachen und Frameworks schon eine Herausforderung. Toll, dass das CodeCamp die Möglichkeit bietet, sich an solchen Dingen einfach mal auszuprobieren.
Marc und Ole - LaborheftApp
Die Laborheft-App ist die Idee einer unserer Kunden, die wir fürs CodeCamp aufgegriffen haben. Ole und ich arbeiteten zusammen an der Laborheft-App, die wir als Cross-Plattform-Lösung für iOS und Android umsetzen wollten. Hierfür versuchten wir uns an dem für uns neuen Framework React Native.
Worum geht es? Experimente sollen mithilfe einer App dokumentiert werden können. Ein Versuchsleiter legt die Experimente an und wertet sie nach Abschluss aus.
Im Laufe des CodeCamps sollte ein REST-basiertes Backend entwickelt werden, welches dazu in der Lage ist, verschiedene Experimente auszuliefern sowie die ersten Datentypen der Dokumentation aufzunehmen. Das Backend sollte dabei mindestens in der Lage sein, Text sowie Bilder entgegenzunehmen, zu verarbeiten und auszuliefern. Weiterhin sollte es mittels der Anwendung möglich sein, die Experiment-Dokumentation anzulegen. Diesbezüglich sollten zunächst die Eingabe von Text sowie das Aufnehmen und Anlegen von Bildern realisiert werden. Alle anderen Formen der Dokumentationen wie Audioeingabe, Videodokumentation und das Anlegen von Zeichnungen sollten optional im CodeCamp umgesetzt werden. Spezielle Funktionen für Versuchsleiter zum Anlegen sowie Auswerten von Experimenten wurden bewusst weggelassen.

Während des CodeCamps haben wir einen Prototyp entwickelt, der alle Grundfunktionen unterstützt. Die App kann eine Aufgabenliste vom Backend laden und diese anzeigen. Von dort gelangt der Benutzer in die jeweilige Aufgaben-Detailview, in der eine Aufgabenbeschreibung und die bisherigen Notizen eingesehen werden können. Innerhalb der Detailview können dann neue Text- oder Bildnotizen angelegt werden; weitere Notiztypen (Audio, Video, Zeichnen und Dateianhang) sind skizziert. Für die Bildnotizen wird bereits das native Kameramodul des Smartphones oder Tablets angesprochen. Damit wurde das wichtige Ziel erreicht, per JavaScript nativ eine Hardwarekomponente zu nutzen. Auch das Designkonzept wurde in weiten Teilen umgesetzt.

Im Ergebnis lässt sich sagen, dass das Programmieren mit dem Framework React Native und die Kombination mit den bekannten Technologien JavaScript und HTML wirklich spannend war. Interessant war auch der Ansatz, bestehende CSS-Eigenschaften weitgehend zu übernehmen, aber diese über JavaScript-Objekte, also mit voller Code-Unterstützung, an die View zu übergeben. Am Schluss hätten wir gerne noch einen Tag mehr Zeit gehabt, um das Design vollständig umzusetzen und die letzten Ecken und Kanten des Prototyps abzurunden. Auf technischer Ebene sollte erwähnt werden, dass JavaScript trotz der neuen ES6-Features noch nicht die Sprache der Wahl ist, solange es andere Sprachen mit mächtigen Typsystemen gibt.
Felix und Julien - Native App für die Apple Watch mit watchOS 2
Nach der watchOS 2 Veröffentlichung Mitte September konnten wir es kaum erwarten, die neuen Funktionen auszuprobieren. Seit watchOS 2 ist es möglich, native Apps auf der Apple Watch zu entwickeln.
Diese Apps benötigen keine permanente Verbindung zum iPhone, sodass diese unabhängig und mit deutlich größerer Performance laufen. Zudem kann nun auf die Sensoren der Apple Watch (Herzfrequenz, Mikrofon, Beschleunigungsmesser) zugegriffen werden. Zusammen mit meinem Mitstreiter Felix war ich beim Code Camp das Team „Apple Watch App“.
Auf der Suche nach einem Projekt für die Apple Watch kam mir die Idee zur Entwicklung einer Golf-App. Da ich selbst öfter auf dem Golfplatz stehe, kenne ich den Vorteil von technischen Hilfsmitteln während einer Runde. Mit Hilfe der Golf-App sollen die eigenen Schläge und die eines Mitspielers pro Loch gezählt werden können und für ein Turnier gespeichert werden.

Als Besonderheit hatten wir die Idee, den Beschleunigungsmesser zur eigenen Schlagzählung zu verwenden. Allerdings wurde diese Funktionalität aufgrund mangelnder Praxistauglichkeit verworfen. Dank unseres mitgereisten Designers Roland hatten wir schnell ein sehr ansehnliches App-Konzept bereit und konnten mit der Programmierung unter Xcode 7 loslegen.

Damit die Programmierung mit dem neuen WatchKit so richtig interessant wird, habe ich das CodeCamp genutzt, um erste Erfahrungen mit Apples neuer Programmiersprache Swift 2 zu machen. Innerhalb von drei Tagen haben wir es geschafft, alle wichtigen Funktionen der Golf-App auf der neuen Plattform fertigzustellen. Auf der Abschlusspräsentation am Samstagabend konnten wir schließlich unsere App auf der firmeneigenen Apple Watch demonstrieren. Für die Veröffentlichung im App Store sind nun lediglich wenige Arbeiten für letzte Anpassungen notwendig. Aus unserer Sicht war das CodeCamp ein voller Erfolg!
Nicolas und Sören - Wareneingangserfassung mit mobilem Scan-Device
Nico und ich widmeten uns in unserem Projekt einer App für mobile Geräte, die Barcodes zur Erfassung von Wareneingängen scannt. Im Hintergrund arbeitet ein schlanker Server und bildet unter anderem die zentrale Daten- und Kommunikationsschnittstelle zwischen Warenwirtschaftssystem des Kunden und den mobilen Scan-Devices.
Die Idee basiert auf Überlegungen bzgl. einer konkreten Anfrage zur Prozessoptimierung eines Kunden. Auf die genauen Spezifikationen möchte ich an dieser Stelle auch gar nicht weiter eingehen.
Viel wichtiger ist, was wir uns von der Entwicklung dieses Projektes im Rahmen des CodeCamps versprachen: Spannend war hier zum einen die angestrebte umfassende Realisierung dieses interessanten Use-Cases mit all seinen Komponenten und technischen Herausforderungen als Proof of Concept in der knappen verfügbaren Zeit. Zum anderen konnten neben den modernen Scan-Devices mit ASP.NET 5 und MongoDB zwei Technologien erfolgreich ausprobiert werden, mit denen wir zuvor noch nicht gearbeitet hatten.
Die GLOBOS Logistik- und Informationssysteme GmbH – ein Spezialist für Barcodesysteme – stellte uns dankbarerweise für das CodeCamp das aktuelle Gerät FZ-X1 von Panasonic zur Verfügung.

Komponenten unserer Entwicklung:
- Android-App auf Demogerät Panasonic FZ-X1
- .NET Server Backend mit MongoDB zur Persistierung der Daten
- Kleine Web-View zur Anzeige der aktuellen Lieferschein- sowie Erfassungsdaten auf dem Server
- Offlinebetrieb und Auto-Sync on Connection
- Automatische Reports (z. B. per Email) bei Abweichung von Soll / Ist Liefermengen
Eingesetzte Technologien, u.a.:
- Android SDK (Version 4.2 Jelly Bean)
- Panasonic Toughpad SDK
- ASP.NET 5 Beta 7
- MongoDB

Fazit: Dieses spannende Projekt hat schon während der Bearbeitung sehr viel Spaß gemacht und auch nach Abschluss sämtliche Erwartungen erfüllt.
Speziell die Abbildung dieses klassischen, auf den ersten Blick simpel anmutenden Prozesses, der sich durch die unterschiedlichen, verteilten Komponenten, die über das Netzwerk weitestgehend asynchron (Anforderung Offline-Betrieb) kommunizieren, zu einem komplexen Konstrukt zusammensetzt, machte den besonderen Reiz dieses Projekts aus.
So wurden neben den Scan-Devices inkl. App auch die Artikeldatenhaltung mit Zuordnung zu Barcodes, das Serverbackend für Synchronisation zwischen Warenwirtschaftssystem und mobilen Geräten sowie eine Web-View zur Einsicht der Daten und damit im Prinzip alle beteiligten Module des Prozesses realisiert.
Oliver und Bettual - EDGE-Backend in Go
Bettual und ich waren ein Projektteam beim CodeCamp. Unsere Ziele waren es, wichtige Teile der Backend-Software für das EDGE-System in einer "modernen" Programmiersprache neu zu entwickeln.
Dabei wollten wir den zurzeit eingesetzten „Monolithen“, der aus dem ursprünglichen Prototypen der EDGE hervorgegangen ist, in zwei Teile zerlegen. Die Entwicklung des EDGE-Backends startete Mitte 2013, damals entschieden wir uns für eine Entwicklung mit C++ und openFrameworks – nun wollten wir schauen, wie sich die Programmiersprache Go im direkten Vergleich zu C++ für unsere Backend macht.
Die Entwicklung fand parallel unter Linux und OS X statt. Innerhalb von zwei Tagen konnte ein wesentlicher Teil des Backends neu implementiert werden! Zudem übertraf der neue Code den alten sowohl in Sachen Kürze als auch bei der Lesbarkeit.

Die wichtigste Erkenntnis aus diesem Experiment: Go ist eine einfache und doch mächtige Sprache, die sich auf jeden Fall für unsere Zwecke eignet. Wir werden das beim CodeCamp angefangene Projekt definitiv weiter verfolgen.

Unterstützt wurden alle Teams von unserem Web- und Grafikdesigner Roland Langmaack, der gefühlt am meisten zu tun hatte. Riesen Dank an Dich, Roland, an dieser Stelle!

Wir sind uns einig, das Codecamp 2015 war ein voller Erfolg! In ungezwungener Atmosphäre an selbst definierten Projekten zu arbeiten und dabei neue Technologien einzusetzen bzw. die eigenen Skills auszubauen, ist einfach großartig und schreit nach einer Wiederholung.
Danke an alle, die dabei waren! Danke an ein so großartiges Team!