Neuer Tag – neuer Plan.
Auch für meinen zweiten Basta!-Tag hatte ich mir ein prall gefülltes Programm zusammengestellt, von 8:30 – 21:30 Uhr. Das waren die Sessions meiner Wahl:

  1. Mobile und Desktop: Echte HTML5-Anwendungen mit Cordova und NW.js
  2. Volle Power: Native Integration in HTML5-Anwendungen für Desktop und Mobile
  3. The Future of Application Development – Visual Studio 2015 and .NET 2015
  4. Moderne Anwendungen brauchen moderne Security
  5. .NET neu erfunden: .NET 4.6 und 5.0 im Überblick
  6. Aber schnell! Performanceaspekte in Cross-Plattform-HTML5-Anwendungen
  7. Night School: IoT und Industry 4.0 (In-)Security

Also morgens früh raus, durch den Verkehr gekämpft, ins unverschämt teure Parkhaus und auf gehts zum ersten Vortrag.

Mobile und Desktop: Echte HTML5-Anwendungen mit Cordova und NW.js

Ein super interessantes Thema! Nachdem ich bereits eine App mit Cordova entwickelt und bis zum Produktionsstadium geführt habe und entgegen vieler Vorurteile Apps mit HTML5 und Javascript für eine geniale und bei richtiger Programmierung auch sehr schnelle Lösung halte, war ich schon sehr gespannt. Und mit Thomas Hilzendegen, mit dem ich vor vielen Jahren schon zusammen gearbeitet habe, hatte diese Session einen technisch extrem versierten und fitten Dozenten.
Thomas begann mit einer Einführung in AngularJS, beschrieb kurz die Konzepte von MVC/MVVM über Services und Dependency Injection bis zu Unit Tests und kam dann zum Kern-Framework des Vortrags, zu Cordova. Nach einer kurzen Vorstellung der Vorteile und Möglichkeiten gab es auch die ersten negativen Punkte zu dieser Technik, nämlich das bei iOS bisher ziemlich langsame Webview, das jedoch seit iOS 8 durch das neue und deutlich schnellere WKWebview verbessert wurde und das Problem bei Android, dass man hier durch die Hersteller-Anpassungen nie weiß, welche genaue Browser-Version mit welcher Unterstützung vorhanden ist. Hier stellte Thomas auch direkt eine Lösung vor – Crosswalk – die in die App einen kompletten Browser integriert, jedoch die Größe der App damit schnell über 20 MB hieft.
Es folgte eine Coding-Demonstration, in der eine Cordova App angelegt und Plattformen (iOS und Android) sowie ein Plugin hinzugefügt wurden. Die einfache Anwendung wurde dann in Simulatoren gestartet. Hier gab es noch den Tipp, für Android nicht den mitgelieferten Simulator zu benutzen, sondern auf Genymotion zu setzen, der wesentlich schneller arbeitet. Nach ein paar weiteren Demonstrationen zum Debugging in Safari und Chrome (je nach Plattform) folgte der zweite große Teil der Session, nämlich die App für den Desktop fit zu machen.

Dies zeigte Thomas anhand des NW.js Frameworks (früher node-webkit-Projekt), das die HTML5/Javascript App in einem Chromium Browser in eine native Anwendung einbettet. Die Verwendung ist ähnlich einfach wie die Nutzung von Cordova. Herunterladen des Package, in einer package.json ein paar Details zur Anwendung angeben und die passenden Pakete für die Zielplattform herunterladen und ins Verzeichnis legen. Ok, ein bisschen mehr ist schon noch zu tun und zu beachten, so wird für Windows der Ordner mit der App als .zip gepackt, für OSX wird das Verzeichnis einfach nur in app.nw umbenannt. Aber damit läuft dann die Anwendung mit den gleichen Sourcen auf verschiedenen Plattformen.

Den Build sollte man hier nicht jedes Mal per Hand ausführen, hier hilft Gulp weiter. Damit sind wir bestens gerüstet für die Veröffentlichung einer Anwenung mit einer Codebasis über nahezu alle Plattformen.

Volle Power: Native Integration in HTML5-Anwendungen für Desktop und Mobile

Was bei im vorherigen Vortrag nur kurz angeschnitten wurde, indem ein Plugin eingebunden wurde, sollte in dieser Session so richtig vertieft werden. Thorsten Hans begann mit einer kurzen Einführung in Cordova, um alle Zuhörer abzuholen und schwenkte dann recht schnell zu der Frage: „Wie schreibe ich ein eigenes Cordova Plugin?“.
Nun, hier gab es erst einmal einen Dämpfer, nämlich die Info, dass die Dokumentation leider nicht komplett ist und man stellenweise etwas länger suchen oder probieren muss.
Prinzipiell ist ein Plugin nichts anderes als ein NPM-Modul, das nativ geschrieben ist, was bedeutet, dass man für iOS Objective-C oder Swift, für Android Java und für Windows C# schreiben muss. Es folgte eine Demonstration der benötigten Ordner-Struktur und Kommandos, wonach das implementierte Plugin dann direkt auf einem Device ausgeführt wurde – nebenbei noch der Hinweis, dass einige Funktionalitäten nicht im Emulator verfügbar sind.

Nach einem Schwenk zu NW.js, wo die Erweiterungen einfach Node-Module sind, wurde auch hier live gezeigt, wie die Entwicklung abläuft und auch, dass die Development Tools immer mit an Bord sind (schließlich läuft die Anwendung in einem Chromium Browser). Nach einem kurzen Ausflug zum Gulp-Taskrunner und einer passenden Buildkonfiguration wurde dann ein C++-Modul mit dem Node-Kompiler node-gyp kompiliert und eingebunden. Abschließend wurde noch kurz der Performance-Aspekt angerissen – hier sprechen die Zahlen eine deutliche Sprache. Der Übergang von JavaScript zu C++ und zurück braucht eben einfach Zeit.

The Future of Application Development – Visual Studio 2015 and .NET 2015

Für die zweite Keynote der Basta! kam Jay Schmelzer auf die Bühne. Als Präsident der .Net Foundation präsentierte er die tollen neuen Möglichkeiten, die Microsoft mit seinem neuen Kurs ermöglicht. Wirkliche Cross-Plattform-Entwicklung und mit Visual Studio Code auch die Entwicklung auf verschiedenen Plattformen sowie die konsequente Öffnung von Microsoft zur Open-Source Welt standen hier im Mittelpunkt.

Moderne Anwendungen brauchen moderne Security

Nachdem ich am Dienstag von der Session von Dominick Baier total begeistert war, wollte ich den darin angekündigten, vertiefenden Vortrag ebenfalls nicht verpassen. Auch diesmal war ich nicht enttäuscht, auch wenn viele Themen des Vortages noch einmal wiederholt wurden. An vielen Stellen wurden weitere Details ergänzt und das Thema vertieft. Die Demonstrationen der verschiedenen Möglichkeiten zur Authentifizierung von JavaScript aus, von ASP.Net aus und auch von reiner maschinenbasierter Anmeldung waren genau passend.

.NET neu erfunden: .NET 4.6 und 5.0 im Überblick

Ein Vortrag vom DotNetDoktor durfte in meinem Programm auch nicht fehlen, also hatte ich mich für die Session zu den Neuerungen in .Net entschieden. Durch das hohe Tempo, das Microsoft hier vorlegt, wird dieses Umfeld zunehmend unübersichtlicher und eine Zusammenfassung ist hier absolut hilfreich.
Bereits die Tatsache, dass .Net 2015 prinzipiell die .Net Versionen 4.6 und Core 5.0 enthält, 5.0 aber noch gar nicht richtig fertig ist, kann schon zu einiger Verwirrung führen. Hier ist wichtig zu unterscheiden, dass die 4.x Linie das bisherige, monolithische .Net Framework umfasst, während 5.0 für den neuen Ansatz eines modularisierten Frameworks steht, das in der geringsten Ausprägung bereits mit knapp 11MB auskommt. Damit wird .Net quasi von Microsoft neu erfunden und neu entwickelt und das als Open Source und lauffähig unter allen Plattformen. Die Open Source Strategie bringt auch für Mono einen großen Vorteil mit sich – die bisher etwas unsichere Rechtslage ist damit endgültig geklärt und Mono kann der Grauzone endlich komplett entkommen.
Eine weitere in meinen Augen sehr wichtige Information, die zumindest mir bisher nicht so bewusst war, ist das nahende Support-Ende von .Net 4.5 und 4.5.1, das bereits auf den 12.1.2016 datiert ist. Besonders für Enterprise-Applikationen, die noch unter diesen Versionen laufen, könnte dies problematisch werden, da Microsoft dann unter Umständen keinen Support mehr leistet.

Im weiteren Verlauf der Session wurden die neuen Sprach-Features erläutert und auf die stellenweise noch lückenhafte bzw. fehlerbehaftete Dokumentation von .Net 4.6 eingegangen. Hier stachen für mich jedoch nur die Aktualisierung von SSL/TLS und die neuen High-DPI-Möglichkeiten heraus. Ganz interessant, jedoch wahrscheinlich nicht für die breite Masse, waren die Details zum neuen Roslyn Compiler.

Nach einer Demo von .Net Core 5.0 mit dem JSON Ersatz für die App.config wurde noch vor der drohenden NuGet-Hölle gewarnt. Das abschließene Fazit war, dass nach längerer Ungewissheit .Net lebt! Aber es kommen auch neue Herausforderungen, gerade im Bereich der Paketverwaltung.

Aber schnell! Performanceaspekte in Cross-Plattform-HTML5-Anwendungen

Auch von diesem Vortrag hatte ich mir sehr viel erwartet, da das Themengebiet in meinen Augen von vielen vernachlässigt wird. Während im Backend häufig jedes Detail optimiert wird, werfen die Entwickler im (Web-)Frontend nur so mit Bildern, Dateien und Events um sich und es hat oft den Anschein, als wäre Performance hier kein Thema.

Gregor Biswanger stellte sich erst einmal ausführlich vor und stellte dann die Frage, was ist überhaupt schnell? Als Ziel für den Aufruf einer Seite setzte er 100ms, 250ms sind seiner Ansicht nach auch noch im schnellen Bereich, die meisten Seiten bewegen sich aber im Bereich von 2 Sekunden.
Auch er gab dann noch einmal einen Überblick über Cordova, den ich nun zum dritten Mal hörte. Interessant war die Vorstellung seiner bevorzugten Entwicklungsumgebung, nämlich Intel XDK. Diese war mir bis dahin noch unbekannt, machte jedoch einen sehr guten Eindruck. Zumal Intel hier viele Goodies bietet, vom kostenlosen Build für alle Zielsysteme in der Cloud (für iOS wird ansonsten immer ein iDevice benötigit) bist zu einer App in den spezifischen Stores, mit der man seine Anwendung direkt auf den Geräten testen kann. So demonstrierte er auch die Ausführung einer kleinen App auf dem Smartphone per USB mit Debugging im Chrome-Browser.
Auch in dieser Session wurden die bereits von Thomas Hilzendegen angesprochenen Probleme von Android mit den verschiedenen Browsern und das Problem von iOS mit dem älteren Webview angesprochen und die gleichen Lösungs-Möglichkeiten (CrossWalk und WKWebview) mit den entsprechenden Nachteilen genannt.
Danach ging es in die technischen Tiefen, nämlich in die grundlegenden Abläufe innerhalb des Browsers. Hier wurden unter anderem die Themen der Lade-Reihenfolge, Inline-Scripts und -Styles sowie die Minifizierung ausführlich besprochen. Auch die begrenzten Möglichkeiten des Browsers mehrere Dateien parallel zu laden und die entsprechenden Overheads kamen zur Sprache, wie auch verschiedene Bildformate und Alternativen (z.B. Sprites). Anschließend ging es noch weiter in die technischen Abgründe der Browser – Main-Thread und Composition-Thread wurden mit ihren Aufgaben diskutiert und die Probleme in deren Zusammenarbeit und mit Reflows erklärt und in einem Beispiel demonstriert. Nachdem die Zeit dann auch so langsam schon sehr knapp wurde, wurden dann noch schnell viele weitere Tipps und Problembereiche genannt, die hier jedoch jetzt zu weit führen würden.

Nach dem ruhigen und langsamen Einstieg in diese Session ging es dann doch noch sehr weit in die Tiefe. Einige der Tipps gingen vielleicht ein bisschen zu weit, aber Gregor betrachtete das ganze Thema ja explizit aus der Performance-Brille und gab wirklich sehr viele sehr gute Anregungen und am Ende des Vortrages war definitiv klar – er weiß wovon er redet – was mich auch dazu bewegte meine Planung für den nächsten Tag zu ändern und seinen anderen Vortrag zu App-Marketing zu besuchen.

Night School: IoT und Industry 4.0 (In-)Security

Ein Thema, das insbesondere in Hinblick auf das „zweite Standbein“ der Kluger.net GmbH (Home Automation) sehr interessant war – IoT und Security. Also besuchte ich trotz bereits deutlich rauchendem Kopf auch noch die Night School (20:15 – 21:30 Uhr).
Dominik Schneider und Wojtek Przibylla gaben zunächst einen Überblick über die Geschichte der Automation, von den Ursprüngen in den letzten Jahrhunderten bis zu den aktuellen Entwicklungen mit Google Glass und Google Car. Danach wurden einige Grundlagen erläutert und die Zuwachsraten an Devices in diesem Umfeld und die von Marktforschungsunternehmen erwartete Entwicklung dargestellt, die in den nächsten Jahren gigantische Zahlen von bis zu 50 Milliarden Geräten umfassen. Anschließend wurde auf die Frage eingegangen, warum das Internet of Things gerade jetzt so einen Hype erfährt, nämlich unter anderen, weil jetzt die Preise ein ordentliches Niveau erreichen, die Komponenten klein und leistungsfähig genug werden, IPv6 die Addressierung ermöglicht und auch mobile Datenraten preislich attraktiv werden.

Für den Schwenk Richtung Sicherheit wurden dann in letzter Zeit bekannt gewordene Hacks aufgezählt. Neben der möglichen Manipulation von Philips Hue Lampen (2015) und Insulin Pumpen (2011) wurden hier auch Einbrüche in Smart Meter (2014) oder Eingriffe in Autos wie zum Beispiel Chrysler aufgeführt. Doch wo liegt der Grund hierfür? Als Basis für diese Systeme kommen meist bekannte Software-Stacks, wie zum Beispiel schlanke Linux-Versionen zum Einsatz mit den entsprechenden Schwachstellen. Ein Patchen dieser Systeme ist jedoch quasi nicht möglich bzw. wird nicht durchgeführt. Damit verbleibt die Software auf ihrem Stand und später bekannt werdende Sicherheitslücken können dort leicht ausgenutzt werden.

Zur Demonstration der Schwachstellen und Möglichkeiten in solchen Systemen wurde das KNX-Protokoll zur Gebäudeautomation herangezogen. Dieses basiert auf der EIB Spezifikation, die bereits seit 1991 existiert. Im Bereich Sicherheit ist in dieser Protokoll-Beschreibung nur die Aussage enthalten (verkürzt), dass dieses Thema hier nicht relevant ist. Für die Steuerung dieser Gebäude werden oft Geräte mit Web-Interface eingesetzt, die dann im Netzwerk hängen. Hier konnten die beiden Dozenten anhand einfacher Google-Suchen zeigen, dass sehr viele solcher Geräte öffentlich zugänglich im Internet hängen und hier mit einfachsten Mitteln auf die Steuerung des Gebäudes zugegriffen werden kann. Doch auch Systeme, auf deren Steuerung nicht so einfach zugegriffen werden kann, bei denen jedoch physikalischer Zugang besteht (z.B. Öffentliche Gebäude) oder deren Bus von außen zugänglich ist, sind gefährdet. So wurde in einer Demonstration gezeigt, dass über den direkten Zugriff auf den Bus (in Kombination mit einem Raspberry Pi mit UMTS-Zugang) ein ganzes Gebäude „übernommen“ werden kann und sowohl die sinnvolle Steuerung verhindert als auch beliebige Kontrolle ausgeführt werden kann.

Als Fazit der Session lässt sich hier sagen, dass die Sichheit im Umfeld IoT noch ein sehr heikles Thema ist und hier noch viel getan werden muss. Für bestehende Systeme lässt sich außerdem festhalten, dass man bekannte, grundlegende Sicherheitsmaßnahmen durchführen sollte, zum Beispiel nichts ins Internet zu hängen, was nicht dort hin gehört und jedes Szenario und Deployment auch in Richtung Sicherheit zu evaluieren.

 

 

Abschließend kann ich auch zu diesem Tag sagen, dass die Vorträge hoch spannend waren und der Konferenz-Besuch ein voller Erfolg war.

 

Lest doch auch meine anderen Berichte zur Basta! 2015, hier sind die Links dazu:

Dienstag auf der Basta!

Dritter Tag der Basta! Hauptkonferenz