Learning GTK, Python and Matplotlib in a weekend

As my girlfriend spent the easter weekend with her family I had time to spend some time with coding again. As I wanted to learn GTK for some time now I figured now is the time. My first attempts were trying to build a window with a menu, interacting with mouseclicks and using some other widgets. The code I came up is not really useful yet but let’s follow the release early, release often principle.

What works: Loading via filebrowser, displaying the opened image, resizing while preserving the aspect ration, getting mouseclicks in pixel position and in percentage of the image to get the same click position on the image regardless of the scaling factor and drawing on the image with cairo.

The other code is a gtk3-ified version of some of my earlier code published here.

What works: Getting live input from the serial port, displaying a matplotlib widget inside the gtk3 window with multiple plots, running the graph update inside a separate thread to keep the gui responsive.

You can find the code here:
https://github.com/piratenpanda/code

Offener Brief an die Zuschauerredaktion des ZDF

Sehr geehrte Damen und Herren,

mit großer Verwunderung musste ich heute beim Schauen des ZDF-Morgenmagazins feststellen, in welcher perfiden Art und Weise Stimmung für die Vorratsdatenspeicherung gemacht wurde. Zuerst das Thema mit Kinderpornographie und Gefahren des Netzes einleiten, um dann geschickt die Vorratsdatenspeicherung zu fordern, bzw. die Gegner so darzustellen, als fänden sie das, was mit den Kindern passiert nicht so schlimm, finde ich unerträglich und eines öffentlich-rechtlichen Fernsehsenders nicht würdig. Ich erwarte von über Zwangsabgaben vom Zuschauer finanzierte Berichte, dass sie neutral formuliert sind und beide Seiten beleuchten und nicht einseitig Stimmung machen. Der Öffentlich-Rechtliche-Rundfunk hat, auch wenn das heutzutage oft gerne vernachlässigt wird, einen Bildungsauftrag und dazu gehört es auch zu erwähnen, dass die Vorratsdatenspeicherung die Aufklärung von Delikten im Internet eben NICHT erhöht hat [1], die erste Version davon verfassungswidrig war [2] und gegen das Grundgesetz verstieß und dass die nicht umgesetzte EU-Richtlinie gerade überarbeitet wird [3]. Das alles ist nicht passiert. Zudem wurde hier die Problematik höchst unsachlich dargestellt und versucht mittels Emotionalität zwei vollkommen unterschiedliche Themen in Verbindung zu bringen.

Mit freundlichen Grüßen
Benjamin Lebsanft

1: https://www.vorratsdatenspeicherung.de/content/view/539/55/lang,de/

2: http://www.spiegel.de/netzwelt/netzpolitik/grundsatzurteil-vorratsdatenspeicherung-verstoesst-gegen-verfassung-a-681122.html

3: https://netzpolitik.org/2012/eu-kommission-uberarbeitung-der-richtlinie-zur-vorratsdatenspeicherung-wird-noch-weiter-verschoben/

Live plotting data from the serial port using Python, Matplotlib and an Arduino

Yesterday I set out to figure out how to live plot data measured by my Arduino using Python and Matplotlib. While there is plenty information and code how to achieve this, I missed some easy and understandable code. So how to do this:

First we need some Arduino sketch that uses the serial port to send data. I’ve used some temperature setup from the Arduino Starter Kit found here:
http://www.oomlout.com/oom.php/products/ardx/circ-10

Now let’s take a look at the python code. You need pySerial, numpy and matplotlib of course.

import serial
import numpy as np
from matplotlib import pyplot as plt

Then you open the connection to the serial port:

ser = serial.Serial('/dev/ttyACM0', 9600)

Now we need to activate matplotlib’s interactive mode:

plt.ion() # set plot to animated

After this we select the range of the x-axis and fill those 50 values with zeros:

ydata = [0] * 50

Now we start the plot. To make matplotlib aware of more incoming data don’t forget the comma after ‘line’:

ax1=plt.axes()  

# make plot
line, = plt.plot(ydata)
plt.ylim([10,40]) # set the y-range to 10 to 40

Now comes the tricky part. First i read data from the serial port and check if it’s in the right format. The Arduino returns values in the form “x.y” where x and y are numbers. Sometimes the script reads two values at once which would lead to an error while plotting so I split the incoming value at the dot and check if there’s only one dot in there and the length of the split is 2.

To understand the following part I need to explain what I did to get the plot working. At the moment we have the x-axis with 50 zeros. Now I read one value at a time from the serial port. append it to the y-data array and afterwards I delete the first element from the y-data array so that the total number of elements in my array is 50 at all times.

Now I automatically adjust the y-limits by using the min and max values from the y-data array and give it a +-10 range.

And finally I tell matplotlib that there is new data to plot by using line.set_xdata and line.set_ydata. To refresh the plot you just have to use plt.draw():

# start data collection
while True:  
	data = ser.readline().rstrip() # read data from serial 
                                   # port and strip line endings
	if len(data.split(".")) == 2:
		ymin = float(min(ydata))-10
		ymax = float(max(ydata))+10
		plt.ylim([ymin,ymax])
		ydata.append(data)
		del ydata[0]
		line.set_xdata(np.arange(len(ydata)))
        line.set_ydata(ydata)  # update the data
        plt.draw() # update the plot

And the whole script altogether:

import serial
import numpy as np
from matplotlib import pyplot as plt
ser = serial.Serial('/dev/ttyACM0', 9600)

plt.ion() # set plot to animated

ydata = [0] * 50
ax1=plt.axes()  

# make plot
line, = plt.plot(ydata)
plt.ylim([10,40])

# start data collection
while True:  
	data = ser.readline().rstrip() # read data from serial 
                                   # port and strip line endings
	if len(data.split(".")) == 2:
		ymin = float(min(ydata))-10
		ymax = float(max(ydata))+10
		plt.ylim([ymin,ymax])
		ydata.append(data)
		del ydata[0]
		line.set_xdata(np.arange(len(ydata)))
        line.set_ydata(ydata)  # update the data
       	plt.draw() # update the plot

Warum ich freie Software liebe

Der Grund, warum ich ein Fan von freier Software bin, ist vielschichtig und einfach zugleich. Mit freier Software kann ich mein Wissen erweitern, meine Arbeit erledigen, Freiheit erlangen, Spaß haben, anderen Menschen helfen und die Welt verbessern. Freie Software begleitet mich schon sehr lange und ich bin jeden Tag wieder glücklich und froh, dass es viele Menschen gibt, die es ähnlich sehen wie ich und ihre Zeit in freie Projekte stecken! Danke dafür!

fsfe_ilovefs_1_0_small

Tatort Rezension – Machtlos

Gestern Abend war es wieder so weit. Ein neuer Tatort stand an. Ich weiß ja nicht wie es Euch geht, aber die Qualität der Tatorte hat entweder abgenommen oder mein Anspruch hat sich über die letzten Jahre erhöht. Nur wenige sind spannend, logisch, viele hingegen zeigen die Polizei oft in gesetzüberschreitenden Handlungen ohne Konsequenzen und erfüllen den Bildungsauftrag der Öffentlich-Rechtlichen eigentlich gar nicht mehr. Schauspielerisch gibt es eigentlich kaum was auszusetzen. Vielleicht sollten die UrheberInnen deshalb ihre Energie mal weniger auf tendenziöse Urheberrechtskampagnen konzentrieren, sondern mehr auf ihre eigentliche Arbeit, nämlich gute Drehbücher zu schreiben.

Aber zurück zum eigentlichen Thema. Der Tatort gestern Abend. Die Handlung lässt sich grob umreißen mit: Reiche Banker-Familie mit Kind, Kind wird entführt, Entführer schickt DVD mit Video vom Kind und der ersten Lösegeldforderung. Unter Beobachtung der Polizei verteilt er die ersten 500.000€ in bester Robin-Hood-Manier auf dem Alexanderplatz an Passanten um sich danach von der Polizei festnehmen zu lassen. Die zweite Lösegeldforderung will er dort den Eltern persönlich mitteilen. Die Gründe, warum er das Kind entführte werden im ganzen Tatort nur mit einem Satz des Entführers angesprochen. Dabei handelt es sich jedoch bei Lebensmittelspekulationen um so ein wichtiges Thema, dass man das meiner Meinung nach deutlich ausbauen hätte müssen, damit der Zuschauer auch Einblicke in die Problematik erhält. Weder hat der Entführer eine medienwirksame Pressekonferenz gegeben, noch hat er seine Gründe näher erläutert, wo die Kommissare dann die Möglichkeit gehabt hätten, den Zuschauern die Spekulationsproblematik erklären zu können ( Eine Möglichkeit: Kommissar1: “Was meint er denn mit Lebensmittelspekulationen, wo ist das Problem?” Kommissar2: “Schau her, ich erklär’s dir”).

Der Sohn des Entführers ist auch eher schwach dargestellt, hätte er doch die Möglichkeit gehabt mehr auf den Vater einzuwirken, in der Art von, “Hey Vadder, ich kann dich verstehen, aber Entführen geht gar nicht, aber schau ich hab da ne Idee für dich: Du gehst in den Knast, schreibst danach ein Buch über das Thema und erzeugst somit Aufmerksamkeit dafür”. Nein, er wird lieber überfordert mit der Situation dargestellt und geht unverrichteter Dinge ohne den Vater überzeugen zu können.

Gegenübergestellt mit der Tatsache, dass jede Sekunde viele Kinder durch diese Problematik sterben, lässt die Trauer der Mutter, “Ich habe 10 Jahre versucht schwanger zu werden, also nimm mir nicht mein Kind jetzt weg” geradezu grotesk wirken. Aber auch hier wird wieder nicht darauf eingegangen. Der Entführer sagt nichts, bis er schlussendlich dann doch einbricht, und den Eltern den Aufenthaltsort des Sohnes mitteilt, unter der Bedingung, dass die reiche Familie 10 Mio € an nicht näher definierte Einrichtungen spendet.

Das Kind wird zum Schluss dann wohlbehalten von den Kommissaren befreit. Die Handlungen des Bankers aber bleiben ohne Konsequenzen. Anstatt der Möglichkeit Reue zu zeigen, erleidet der Ärmste abseits der Kamera einen Nervenzusammenbruch. Ob das Geld gespendet wird, bleibt fraglich. Die Chance für ein tragisches Endes wird nicht genutzt. Aber wo, wenn nicht im Tatort, sollen den sonst Menschen sterben können?

So geht ein Tatort, der eigentlich die Möglichkeit hatte, eine aktuelle schwerwiegende Problematik einem Millionenpublikum näherzubringen, ohne Signalwirkung zu Ende. Es gibt keine Gesamtaussage, die Problematik der Lebensmittelspekulationen geht im Handlungsstrang unter, als wäre nichts gewesen. Das hätte man auch besser machen können, schade um das gute Thema.

GNOME-Spendenkampagne für mehr Privatsphäre

Nach der Keynote von Jacob Appelbaum auf dem 29C3, dem 29. Chaos Communication Congress, der diesmal seit langem wieder in Hamburg stattfand, ist es einem umso bewusster geworden, wie wichtig Privatsphäre und die Verhinderung der immer weiter ausufernden Überwachungsphantasien der Sicherheitsbehörden geworden sind.

Genauso wichtig ist es aber, den Nutzern einfache Mittel in die Hand zu geben, um die eigene private Kommunikation absichern zu können. Genau hier setzt die aktuelle GNOME-Spendenkampagne an.

Ziel ist es 20.000 Dollar zu sammeln um damit die folgenden Ziele zu erreichen:

  • application containment
  • enhanced disk encryption support
  • Tor integration
  • user control over diagnostic reporting features
  • robust VPN routing
  • application integration with system-wide privacy settings
  • controls for how GNOME devices are identified on local networks
  • anti-phishing features for Web, GNOME’s web browser

Wer also ein wenig übrig hat, kann dazu beitragen, die populäre Desktop-Oberfläche fit für moderne Privatsphären-Einstellungen zu machen. Jeder Cent zählt! Danke :)

 

Mein erster Monat mit dem Kobo Glo eBook-Reader

Lange habe ich darüber nachgedacht mit einen eBook-Reader zu kaufen, da eBooks im Vergleich zu “echten” Büchern nichts wiegen, nicht kaputt gehen und günstiger sind. Jedoch hatte ich bisher nicht den Anreiz, Bücher digital zu kaufen, da diese meist mit einer Digitalen Rechte Minderung (DRM) versehen sind, damit der böse Käufer sie auch ja nicht so nutzen kann, wie er das von Totholz-Büchern gewohnt ist. Vermutlich dauert es noch eine Weile, aber dann werden wir auch die Wandlung sehen, die die Musik und Filmbranche schon durchgemacht hat und jede andere offenbar ohne etwas von anderen zu lernen am eigenen Leib erleben muss. DRM ist ein DIng der Vergangenheit, davon bin ich überzeugt.

Verfügbare DRM-freie Bücher

Da es aber mittlerweile neben dem Humble-e-Book-Bundle und dem Storybundle Möglichkeiten, DRM-freie eBooks zu kaufen und es auf gutenberg.org englische gemeinfreie Bücher gibt, mit zahlreichen landesspezifischen Partnerseiten und man sogar Wikipedia-Artikel als eBook exportieren kann, ist die Anschaffung eines Readers mittlerweile durchaus lohnenswert geworden. Wenn man nicht den Vendor-Lockin von Amazon unterstützen will findet man auf oben genannten Seiten genügend Alternativen um die nächsten Jahrhunderte lesend verbringen zu können.

Persönliche Kaufentscheidung

Persönlich war mir bei meiner Entscheidung wichtig, dass es kein Gerät von Amazon sein soll und ich meine Dateien einfach plattformunabhängig per USB draufschieben können will. Da zur Zeit als ich gesucht habe, gerade neue Geräte mit hochauflösenden E-Ink-Displays (1024×768) auf den Markt kamen und einige sogar Hintergrundbeleuchtung boten, fiel die Wahl recht schnell auf den Kobo Glo. Dieser war der erste Reader mit LED-Hintergrund, oder besser Wellenleitungsbeleuchtung durch eine Plastikschicht über dem Display, die vermutlich so strukturiert ist, dass sie das Licht der LEDs nach unten auf das Display auskoppelt, der verfügbar war und da schon der Kobo Touch ziemlich gute Bewertungen bekam, habe ich mich dafür entschieden.

E.T. auslöschen

Wenn man den Reader zum ersten Mal anschaltet, muss man das Gerät bei Kobo registrieren, bzw. dort einen Account machen und seinen Reader damit verknüpfen. Wen die damit verbunden Datenschutzimplikationen (was lese ich, wann lese ich, etc.) stören, sollte die Verbindungen zur Kobo-Seite blockieren, damit der Reader erst gar nicht nach Hause telefonieren kann. Zudem scheint es noch eine Verbindung zu Google Analytics zu geben, die man mit diesem Update deaktivieren kann.

Bücher lesen

Da ich noch keine Erfahrung mit anderen E-Readern hatte, ist der folgende Abschnitt sehr subjektiv. Um Bücher zu lesen, kopiert man sie auf den per Mikro-USB-Kabel angeschlossenen Reader oder auf eine Mikro-SD-Karte, entfernt danach das Kabel, das Gerät aktualisiert seine Datenbank und schon kann’s losgehen. Viel einfacher und plattformunabhängiger geht’s nicht.

Das Schriftbild ist herrlich scharf, man kann bei den mitgelieferten Schriftarten so ziemlich alles einstellen, was das Typografie-Herz begehrt. Zeilenabstand, Schriftgröße, Schriftdicke, etc. Im Sonnenlicht und an hellen Orten liest es sich ohne die integrierte Beleuchtung wie ein echtes Buch, nicht spiegelt, nichts reflektiert, purer Schriftgenuss, tolles Display! Wenn es dann mal doch zu dunkel sein soll, aktiviert man einfach mit einer Hardwaretaste die Beleuchtung und kann die feinstufig den Gegebenheiten anpassen. Vielen Leuten ist die niedrigste Stufe zu hell, ich finde sie aber ausreichend gering. Wer da empfindlich ist, sollte sich das Gerät wohl erst mal im Laden anschauen.

Mir macht das Lesen damit auf jeden Fall mehr Spaß als erwartet und die Vorteile gegenüber den Totholzvarianten kommen in vielen Punkten voll zum Tragen. Wer sich das echte Bücherregal zuhause natürlich lieber vollstellt, ist mit eBooks sicher falsch aufgehoben, wer indes nur gerne liest so wie ich, dem kann ich den Kobo Glo nur an’s Herz legen.