KEY Talks #1 – Google Cloud API, Generative Softwareentwicklung und Smart Cities

Eines unserer Hauptziele als Unternehmen ist es, eine breite Wissensbasis aufzubauen. Dazu ist es wichtig, dass der interne Wissenstransfer gut funktioniert und das wir uns regelmäßig mit innovativen Themen auseinandersetzen. Um dieses Ziel zu erreichen überlegen wir regelmäßig, welche Maßnahmen wir dazu ergreifen können. Als neues Format beschäftigen gingen nun die KEY-Talks hervor. „KEY“ steht für Knowledge Exchange Yielding. Das heißt im Klartext: Wir beschäftigen uns einmal im Monat mit Themen unserer Wahl – es gibt keine Einschränkungen. Die Themen stellen wir in einer kurzen Präsentation allen vor und diskutieren gemeinsam darüber.

Im ersten KEY-Talks Event wurde sich dabei um folgende 3 Themen unterhalten:

Google Cloud API

Zuerst wurde die Google Cloud API mit allen angebotenen Services vorgestellt. Diese untergliedert sich in Schnittstellen für Compute, Storage, Networking, Big Data, Machine Learning, Verwaltung und Security. Von den meisten der Schnittstellen haben viele von uns bereits gehört. Einige der Schnittstellen haben wir auch schon in Projekten erfolgreich eingesetzt. Das eigentliche Ziel des Vortrags ist aber das interaktive Austesten der Machine Learning API gewesen.

Zusammen haben wir die Eigenschaften von Bildern ausgelesen, Googles automatisches Labeling der Bilder ausgetestet und geschaut, wie gut Googles API Gesichter in Bildern erkennt. Dies hat sehr gut funktioniert – auf einem unserer Testbilder erkannte Google sogar die Rasse des dargestellten Hundes. Die Texterkennung in Bildern war für leicht lesbare Schriftarten auch gut, wir konnten aber Probleme mit verschnörkelten Schriftarten feststellen. Auch die Safe-Search Beurteilung von Bildern war sehr interessant. So ist es möglich, anstößige und nicht jugendfreie Bilder automatisiert zu klassifizieren – und dies mit einer erschreckend guten Zuverlässigkeit.

Des Weiteren sind wir noch ausführlich auf die Speech und Natural Language Processing API eingegangen. Hier ist interessant zu wissen, dass die API eine Vielzahl an Sprachen unterstützt. Auch im Deutschen waren die Ergebnisse erstaunlich gut.

Abschließend haben wir ein Brainstorming darüber betrieben, wie wir diese Technologien gut in unseren Projekten einsetzen können. Uns kamen viele kreative Ideen und wir sind zuversichtlich, dass wir für den einen oder anderen Kunden durch das erweiterte Wissen über die Machine Learning APIs von Google einen Mehrwert erzeugen können!

Generative Softwareentwicklung

Die generative Softwareentwicklung ist ein Programmierparadigma mit dem Kerngedanken, Quelltext automatisiert erzeugen zu können. Dazu werden sogenannte Programmgeneratoren genutzt. Diese Programmgeneratoren verfolgen das in der Informatik bekannte EVA-Prinzip (Eingabe / Verarbeitung / Ausgabe). Die Besonderheit liegt darin, dass die Ausgabe kein Bild, kein Dokument oder keine strukturierten Daten wie XML, JSON oder HTML ist, sondern ein Quelltext. Wir selber haben bereits ein Projekt gehabt, in welchem ein solcher Programmgenerator entwickelt wurde. Das dabei gesammelte Wissen wurde in diesem Vortrag in großer Runde geteilt.

Ein Programmgenerator zu entwickeln macht dabei immer Sinn, wenn ein Produkt in größerer Anzahl verkauft wird, welches im Kern einheitlich ist, aber viele unterschiedliche Ausprägungen im Detail aufweist. Ein gutes Beispiel dafür ist die Automobilbranche. Durch die sehr große Anzahl an Konfigurationsmöglichkeiten bei einem Auto macht es hier überaus Sinn, die im Auto verwendete Software über einen Codegenerator zu erzeugen.

Es gibt aber auch Anwendungsbeispiele, welche näher am Programmierumfeld angelehnt sind. Mit dem Jetbrains Meta Programming System (kurz: MPS) zum Beispiel ist es möglich, komplexere Verschachtelungen von Abfragen vereinfacht darzustellen. Hier ein Beispiel, wie Jetbrains MPS eine Kette an if-Abfragen zu einer Tabelle vereinfacht:

Beispiel eines Code-Generators in einer Meta-Programmiersprache (Quelle: Jetbrains)

Zum Schluss diskutierten wir darüber, was die Vor- und Nachteile von Codegeneratoren sind und wie wir diese in Projekten einsetzen können.

Smart Cities

Der Begriff der „Smart City“ ist aktuell in vieler Munde. Doch worum handelt es sich dabei überhaupt? Es geht darum, die Stadt sowohl aus Sicht der Effizienz, des technologischen Fortschritts als auch der Sozialen Inklusion zu betrachten und zu optimieren – und dabei ein „Green Mindset“ zu haben. Kurz gesagt geht es darum, wie wir Städte im gesamtheitlichen mit innovativen Ideen und Technologien verbessern können. Dabei treffen verschiedene Akteure aufeinander. Sowohl die Politik, die Wirtschaft als auch die Gesellschaft der Stadt versuchen zusammen gute Ideen zu finden und diese umzusetzen.

Leipzig, der Standort unseres Unternehmens, ist dabei Mitstreiter im EU-Projekt „Triangulum“. In diesem arbeiten die Stadt Leipzig und dessen Bürger mit sowohl großen Unternehmen (unter anderem die Leipziger-Gruppe, Verbundnetz Gas und AOK Plus) als auch mit KMU zusammen, um innovative Konzepte zu entwickeln und in Leipzig zu implementieren.

Wir haben recherchiert, welche Anwendungsfälle es im Bereich der Smart City bereits gibt und welche neuen Ideen uns mit unserem technologischen Background einfallen. Aktuell sind wir nicht im Bereich der Smart City involviert, allerdings finden wir das Themenfeld sehr interessant und spannend.