Eine alte Weisheit besagt folgendes:

Wenn man erstmal einen Hammer in der Hand hat sieht alles aus wie ein Nagel.

Wenn man also halbwegs mit dem gängigen Unix-Werkzeugkasten (grep, cut, sed und awk) umgehen kann ist man geneigt diese Tools immer einzusetzen wenn Informationen aus Dateien zu extrahieren sind. Damit auf strukturierte Daten loszugehen ist allerdings nicht nur fehlerträchtig sondern auch alles andere als elegant.

Vor längerer Zeit habe ich hier mal auf jq hingewiesen. Das ist die Lösung wenn man in seiner Eigenschaft als Shell-Skript Daten aus JSON-Datensätzen braucht, mittlerweile konnte ich da schon einige Male drauf zurück greifen.

Jetzt habe ich was vergleichbares für XML-Daten gesucht, und wie es aussieht ist XMLStarlet das Werkzeug der Wahl (Disclaimer: ich habe nicht lange gesucht, NOCH bin ich für Gegenvorschläge offen ;-) ).

Erste Anwendung ist wieder, einen ungetrübten Blick auf das gewählte Dokument zu werfen. Mein Feed ist ein insofern ein schlechtes Beispiel als dass der Code ziemlich sauber formatiert ist, aber der Trick wird klar (die Sache mit dem Backslash am Zeilenende setze ich mal voraus):

Als nächstes interessieren mich vielleicht die Titel der letzten Artikel. Dazu selektiere ich alles was auf den XPath //rss/channel/item matched, und lasse mir jeweils den Wert von title ausgeben. Gefolgt von einem Zeilenumbruch:

Aber wann habe ich denn meinen letzten Artikel veröffentlicht? Dazu matche ich nur auf das erste Element und lasse mir davon das pubDate geben, zur besseren Lesbarkeit wieder gefolgt von einem Zeilenumbruch:

Abschließend wüsste ich gerne noch worum es in meinem letzten Artikel ging. Auch das können wir formschön aus dem Feed extrahieren, allerdings wird das Kommando natürlich entsprechend unübersichtlicher. Wir matchen wieder auf das erste Item, lassen uns den Titel und einen Zeilenumbruch geben. Dann matchen wir innerhalb des Items (!) auf category. Dem Inhalt dieser Felder stellen wir jeweils einen Spiegelstrich voran, die Zeile beenden wir wieder mit dem Zeilenumbruch. So sieht das Kommando dann fertig aus:

Das Netz hält einige Artikel mit Beispielen parat, aber genau wie dieser Text kratzen die nur an der Oberfläche. XMLStarlet ist sicher ein Spielzeug mit dem man sich bei Gelegenheit mal länger auseinandersetzen sollte. Zumindest macht es den Standard-Werkzeugkasten im Umgang mit XML-Daten absolut obsolet.

Gestern habe ich auf Twitter gelesen dass es im Zabbix-Share ein Modul gibt mit dem man das Monitoring-Tool meiner Wahl — Zabbix — direkt auf einen Arduino zugreifen lassen kann: Zabbuino nennt sich das.

Komischerweise habe ich letzte Woche erst überlegt wieviel Aufwand es wohl sein mag, das Zabbix-Protokoll nachzuimplementieren. Ich bastele zur Zeit wieder mal mit dem WLAN-fähigen Chip ESP8266 herum, den hatte ich hier auch schon erwähnt. Damit lassen sich prima Messwerte einsammeln, und das schreit dann nach Zabbix. Mein erster Ansatz war, Messdaten per HTTP zur Verfügung zu stellen. Die werden dann von einem Skript periodisch abgeholt und per zabbix_send eingespeist. Wesentlich eleganter wäre es natürlich, Zabbix direkt auf den Sensor zugreifen zu lassen…

Es wäre also wirklich mal einen Versuch wert, das Zabbuino-Modul in Verbindung mit einer kleinen ESP8266-Platine zu testen, die kann man auch fuer deutlich unter fünf Euro kaufen. Oder hat das schon jemand ausprobiert?

Da ich das letzte Woche aber noch nicht kannte habe ich schon einen dritten Weg eingeschlagen. Noch viel besser, wie ich finde. Das ist aber eine andere Geschichte, und die soll ein anderes Mal erzählt werden…

Nachgemessen

Nachgemessen

Vor einer Weile hat mich jemand auf WeMos aufmerksam gemacht. Das sind kleine Entwicklungsplatinen, ähnlich wie Arduino. Im Gegensatz zu dem befindet sich darauf allerdings kein kleiner AVR-Controller, sondern der deutlich schnellere ESP8266 — mit dem ich ja in anderer Bauform auch schon rumgespielt habe. Dementsprechend funken die kleinen auch im WLAN. Da die WeMOS-Boards direkt per USB an den Rechner angeschlossen werden können entfällt das Gefummel mit RS232-Konvertern und 3,3V Versorgungsspannung, und programmiert wird komfortabel über die Arduino-IDE.

Sehr interessant ist die Mini-Variante. Dabei muss man zwangsläufig an das Buzzword Internet of Things denken. :-)

Für den Mini gibt es auch direkt ein Shield mit einem DHT22. Das ist ein Sensor mit dem man digital Temperatur und Luftfeuchtigkeit auslesen kann. Solche Messknoten will ich schon seit langem im Haus verteilen, und diese Boards sehen so aus als ob sie dafür gemacht sind. Der Wemos und das Shield kosten jeweils rund 4,50 Euro, so ist das auch ein bezahlbarer Spaß.

Abweichung je nach Anordnung

Abweichung je nach Anordnung

Die Programmierung war — Arduino-typisch dank der vielen Bibliotheken — nicht allzu schwer, so hatte ich nach kurzer Zeit einen funktionierenden Messknoten, samt der Messwerte im Zabbix.

Aber die Temperaturen waren verblüffend. Im Wohnzimmer ist es warm, aber nicht über 28°C. Nanu?

Das Infrarot-Thermometer hat mir dann verraten dass der WeMos stellenweise bis zu 32°C warm wird, und die Temperatur im DHT etwa 7°C über Raumtemperatur. Und richtig genug: wenn ich mein Platinen-Sandwich senkrecht positioniert habe waren es dank der Luftzirkulation nur noch 5°C zu viel. Mit dem Shield direkt neben dem WeMos — also nicht als Sandwich — waren es nur noch 2°C. Vielleicht hätte ich für den Versuch auch dünnere Drähte nehmen sollen. Vernünftige Werte habe ich erst bekommen als ich den Sensor thermisch komplett von dem WeMos entkoppelt habe, durch etwa 10cm Draht. :-(

Also: gute Idee, leider nicht ganz zu Ende gedacht. Von den WeMos-Boards werde ich mir wohl noch ein paar zulegen, aber die Sensoren kommen dann wohl in freier Verdrahtung zum Einsatz. Und vielleicht durch ein Gehäuse vom ESP getrennt…

Oh, eine andere Möglichkeit wäre vielleicht, die Sensoren aktiv zu machen. Bei mir werden die zur Zeit passiv abgefragt, per HTTP. Dazu müssen sie natürlich durchgehend im Netz sein. Wenn die sich beispielsweise nur alle fünf Minuten aktivieren und dann zum Beispiel per MQTT ihre Werte abliefern hätten sie vielleicht gar keine Zeit um sich aufzuheizen… und vielleicht würde diese Variante eh mehr Sinn machen. Schon allein wegen des Stromverbrauches (der im Moment übrigens bei 70mA am USB-Port liegt). Mal sehen…

Gerade habe ich in die Präsentation reingesehen mit der Steve Jobs im Oktober 1988 sein damaliges Baby, den NeXT, vorgestellt hat. Bei Minute 07:11 sagt er folgendes:

I think the PC was everything it was ever going to be in 1986.

Fast genau so schön wie die 640kB, die Bill Gates zugeschrieben werden. :-D

Auch wenn ich den NeXT faszinierend finde, das Video habe ich dann doch nicht mehr ganz gesehen. Ohne die Slides macht das wenig Spass.

Komischer Zufall. Ich muss zugeben dass mir der Name erstmal nichts gesagt hätte. Wenn ich nicht letzte Woche den Text zu Claude Shannon geschrieben hätte, dem Erbauer der ersten Useless Machine. Der hat das eben nach einer Idee von Marvin Minsky getan, und eben dieser Herr Minsky ist diese Woche verstorben.

Ich finde es wirklich schade dass man solche Namen nicht kennt, insbesondere wenn man in der IT arbeitet und sich — wie ich — auch gerne mal mit deren Geschichte befasst. :-(

Letzte Woche hatte ich ja schon gelesen dass Minsky sich die Useless Machine ausgedacht hat. Ich weiß auch seit letzter Woche dass er Stanley Kubrick bei der Ausgestaltung von 2001 beraten hat, und dass er vor allem ein Pionier in der künstlichen Intelligenz war.

Wie ich Heute an verschiedenen Stellen lese war sein AI Lab am MIT nicht nur an der Entwicklung des Arpanet, dort wurde auch der Gedanke propagiert dass digitale Informationen frei sein sollten — was sich später dann zur Open-Source-Bewegung entwickelt hat. Danke!

Useless Machine

Useless Machine

Vor zwei Wochen hat jemand die Useless Machine für meine Erfindung gehalten, weil er meine gesehen hat. Ich konnte ihm leider nur sagen dass das ein alter Hut ist, und auf keinen Fall meine eigene Erfindung. Wer sich das ausgedacht hat wusste ich aber nicht.

Aus dem Grund möchte ich hier eben auf Claude Shannon hinweisen. Ein offenbar ziemlich verschrobener Mathematiker, und ein leidenschaftlicher Tüftler, er würde im April diesen Jahres 100. Der hat nicht nur die Useless Machine (bzw. Ultimate Machine, nach einer Idee von Marvin Minsky) gebaut, sondern eine ganze Reihe von Gerätschaften deren Charme in ihrer absoluten Nutzlosigkeit liegt. Zugegeben: Nutzlosigkeit ist im Auge des Betrachters. Wenn ich also mal dringenden Bedarf an einem Jonglier-Roboter habe, oder an einer Maschine die Zauberwürfel lösen kann, weiß ich wonach ich suchen muss…

Oh, nebenbei war Shannon auch ein Pionier der digitalen Schaltungstechnik, hat das Bit benannt, digitale Kommunikation propagiert und praktisch die Kryptographie zu einer Wissenschaft gemacht. Aber hey… Useless Machine! :-)

Alle üblichen Medien melden Heute dass amerikanische Wissenschaftler einen neunten Planeten gefunden haben wollen. 2016 ist es zehn Jahre her dass der Pluto seinen Planetenstatus verloren hat. Pluto, der einzige Planet der von Amerikanern entdeckt wurde. Kann es nicht sein dass diese Planet-Nine-Sache nur dazu dienen soll den Slogan von Donald Trump zu stützen? Make america great again…?

(Keine Bange, ich meine das nicht ernst. :-D )

image

Rechnung vom 09.09.1994

Noch ein Fundstück vom Aufräumen: eine Rechnung von 1994. Zwischen Abi und Studium habe ich gearbeitet, und so konnte ich mir zu Beginn des Studiums einen neuen Computer leisten. Ein AMD DX2-80 (praktisch ein 486er) mit 4MB RAM, 420MB Platte und VGA-Grafik. Den passenden Bildschirm hatte ich noch von dem 486SX-20 den ich vorher hatte (welcher seinerseits einen XT abgelöst hatte).

Der Bolide konnte nicht nur die allgegenwärtige Kombination aus DOS und Windows 3.11 ausführen, neben einigen muss-ich-nicht-haben-Programmen gehörte auch Corel Draw 4 zum Paket. Damals habe ich da auch echt viel mit gespielt, das war auch ernsthaft kaufentscheidend.

So ausgestattet ist der Kasten dann 1995 mit mir nach Dortmund gezogen, ins Studentenwohnheim.

An der Uni wurde damals objektorientierte Programmierung in der Sprache Beta unterrichtet. Die Übungsaufgaben konnten dann im sogenannten ‚Pizza-Pool‘ erledigt werden, einem Raum voller Sun SPARCstations mit Namen wie Salami, Diavolo oder Speciale. Ging auch nur da, den Beta-Compiler gab es nämlich nur für Solaris und Linux.

Linux?

Kannte ich bis dahin noch nicht. Unix fand ich aufregend (‚gut‘ kann ich nicht behaupten, weil ich die ganze Tragweite da noch nicht überblicken konnte). Und sowas kann ich auch zu Hause benutzen?

Naja, so einfach war es nicht. Ich habe im Allkauf (Real gab es noch nicht), eine Zeitschrift gefunden (würde mich nicht wundern wenn die mir nächste Tage noch in die Hände fällt), darin waren zwei CDs: Slackware. Die Installation war damals noch ein echtes Abenteuer. Ohne eigens compilierten Kernel ging da nicht viel mehr als eine Shell. Ich habe zwei Wochen und viel Hilfe von einem SunOS-erfahrenen Kommilitonen gebraucht um X11 zu starten (die grafische Oberfläche, damals noch mit dem Window-Manager TWM).

Handbuch von SuSE 6.0

Damals war das hilfreich

So habe ich Linux damals schon faszinierend gefunden, und ich hatte auch immer eine Partition auf der Platte. Trotzdem habe ich nicht wirklich ernsthaft was damit gemacht. So richtig ging es dann erst Ende 1998 wieder los, mit einer SuSE-Distribution, 5.2 oder 5.3 müsste das gewesen sein. Da hat es dann auch nicht mehr lange gedauert bis das mit wechselnden Distributionen mein Haupt-Betriebssystem wurde, ich glaube 2000 oder 2001 habe ich mein letztes privates Windows-System ausgeschaltet. Seitdem habe ich an meine Rechner nur noch Linux und — in Spezialfällen — BSD gelassen.

image

Neues aus dem Internet

Die habe ich beim Aufräumen gefunden. Vor 17 Jahren konnte man ‚Internetausdrucken‘ noch als Journalismus verkaufen… :-D

(Nicht falsch verstehen: nichts gegen das Linux Magazin, das lese ich immer noch gerne.)