eBooks meine Liebe

Heute ist es soweit: Mein Praxiseinstieg Deep Learning aus dem O’Reilly Verlag ist ab sofort als eBook erhältlich. Im praktischen Kombiformat mit PDF, ePub und im Kindle Mobi-Format, sowohl ohne DRM direkt vom Verlag als auch mit DRM in den bekannten Internetgeschäften (Weltbild, Thalia, Amazon, Hugendubel). Die Produktion als eBook war mir ein wichtiges, persönliches Anliegen, da ich selber ein großer Anhänger elektronischer Bücher und Magazine bin. Angefangen hat es bei mir mit einem digitalen Abo der Zeit nach dem Studium. Dem Early Adoptor war geschuldet, dass man das erste eBook-Lesegerät noch von Amazon aus den USA importieren musste und die einzelnen Dateien umständlich über USB synchronisiert wurden (Kindle 2. Generation).

Als der amerikanische O’Reilly Verlag damit begann, immer mehr Bücher als eBooks zu verkaufen, fiel mir die Entscheidung gegen meine Billy-Regale und für einen neuen Kindle nicht schwer. Darüber hinaus kamen auch immer mehr Magazine wie die c’t, die iX, das Linux-Magazin, die Wired und sogar der Spiegel in der praktischen digitalen Ausgabe und liessen sich vor allen Dingen auf dem neuen iPad besonders praktisch lesen.

Mittlerweile lese ich kaum noch analog und freue mich immer wieder über die Platzersparnis meiner kompletten Bibliothek und mehrerer Jahrgänge, c’t, iX und DIE ZEIT die ich immer dabei haben kann.

Jetzt hat es auch mein eigenes Werk auf diese Platformen geschafft und ich bin gespannt ob die digitalen Leser von den Möglichkeiten der einfachen Suche, der direkten Verlinkung, der vergrößerten Ansicht von Abbildungen sowie der Möglichkeit von Querverweise regen gebrauch machen werden. Dazu kommt auch noch eine 20% Ersparnis gegenüber der Papierversion.

Viel Spaß mit den eBook-Formaten von Praxiseinstieg Deep Learning.

Schmuddelwetter, Strand, Bücher und der 34c3

Auch dieses Jahr zieht es mich über Weihnachten und Silvester ans Meer. Ganze 10 Tage Zeit sich um guten Essen, die Natur mit viel frischer Luft und einer Menge digitalen Inhalten zu kümmern. Folgende Werke stehen dieses Jahr ganz oben auf meiner Liste:

Los geht es mit einem Buch über DAS Retrogame schlechthin. Die Rede ist von NetHack. Geschrieben hat es bereits 2015 der amerikanische Autor David L. Craddock mit dem Titel  Dungeon Hacks: How NetHack, Angband, and Other Roguelikes Changed the Course of Video Games. Ähnlich wie Strangers Things von Netflix holt es auf 246 Seiten die 80er Jahre des letzten Jahrhunderts aus der Sicht eines Nerds zurück. Genau das richtige für das erste Runterkommen…

Über die Feiertage darf es natürlich auch etwas schwerere Kost sein. Hier habe ich schon seit einigen Monaten Das metrische Wir: Über die Quantifizierung des Sozialen aus dem Suhrkamp Verlag, von Steffen Mau auf meiner Liste. Das Thema Soziometrie muss jeden interessieren, der viel mit Daten zu tun hat. Sei es im Rahmen von eCommerce, CRM oder Online Marketing. Hier werde ich sicherlich dann auch etwas Zeit finden mich intensiver mit dem Thema Social Scoring zu beschäftigen, mit dessen Hilfe die Chinesische Regierung ihre Bürger „erziehen“ möchte.

Richtung Neujahr geht es auch wieder in Richtung Arbeit. Zur richtigen Einstimmung auf die technischen Herausforderungen 2018 werde ich Terraform: Up & Running von Yevgeniy Brikman zuende lesen. Dieses Tool bietet ein interessantes Abstraktionslevel beim Thema Infrastructure-as-Code und ist darüber hinaus Cloud-agnostisch.

Zwischen den Jahren findet, wie auch in den letzten  34 Jahren, der Chaos Computer Congress (CCC) statt. Dieses Mal in Leipzig. Die App erlaubt mir auch am Strand oder in er gemütlichen Teestube den Vorträgen auf dem 34C3 zu lauschen. Bei der Durchsicht des diesjährigen Fahrplans fand ich folgende Vorträge interessant: Zum Buch von Steffen Mau paßt der Vortrag ‚Gamified Control?‘ von Katika Kühnreich am 1. Tag. Etwas unterhaltsamer wird sicherlich der Vortrag Unleash your smart-home devices: Vacuum Cleaning Robot Hacking von Daniel Wegemer. Das Thema DSGVO und ePrivacy wird nächstes Jahr so ziemlich jeden ITler in der EU beschäftigen. Ein interessanter Vortrag zu dem Thema scheint die Lobby-Schlacht um die ePrivacy-Verordnung von Ingo Dachwitz zu werden. Die Digitale Fotografie hat in den letzten Jahren die Nutzung analogen Filmmaterials für Privatpersonen nahezu vollständig verdrängt. Zu praktisch ist es die Bilder gleich zu sehen, zu verändern und zu teilen ohne sie erst teuer entwickeln zu müssen. Doch muss die Digitalisierung nicht bei den Urlaubsfotos halt machen. Jean Runtoul wird in seinem Vortrag über Low Cost Non-Invasive Biomedical Imaging einen Blick auf die Möglichkeiten biomedizinischer, digitaler Bildverarbeitung bieten. Leider ist es nicht so leicht die eigenen Daten aus Geräten von FitBit zu bekommen. Wie es doch geht zeigt Daniel Wegener mit Doping your Fitbit. Mein Retro-Herz wird spätestes beim Vortrag von Harald Welte über BBSs and early Internet access in the 1990ies schlagen. Etwas ernster wird es dann sicherlich bei Hendrik Heuers Beeinflussung durch Künstliche Intelligenz gehenDeep Learning Blindspots von Katharine Jarmul interessiert mich schon von Berufswegen her. Interessant fand ich auch die Ankündigung von A hacker’s guide to Climate Change – What do we know and how do we know it? von seyru, Sven Wilner und Robert Gieseke. Auch über das Thema Cryptowährungen werde ich etwas recherchieren. Passend dazu werde ich mich dann noch cryptocurrencies, smart contracts, etc.: revolutionary tech? von Zooko ansehen.

Und dann geht es vermutlich auch schon wieder ab nach Hause und in ein hoffentlich gesundes und erfolgreiches Jahr 2018!

Deep Learning mit dem iPad (und der Cloud)

Viele Entwickler versuchen ihre Arbeitsprozess ihres Mac Book Pros auf iPads umzustellen (siehe Quellen). Die Gründe dafür sind:

  • Mac Book Pros sind nicht immer so portable wie man es gern hätte (Gewicht)
  • Die Akkulaufzeit der Mac Book Pros ist im Vergleich zum iPad gefühlt nur halb so gut
  • Selbst ein iPad Pro kostet nahezu die Hälfte eines Mac Book Pros  (1000 EUR vs. 2000 EUR)
  • iPads gibt es mit eingebautem LTE für noch freieres Arbeiten jenseits des Firmen-WLANs
  • Das iPad wird auch im Dauerbetrieb nicht heiß und benötigt daher keinen Lüfter
  • Seit iOS 11 und der Möglichkeit des Multitasking können mehr als eine Anwendung gleichzeitig genutzt werden

Daneben arbeiten immer mehr Entwickler und Data Scientists in virtualisierten Umgebungen auf Servern in der Cloud oder innerhalb von Docker Containern. Diese Arbeitsweise ähnelt dabei stark der Terminalbenutzung aus den 70er Jahren des letzten Jahrhunderts. Das iPad dient als Fenster zu den Anwendungen, die auf einem Server VM oder einem Docker Image beherbergt sind. Der große Unterschied liegt jedoch in der Verfügbarkeit mächtiger Werkzeuge auf iOS-Seite und der Verfügbarkeit vorkonfektionierter Maschinen mit alle nötigen Entwicklungstools.

Deep Learning auf dem Server

Amazon Web Service, Google Cloud und auch Microsoft Azure bieten die Möglichkeit einfache, vorkonfektionierte Images zu starten. Im Folgenden möchte ich mich auf die Nutzung der Amazon Cloud beschränken. Für andere Anbieter oder gar einfach Hoster gilt ein ähnliches Vorgehen. Amazon bietet mit dem AWS Deep Learning AMI (DLAMI) eine Sammlung der beliebtesten Werkzeuge für diesen Bereich. Enthalten sind neben Microsofts CNTK, Apaches MXNext, Facebooks Caffe2, Keras, PyTorch, Theano und TensorFlow und die Möglichkeit zu Nutzung von Jupyter Notebooks. Das gut daran ist nicht nur, dass man sich die Installation der entsprechenden Softwarepakete spart und Amazon versucht diese auf einem aktuellen Stand zu halten. DKAMI beinhaltet darüber hinaus auch alle nötigen Treiber und Pakete für die Nutzung von NVIDIAs GPUs innerhalb entsprechender Instanzen. Preise für die Nutzung einer DLAMI Instanz in der Region EU (Ireland) finden sich hier.

DLAMI starten

Um mit dem Amazon Web Service zu arbeiten setzt es entweder einen Webzugang zur Amazon Console oder der Nutzung der AWS-CLI voraus. Die iOS-App AWS Console ermöglicht das Management der Mietinfrastruktur über eine native Anwendung. Mir lässt sich in wenigen Schritten das nötige AMI provisionieren.

Der Instanztyp lässt sich dabei ganz nach belieben und zu bewältigender Aufgabe lösen. Preislich lässt sich mit einer einfachen t2.medium Instanz für $36/Monat oder $0,05 Stunde starten für 4 GB RAM und 2 vCores. Größere Instanztypen wie zum Beispiel ein p3.16xlarge kommt mit 488 GB RAM, 25 Gbit Ethernet, 64 vCores und 8 NVIDIA GPUs für rund $26/h oder $19.000/Monat. Die SecurityGroup der Instanz sollte für SSH (Port 22), Jupyter Notebook (Port 8888) und für das von Mosh verwendete UDP (Port 60000 – 61000) freigeschaltet werden.

Mobile arbeiten benötigt eine flexible Shell

Mobiles arbeiten heisst für mich, dass ich das iPad inkl. BlueTooth Tastatur im Büro zuklappe mich in die nächste S-Bahn setzte und dort ggf. weiterarbeiten kann ohne das die SSH-Verbindung beim Übergang vom Firmen-WLAN in ein 3G/4G-Netz einfach abbricht. Das funktioniert mit normalem TCP-basiertem SSH leider nicht. Abhilfe schafft die Mobile Shell oder kurz Mosh des MITs. Diese basiert auf UDP und kommt mit sich ändernden IP-Adressen wunderbar klar. Darüber hinaus puffert MOSH Eingaben auch, so dass man in der Regel von langsamen Verbindungen nichts zu spüren bekommt. Mit Blink gibt es auch eine iOS-Implementierung die zwar nicht billig ist (21 EUR) aber jeden Cent wert, wenn man Zeit bei der Neuinitialisierung bei Verbindungsabbrüchen sparen kann. Für die Installation innerhalb des DLAMIs reicht ein einfaches

$ sudo apt-get install mosh

Um Mosh innerhalb der Blink Shell zu nutzen sollte sowohl ein neuer SSH-Key als auch ein Host eingerichtet werden.

Über den <host> lässt sich dann direkt die Verbindung in der Blink Shell auf den Host aufbauen

Nach dem Start lässt sich zum Beispiel TensorFlow wie folgt nutzten. Als erstes aktiviert man die entsprechende Version mit

$ source activate tensorflow_p36

und erzeugt dann eine einfache Testanwendung mit Hilfe von vim, zum Beispiel mit folgendem Inhalt:

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Danach kann die TensorFlow-Anwendung mit

$ python3 tensorflow-hello.py

ausgeführt werden.

Editor und Git

Das Thema Code-Editor lässt sich auf vielfachem Weg lösen. Generell gibt es aus Sicht des iPad-Nutzers folgende Szenarien:

  1. Ein lokaler Editor ermöglicht die Code-Änderung z.B. innerhalb eines (Remote-) Git-Repositories
  2. Man nutzt eine Cloud-IDE wie Cloud9 von AWS
  3. Man nutzt ein sauber konfigurierten VIM innerhalb seines AMIs

Als lokaler Editior hat sich der Buffer Editor für iOS bewährt. Dieser unterstützt auf iOS eine Reihe von Diensten wue GitHub, GitLan, iCloud, DropBox, Googel Drive, FTP, SSH und SFTP für den Datenaustausch. Darüber hinaus unterstützt er eine Reihe von VIM-Kommandos und bringt eine große Anzahl unterstützter Programmiersprachen mit. Die von mir benötigten sind Bash, Java, Python und SQL. Benötigt man mehr Freiheitsgrade bei der Konfiguration des eigenen Editors, bietet sich Möglichkeit 3.) an. Auf dem DLAMI lässt sich VI/VIM installieren und entsprechend konfigurieren. Hierbei lassen sich dann auch alle erdenklichen Erweiterungen nutzen. Ich habe dazu folgende .vimrc auf dem DLAMI geschoben.

Jupyter Notebook Server

Auch ein Jupyter Notebook lässt sich im DLAMI betreiben. Wichtig ist nur, dass man diesen richtig absichert, da sonst jeder aus dem Internet Zugriff auf die Notebooks hätte. Am besten erzeugt man sich erstmal ein geeignetes SSL-Zertifikat und ein Passwort für den Schutz des Notebooks. Mit

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch

erzeugt man das Zertifikat und mit Hilfe von ipython erzeugt man einen Passworthash:

$ ipython
iPythonPrompt> from IPython.lib import passwd 
iPythonPrompt> passwd()

Beide Teile trägt man unter .jupyter in die Konfigurationsdatei ein und startet den jupyter server mit

$ jupyter notebook

Weitere Tools

Es gibt noch eine Reihe weiterer Tools, welche sich für die Arbeit mit dem iPad und der Cloud eignen. Statt Blink lässt sich auch mit Panics (https://panic.com) Prompt 2 (https://panic.com/prompt/) arbeiten, besonders wenn man keine Mosh benötigt. Freunde dieses Tools können auch gleich mit Coda aus gleichem Hause arbeiten. Eine weitere, leistungsfähige Terminal-Anwendung stellt Terminus dar. Nachteil im Gegensatz zu Blink ist, dass Terminus nur als Abo erhältlich ist. Möchte man seine GitHub-Repros auf iOS intuitiver verwaltet, bietet sich iOctocat an. Für die lokale Python Entwicklung empfiehlt sich Pythonista auf dem iPad. Und wer einen schönen Jupyter Notebook Client unter iOS haben möchte, kann zu Juno greifen. Schliesslich lohnt auch noch ein Blick auf Editorial, wohl einem der leistungsstärksten (Markdown) Editoren unter iOS.

Quellen

https://stories.appbot.co/hey-apple-i-tried-the-ipad-pro-as-a-dev-machine-its-almost-awesome-830e424bbed3
https://stories.appbot.co/hey-apple-i-tried-the-ipad-pro-as-a-dev-machine-its-almost-awesome-830e424bbed3
https://jann.is/ipad-pro-for-programming/
https://www.martenbjork.com/blog/2017/6/21/web-development-on-the-ipad-pro
http://decoding.io/using-ipad-pro-as-a-web-developer/
https://blog.ouseful.info/2014/12/12/seven-ways-of-running-ipython-notebooks/
http://keeganhin.es/blog/ds.html

Show your Data Science Workplace!

I like surveys like that. To see how other people organize their daily work with all their hard- and software. I will also give a short insight to my workplace setup and how do I use it. The blog post from Benjamin ask the following questions to get an deep inside:

How many monitors do you use (or wish to have)?

Well, as you see on the picture above, I’m using two monitors at the same time. One in a horizontal and one in a vertical direction. On the horizontal display I’m working with mail, short documents and terminal windows (many thanks to the guys from Magnet.app to implement a macOS windows manager that works). The vertical one is for Jira swimlanes, web sites, MacVim edits, wiki entries and kibana dashboards. I’m using the same LG model (I forgot the name but I like this white one). Both are connected on my MacBook Pro. One on HDMI (yes I’m using yet another adapter) and one on a USB-C-to-DVI connector.

What hardware do you use? Apple? Dell? Lenovo? Others?

Yes, I’m using a Apple MacBook Pro, latest generation (2016). I’m not so satisfied with it because of the battery lifetime and the monitor handling. From time to time If I disconnected my two displays, I can’t reanimate the display output in a conference room (beamer or tv). It is a f*** digital adapter and synchronization nightmare. But the big plus is the weight. If I take it away to my home office, it is not so heavy as my old one. I like the touch bar but I don’t use it in this configuration. Only if I lie on my sofa without any external monitor.

Which OS do you use (or prefer)? MacOS, Linux, Windows? Virtual Machines?

I’m using macOS hight sierra on my MacBook Pro. This is not the latest supported macOS from my company but I have an „early adopter“ status for that. On the server side, I prefer Linux and therefor mainly Centos. We’re using customized Centos AMIs on AWS.

What are your favorite databases, programming languages and tools? (e.g. Python, R, SAS, Postgre, Neo4J,…)

In Big Data projects, I’m using Hive and Spark for data engineering tasks. For business intelligence tasks I’m using Impala together with Tableau. For data science tasks we’re using Clouderas Data Science Workbench together with Python and Spark.

Which data dou you analyze on your local hardware? Which in server clusters or clouds?

I do not analyse any data on my local machine. We had a strong security and governance process to analyse data. The data that we’re analyse comes from a virtual private cloud on AWS. The data is encrypted at rest and is encrypted by transport too (VPN, SSL et cetera).

If you use clouds, do you prefer Azure, AWS, Google or others?

I prefer AWS at the moment because I’m working with it. I like the API first approach of Amazons webservices and I like services like Lambda or the machine learning APIs. Amazon is the market leader and very innovativ in many fields. We’re using the AWS API together with Ansible and Terraform.

Where do you make your notes/memos/sketches. On paper or digital?

I prefer digital notes because of its searchability. I store all of my notes inside the companies Microsoft Exchange server because then I can access the notes also from my mobile phone too. I’m working mainly with macOS notebook for all of my sketches.

Praxiseinstieg Deep Learning

Heute ist der Erscheinungstermin meines ersten Buchs für den O’Reilly Verlag. Damit endet eine Reise die bereits Anfang letzten Jahres angefangen hat als Idee, ein Buch zu schreiben, welches eine praxisnahe Einführung in das Thema Deep Learning bietet. Das erste Konzept dafür sah vor, dass vor allen Dingen ich lerne, was Deep Learning eigentlich ist und warum das Thema, zusammen mit Maschine Learning und Data Science, in den Vereinigsten Staaten so ein Hype ist.

Natürlich hatte ich mich auch in der Vergangenheit, und da vornehmlich im Studium, dem Thema künstliche neuronale Netze gewidmet. Das Thema ist ja, ohne tiefer in die lineare Algebra einzusteigen, leider nicht so leicht verdaulich, wie es uns die Nachrichten über AlphaGo oder selbstfahrende Autos glauben lassen. Das Thema künstliche neuronale Netze, einem Teilbereich der Künstlichen Intelligenz, hat eine lange Historie und das macht es nicht einfach die verschiedenen Tipping Points zu erklären, welche das Thema in den letzten Jahren, teilweise unter Ausschluß einer breiten Öffentlichkeit, vorangetrieben hat. Die wichtigsten Einflußfaktoren habe ich versucht in meinem Buch darzustellen. Diese sind für mich:

  • Vorhandensein großer Datenmengen (Big Data) und deren Verarbeitungsmöglichkeiten (Hadoop, Spark etc.)
  • Fortschritte in den Neurowissenschaften
  • Verfügbarkeit der nötigen Rechenkraft in Form von Grafikkarten für eine hohe Parallelisierung der Berechungs inkl. Low-Level Frameworks wie CUDA, BLAST etc.

Dies alles in ein Buch zu packen und dann auch noch mit praktischen Beispielen zu garnieren war nicht immer einfach. Eine große Herausforderung war dabei vor allen Dingen der schnelle Fortschritt im Bereich Frameworks und die damit verbundene Schnittstelleninkompatibilität. Was gestern so funktioniert hatte, war heute schon nicht mehr lauffähig. So gab es allein bei Googles TensorFlow ganze vier Minorreleases und den Sprung auf Version 1.0. Als ich mit dem Text angefangen habe, gab es Caffe als reines Universitätsprojekt.  Nach Fertigstellung der entsprechende Kapitel verkündete Facebook die Verfügbarkeit von Caffe2. Der Autor des Caffe-Framworkf, Yangqing Jia war zu Facebook gewechselt. Aktuell wird nicht die aktuelle Version von TensorFlow unterstützt, da ich die Beispiele noch nicht getestet habe. Ich werde aber versuchen, nach und nach, die Beispiele zum Buch und auch das Dockerfile an die neusten Versionen anzupassen und bestehende Fehler zu beseitigen.

Das ich sowohl zeitlich als auch thematisch etwas in der Konzeption richtig gemacht habe, verraten mir die Zahlen der Vorbestellungen, die mittlerweile einer höheren, hundertstellige Anzahl  entsprechen, was mich stolz und ängstlich zugleich macht. Dies sollte aber alle Interessierten nicht davon abhalten sich das Buch entweder direkt auf der Seite von O’Reilly Deutschland, bei Amazon, Thalia, Hugendubel oder einem Buchhändler seines Vertrauen zu kaufen und/oder auf die eBook-Version zu warten, welche vorrausichtlich noch dieses Jahr erscheint.

Zum Schluß noch eine Anmerkung zum Thema O’Reilly: Bereits seit 1990, als ich zum ersten Mal einen Unix Rechner nutzen durfte, kenne ich diese Verlag. Die verschiedenfarbigen Referenzen zum X11 Windows System sind mir in sehr guter Erinnerung geblieben. Danach kamen die berühmten Tiere auf die Titel und der Wunsch reifte, dass ich für diesen Verlag auch einmal schreiben wollte. Heute, rund 28 Jahre später, bin ich nun auch endlich Teil dieses Verlags, bzw. seinem deutschen Lizenznehmer, dem dPunkt Verlag aus Heidelberg.

Ich hoffe, dass ich mit meinem kleinen Beitrag zum Thema Deep Learning, den einen oder die andere dazu bewegen kann, sich mit diesem Thema zu beschäftigen. Ich glaube, dass wir in nächster Zeit noch viele Anwendungen sehen werden, die mit Hilfe von Deep Learning Verfahren implementiert wurden. Die Leser meines Buches wissen dann zumindest, was sich hinter diesem Begriff verbirgt und wie er sich technologisch einordnen lässt.

It’s all about data

It’s all about Data

Nach 13 Jahren im Online Marketing wird es Zeit, das ich mich auf ein neues Terrain wage. Nach zwei Stationen bei Vermarktern von Online Werbung und meiner aktuellen Station bei einer Online Marketing Agentur, wechsle ich ab dem 1. Februar zu Tchibo.

Am Online Marketing haben mich zu aller erst auch die vielen Daten und deren Verarbeitung fasziniert. All die Kontaktpunkte, Kampagnendaten, Abschlüsse, Likes, Käufe, Gewinnspielteilnahmen.

Eine Perfomance Marketing Agentur war vor 6 Jahren der richtige Schritt, da Vermarkter immer nur einen kleinen Teil dieser Daten sehen und nur der Kunde und seine Agentur ein vollumfängliches Bild der Erfolgsmessung sehen.

Diese Faszination an den eigentlichen Daten habe ich nach wie vor.  Doch etwas hat sich im Laufe der Zeit geändert. Längst sind Technologie aus dem Online Marketing bei den Kunden selber angekommen und immer öfter entscheiden Bidding-Algorithmen wer, wann und zu welchem Preis, welche Ansprache ausgespielt werden. Online Marketing Daten werden so zum unternehmenskritischen Bestandteil wie Besucher- und Absatzzahlen, Umsatzprognosen, und dem Return on Investment .

Längst werden Tausenderkontakte, CPOs, ROIs und WKUs nicht nur auf Webseiten und den Kundenportalen, sondern auch in den mobilen Apps und am Point-of-Sale gemessen. Immer stärker wachsen diese Datenquellen zusammen und es wird an numerischen Modellen gearbeitet, welche die Einflussfaktoren jedes Kanals berücksichtigen um so den Verbraucher noch zielgenauer mit für ihn passenden Angeboten im richtigen Moment zu versorgen.

Dazu wird es immer wichtiger Informationsinfrastrukturen zu schaffen, welche flexibel und schnell auf diese neuen Anforderungen reagieren können.

Die Chance zu bekommen, den Aufbau einer solchen Big Data Infrastruktur für die Tchibo hier in Hamburg mit zu gestalten, empfinde ich nicht nur als äußerst spannende Herausforderung, sondern auch als großes Privileg. Und das obwohl ich mich mit diesen Technologien schon seit über 6 Jahren, in wechselnden Kontexten, beschäftigen durfte.

Fehlen werden mir persönlich die lieben Kollegen meiner beiden Teams und der rege Austausch mit allen Mitarbeitern bei Performance Media, Performance Advertising und Digital Media. Ein Glück ist der Überseering mit der U1 nicht weit vom Stephansplatz entfernt, so dass  ich versuchen werde, die über die Jahre geknüpften Banden nicht abreißen zu lassen. Es war wirklich eine besondere und spannende Zeit. DANKE!

Apples Health Daten mit Spark analysieren

Nicht alle Fitnesstracker verweigern den Export der Daten ihrer Besitzer. Seit dem iPhone 5s zeichnet der M6-Chip jeden Schritt seines Nutzers auf. Um an diese Daten zu gelangen und daraus ein paar nette Erkenntnisse zu ziehen, ist nicht viel Aufwand nötig. Um an die Daten zu kommen müssen diese aus der App mit dem Herz im Logo, exportiert werden. Dies erfolgt am einfachsten als Email in folgenden Schritten:

Zuerst muss man die Aktivitäts App öffnen und auf das Icon oben rechts mit dem Kopf im Kreis klicken

apple-health-001

Daraufhin erscheint das eigenen Profil und die Daten lassen sich über den Link Daten exportieren am unseren Rand exportieren.

apple-health-002apple-health-003apple-health-004

Die EMail enthält, je nach Zeit, eine mehrere Megabyte große ZIP-Datei mit. Ausgepackt enthält diese zwei XML-Dateien. Die größere von beiden enthält die relevanten Bewegungsdaten. Um die Daten einfach verarbeiten zu können, lohnt sich die Konvertierung in eine CSV-Datei. Da es sich um XML-Daten handelt liegt die Idee nahe, dass man diese am besten auch als XML-Objekt einliesst. Doch Vorsicht: Der resultierende DOM kann, je nach Datenmenge, sich zu einem beachtlichen Monster im Hauptspeicher aufblasen. Besser funktioniert es mit Lösungen die zeilenbasiert vorgehen. Ich habe die Lösung von Kristian Desch etwas adaptiert und einen CSV-Export integriert. Das Python Skript kommt gänzlich ohne zusätzliche Pakete aus und kann mit Hilfe von

bildschirmfoto-2017-01-07-um-14-00-12

von meinen GitHub-Account herunter geladen werden. Das Skript schaut in das lokale Verzeichnis nach der Datei Exportieren.xml und wandelt diese in eine Datei mit Namen AppleHealthData.csv um. Sind die Daten in dieses Format erst einmal konvertiert, kann die Verarbeitung innerhalb einer geeigneten Python- und Spark-Umgebung erfolgen. Am einfachsten besorgt man sich diese Umgebung als Docker-Container von DockerHub. Bewährt hat sich der Spark- und Jupyter-Docker-Container von Peter Parente.

bildschirmfoto-2017-01-07-um-14-02-32

Damit die CSV-Daten verarbeiten können müssen diese in den Docker-Container kopiert werden. Dies geht wieder über einen Kommandozeilen-Aufruf mit

$ docker cp AppleHealthData.csv pyspark-notebook:/home/jovyan/work/.

Innerhalb eines neuen Jupyter-Notizbuchs kann die CSV-Datei in ein Spark DataFrame geladen werden.

bildschirmfoto-2017-01-07-um-14-06-48

Das Spark-Dataframe ermöglicht die Verarbeitung der Daten über einfache Funktionen. So ermöglicht die Funktion printSchema() die Ansicht des Schematas der CSV-Daten:

bildschirmfoto-2017-01-07-um-14-11-01

Die Daten enthalten 4 Spalten. In der ersten Spalte steht der Zeitstempel der Aktivität, in der zweiten Spalte der Quelle (z.B. iPhone, Apple Watch etc.), in der dritten Spalte der so genannte HealthType und in der letzten Spalte der so genannte HealthValue. Schauen wir uns den HealthType mal etwas genauer an

bildschirmfoto-2017-01-07-um-14-14-15

Wie zu erkennen ist, stehen in den Daten ganz unterschiedliche Arten von Gesundheitsdaten. Schauen wir uns einmal die Daten eines bestimmten HealthTypes an

bildschirmfoto-2017-01-07-um-14-15-49

Zu sehen sind die Schritt-Messungen meines iPhones aus dem November 2015 auf Sekundenbasis. Aber auch andere Daten sind interessant. Mit Hilfe des HealthTypes KQuantityTypeIdentifierHeartRate wurde die Herzfrequenz mit Hilfe der Apple Watch gemessen.  Den Durchschnittswert aller Messwerte, das Minimum und das Maximum liefert folgende Abfrage

bildschirmfoto-2017-01-07-um-14-20-07

Möchte man lieber die SQL-Notation für die Abfrage der Daten nutzen, so lässt sich dies über den SqlContext von Spark realisieren.

bildschirmfoto-2017-01-07-um-14-23-11

Ich hoffe, die gezeigten Beispiele konnten einen ersten Überblick darüber geben, wie einfach es ist mit Hilfe von Python und Spark, die Gesundheitsdaten von Apples iPhone zu verarbeiten und zu analysieren.

Sommer, Sonne, Strand und Bücher

Die Tage sind gezählt und der Sommerurlaub rückt immer näher. Wie jedes Jahr will der Lesestoff dabei gut geplant sein. Allerdings sind gottlob die Zeiten vorbei, wo man die Wahl der Strandlektüre von deren Gewicht abhängig machen musste. Dank Tablets und eBook-Reader kann man heutzutage nahezu jegliche Anzahl Bücher mit an den Urlaubsort seiner Wahl nehmen. Dieser Sommer steht bei mir ganz klar im Zeichen von Maschine Learning und fantastischer Literatur. Demnach dürfen folgende, neue Fachbücher in elektronischer Form mitreisen:

Maschinendämmerung von Thomas Rid

ist deswegen so spannend, weil es das uralt Thema Kybernetik in seiner historischen Bedeutung für das jetzt (Stichwort quantified self) beleuchtet.

Die Berechnung der Zukunft von Nate Silver

Auch wenn der Autor im aktuellen Spiegel wegen Falschprognosen im US Amerikanischen Wahlkampf sein Fett weg bekommen hat bin ich schon gespannt darauf, wie man das Bayes-Theorem ohne die eigentliche Formel erklären kann. Ich hab mich schon tapfer durch den ganzen Baseball-Kram gekämpft und hoffe jetzt auf weitere Erkenntnisse.

Passend dazu werde ich mir das eine oder andere Kapitel aus

Predictive Analytics for Dummies von Anasse Bari, Mohamed Chaouchi und Tommy Jung

ansehen. Vermutlich aber nur das IV Kapitel über die praktische Anwendung mit Python und R lesen und da mein Python auch schon etwas eingerostet ist werde ich mir noch das eine oder andere Kapitel aus

Automate the boring stuff with Python von Al Sweigart

und

Python for Data Analysis 

ansehen. Damit dürfte die 2. Woche gerettet sein, wenn der berüchtigte Informations-Turkey einsetzt.

An Romanen werde ich folgende Werke endlich mal durchlesen:

Chronik des Cthulhu-Mythos von H.P. Lovecraft 

Als echter Klassiker dieses Jahr mein „Der weisse Hai“-Ersatz. Ausserdem mag ich die Sprache der ersten Dekaden des 19. Jahrhunderts sehr gern und mein Wissen um das Gesamtwerk von H.P. Lovecraft kann eine Auffrischung vertragen. Mit

Blade Runner/Ubik/Marsianischer Zeitsturz von Philip K. Dick

steht ein weiterer Klassiker auf meiner Romanliste den ich endlich einmal durchlesen möchte obwohl ich Blade Runner schon sicherlich drei Mal gelesen habe.

 

2015 – Das Jahr der Sensoren

Big Data ist ja vor allem dort interessant, wo sich diese Daten selber erzeugen lassen. Mittlerweile gibt es für viele Lebensbereiche Systeme, mit denen man die unterschiedlichsten Daten einfach und automatisch erfassem kann. Gut ist, dass die Hersteller solcher Systeme immer mehr dazu übergehen, offene Schnittstellen für den Zugriff auf diese Daten zu realisieren. Zwar nutzen viele dieser Systeme für den Privatgebrauch zumeist Apps für iOS und Android, aber diese „sprechen“ zumeist über HTTP(S) oder Bluetooth mit den Sensoren. Systeme die keine ausreichende Dokumentation ihrer Datenschittstelle aufweisen, werde ich meiden und nur die Systeme kaufen, bei denen ich selber die Möglichkeit bekomme die Daten auszulesen. Folgende Geräte werde ich 2015 nutzen um für mich interessante Daten zu erheben:

1. Wetterstation von Netatmo

6_v

Zugegeben hat mich auch der Formfaktor dieser eleganten Aluminumröhren angesprochen. Mit Hilfe der zwei Stationen lassen sich Aussentemperatur, Luftfeuchtigkeit und Luftdruck im Aussenbereich und Temperatur, Luftfeuchtigkeit, Luftqualität, CO2-Gehalt und der Schallpegel in dB im Innenbereich messen. Einmal im WLAN konfiguriert lassen sich die Daten über eine Webseite bei Netatmo oder über eine entsprechende App für iOS (iPhone und iPad) oder Android anzeigen. Hier werden nicht nur die aktuellen Werte angezeigt, sondern auch zeitliche Verläufe dargestellt.
Zugriff auf die Daten enthält man über eine RESTful API welche hier dokumentiert ist. Auch hier erweist sich GitHub als Quelle der Wahl um die Anbindung an die Lieblingsprogrammiersprache zu finden. So findest sich hier eine Anbindung der Wetterstation in Python und hier eine für Java.

2. Die intelligente Steckdose Fritz!DECT200 von AVM

fritzdect_200_left_de_640x600

Seit dem wir Stromkunden bei Lichtblick sind und damit ausschliesslich Ökostrom beziehen, interessiere ich mich noch einmal mehr dafür, welche Gerät in unserem Haushalt wieviel Strom verbaucht. Um das herauszufinden kann man einfache Energiemonitore wie die Voltcraft-Geräte von Conrad nutzen. Da ich die so erhobenen Daten gerne digital weiterverarbeiten möchte, habe ich mich nach einem entsprechenden Gerät mit WLAN-Anschluss umgeschaut. Die Fritz!DECT200 hat sich angeboten, da wir selber eine Fritzbox von AVM für unsere Telefonie und unseren Zugang zum Internet nutzen. Allerings werden die Daten hier nicht über WLAN sondern über eine verschlüsselte DECT-Verbindung zur Fritzbox übertragen. Dort lässt sich die Steckdose auch konfigurieren und bei bedarf auch ein- und ausschalten.

Mein Ziel ist es, gängige Verbraucher mit Hilfe der Fritz!DECT200 über den Zeitraum von einer Woche zu vermessen um so ein Gefühl dafür zu bekommen, was zum Beispiel unsere Waschmaschine, unsere Spülmaschine, unser Fernseher (inkl. aller daran angeschlossener Geräte) und mein Computer pro Woche an Strom verbrauchen. Praktisch bei der Konfiguration der AVM Steckdose ist, dass sich auch der Preis einer Kilowattstunde (aus der aktuellen Stromrechnung) hinterlegen lässt.

Um an die Daten unabhängig von der Fritzbox zu kommen, bietet AVM sein Home Automation HTTP Interface an. Über diese Schnittstelle lassen sich die Daten der Steckdose auslesen oder schalten. Wer keine Lust hat die Schnittstelle selber zu implementieren wird auch auf GitHub fündig. So liefert zum Beispiel Roland Huss eine einfache Anbindung zu Perl.

3. Aktivitätstracker FitBit ZIP

simple.b-cssdisabled-jpg.h44f5ed89bcca0dbb35dbf5da738ded64.pack

Den FitBit ZIP hab ich jetzt schon über ein Jahr. Interessant an dem Gerät finde ich eigentlich nur den Schrittzähler. Nachdem ich diesen bereits Anfang letztes Jahr zur Unterstützung meiner „guten Vorsätze“ angeschaft hatte, nutze ich ihn seit Anfang diesen Jahres vermutlich aus dem gleichen Grund. Er motiviert mich das eine oder andere Stockwerk zu Fuss und nicht nur mit dem Fahrstuhl zu erreichen und er belohnt mich am Ende des Tages dafür, wenn ich ohne Schirm zu Fuss durch den Regen nach Hause gehen muss. Die Daten sind bequem über die Webseite und über die iOS oder Android App einzusehen. Auch FitBit bietet hier eine Dokumentation zu ihrer RESTful API an. Auch hier findet sich, wie bei den eingangs beschriebenen Geräten, Implementierungen der Schnittstelle für die unterschiedlichsten Programmiersprachen auf GitHub. Von Brad Pitcher stammt die Python Implementierung der API.

Mal sehen, welche der genannten Geräte ich am Ende dieses Jahres immer noch nutze und welche Ergebnisse ich mit der Nutzung von ihnen erzielt habe. Happy Hacking 2015!

Facebook mit SQL-Engine für Hadoop

banner01

In meinem Artikel in der iX 08/2013 habe ich mich mit den unterschiedlichen Produkten rund um Realtime-SQL und Hadoop beschäftigt. Nun gibt es ein solches Produkt auch von Facebook. Es heisst Presto und steht als Open Source über GitHub unter Apache Lizenz. Die Mächtigkeit der unterstützten SQL-Ausdrücke lässt zwar noch ein wenig zu wünschen übrig in der aktuellen Version 0.52, aber ein ordentliches SELECT gibt es schon mal. Wer die Geschwindigkeit von Hive kennt, wird über das Video auf der Startseite von Presto sicherlich erfreut sein. Hier findet keine aufwändige Code-Generierung für MapReduce-Jobs sondern eine echte Verteilung der SQL-Abfrage statt. Bleibt abzuwarten ob Facebook Presto in dem Umfang weiter entwickelt wie Hortonworks Stinger oder Cloudera Impala.