Planet Entropia (CCC Karlsruhe)



This planet is made of fresh clean feeds by members of the Entropia bunch

The software

The Harvester is made of fresh flesh, clean design by Tigion, hacked-together Ruby scripts by Astro and Atom support by Neingeist

To Be Fed

wget the RSS-1.0 feed!


Missing something?
Contact Neingeist via Mail or Jabber:






nomeata’s mind shares

19.07.2014 17:13:00

Good bye GNOME

When I was young...

I have been a user of GNOME for a long time. I must have started using it in either 2000 or 2001, when LinuxTag was in Stuttgart. For some reason I wanted to start using one of the two Desktop Environments available (having used fvwm95 and/or IceWM before, I believe). I approached one of the guys at the GNOME booth and asked the question “Why should I use GNOME over KDE?”, knowing that it is quite a silly question, but unable to come up with a better one. He replied something along the lines of “Because it is part of GNU”, and that was good enough for me. Not that it matters a lot whether I use one or the other, but it was a way to decide it.

Back then GNOME was still version 1.2, with detachable menus and lots of very colorful themes – I first had something with thick yellow borders and then a brushed metal look. Back then, sawfish was the window manager of choice.

I used GNOME for many years. People complained when GNOME 2.0 came out, but I liked the approach they were taking: Simplicity and good defaults are a time saver! I did my bit of customization, such has having my panel vertically on the left edge, and even had a tool running that would react on certain events and make the window manager do stuff, such as removing the title bar and the borders from my terminals – naked terminals are very geeky (I forgot the name of the tool, but surely some will recognize and remember it).

Leaving the path of conformance

In 2009 I got more and more involved in Haskell and stumbled over xmonad, a tiling window manager implemented and configured in Haskell. I found this a user interface that like a lot, so I started using it. This was no problem: GNOME happily let me replace the default window manager (metacity) with xmonad, and continue working. I even implemented the necessary support in xmonad so that it would spare out the gnome-panel, and that the pager (which displays the workspaces and windows) would work, and even interact with xmonad.

I was happy with this setup for a few more years, until GNOME3 came out. Since then, it has become harder and harder to maintain the setup. The main reason is gnome-shell, which replaces both gnome-panel and doesn’t work with any window manager but the new default, mutter. I want to use GNOME’s panel, but not its window manager, so I was stuck with a hardly maintained gnome-panel. I fixed what I could (with some patches applied upstream two years after submission, and some not at all) and lived with the remaining warts.

The end (for now)

But a few days ago, GNOME 3.12 was pushed to Debian and I couldn’t even logout our shut down the computer any more, as gnome-session tries to talk to gnome-shell now to do that. Also, monitor configuration (e.g. remembering what setup to use when which monitors are attached) has been moved to gnome-shell. I tried to work around it a bit, but I quickly realized that it was time to make a decision: Either do it the GNOME way all the way, including using gnome-shell, or ditch GNOME:

Now as I said: I like the design and the philosophy of GNOME, including GNOME3, and I have told people who were complaining about it first to give it a try, and succeeded. I also tried it, but after years using a tiling window manager, I just couldn’t adjust to not having that any more. If xmonad could be changed to remotely control gnome-shell, I this might actually work for me! I think one of the biggest problems I had was to adjust to how gnome-shell handles multiple monitors. In xmonad, my workspaces are independent of the monitors, and I can move any workspace to any monitor.

So I had to ditch GNOME. My session now consists of a shell script making some adjustments (blank black background, loading the xmodmap), starts a few tools (taffybar, mail-notification, nagstamon, xscreensaver and dunst) and executes xmonad. So far it works good. It boots faster, it suspends faster.

I still use some GNOME components. I login using gdm (but it is auto-login, I guess I could try something faster), and gnome-keyring-daemon is also started. And I still use evolution (which has its own set of very disappointing problems in the current version).

Compared to my old setup, I’m still missing my beloved link-monitor-applet, but I guess I can implement an approximation to that in taffybar. The same for some other statistics like cpu temperature. I don’t have the GNOME menu any more, which I did not use regularly, but was useful occasionally.

The biggest problem so far is the lack of session management: I yet have to find a good way to logout and shutdown, while still giving Firefox time to finish without believing it crashed. Dear lazyweb: What is the best solution for that problem? Can systemd help me here somehow?

All in all I want to thank the GNOME guys for providing me with a great desktop environment for over a decade, and I hope I’ll be able to use it again one day (and hopefully not out of necessity and lack of viable alternatives).


nomeata’s mind shares

19.06.2014 20:00:00

Another instance of Haskell Bytes

When I gave my “Haskell Bytes” talk on the runtime representation of Haskell values the first time, I wrote here “It is in German, so [..] if you want me to translate it, then (convince your professor or employer to) invite me to hold the talk again“. This has just happened: I got to hold the talk as a Tech Talk at Galois in Portland, so now you can fetch the text also in English. Thanks to Jason for inviting me!

This was on my way to the Oregon Summer School on Programming Languages in Eugene, where I’m right now enjoying the shade of a tree next to the campus. We’ve got a relatively packed program with lectures on dependent types, categorical logic and other stuff, and more student talks in the evening (which unfortunately always collide with the open board game evenings at the local board game store). So at least we started to have a round of diplomacy, where I am about to be crushed from four sides at once. (And no, I don’t think that this has triggered the “illegal download warning” that the University of Oregon received about our internet use and threatens our internet connectivity.)


nomeata’s mind shares

08.06.2014 19:34:00

ZuriHac 2014

I’m writing this on the train back from the ZuriHac Haskell Hackathon in Zürich, generously sponsored by Better and Google. My goal for this event was to attract new people to work on GHC, the Haskell compiler, so I announced a „GHC bugsquashing project“. I collected a few seemingly simple ticket that have a good effort/reward ratio for beginners and encouraged those who showed up to pick one to work on.

Roughly six people started, and four actually worked on GHC on all three days. The biggest hurdle for them was to get GHC built for the first time, especially those using a Mac or Windows. They also had to learn to avoid recompilation of the whole compiler, which takes an annoying amount of time (~30 minutes for most people). But once such hurdles weren taken all of them managed to find their way around the source code to the place they need to touch and were able to produce a patch, some of which are already merged into GHC master. When I wasn’t giving tips and hints I was working on various small tickets myself, but nothing of great impact. I very much hope that this event will pay off and one or two of the newcomers end up being regular contributors to GHC.

We took breaks from our respective projects to listen to interesting talks by Edward Kmett and Simon Marlow, and on Saturday evening we all went to the shores of the Zurisee and had a nice Barbecue. It was a good opportunity to get into contact with more of the attendees (the hacking itself was separated in multiple smaller office rooms) and I was happy to hear about people having read my recent Call Arity paper, and even found it valuable.

Thanks to the organizers and sponsors for this nice opportunity!


nomeata’s mind shares

28.05.2014 21:43:00

Predicting the livetime of a Hackage package

The Debian Haskell Group has no proper policy about when to update a certain package to a new version from Hackage. So far, we upgrade when one of us personally needs something, when someone nudges us, if its required as a dependency or just when we feel like it. I was thinking about ways to improve that.

One thing that we should definitely do is to upgrade to new versions that differ only in the forth version number, e.g. from to – these are most likely bug fix uploads and have little risk of breaking things. (Unless they are only changes to the .cabal file, then they might not be an improvement for our users or us.) I plan to code that soon.

But what else can we do? Ideally we’d package versions that will be the newest version for a long time, and not versions that are going to be replaced the next day. Unfortunately, deciding that requires visionary powers. But maybe there is a correlation between the upload history and the lifetime of a new package? Maybe there are patterns, e.g. the first upload after a long time tends to be replaced fast, but the third package in a short succession has a high chance to live long? Can we predict the livetime of a freshly uploaded package? So after a bit of hacking I got this graphic:

It needs a bit explanation: Both axis are time differences, the picture is one year by one year. For every release of which we know the lifetime (i.e. there has been an upload later), we draw its history on a vertical line. The horizontal position of the line corresponds to the lifetime of the release: A package that was superseded immediately later (which I sometimes do after spotting annoying typos) would appear on the far left, a package that is stable for one year on the far right.

The history itself is a series of dots, representing the previous uploads of that package, with their distance from the lower edge indicating the time that has passed since then. So if a package had two updates half a year ago, and then no update for another half year, it would contribute two dots right above each other in the middle of the picture.

Unfortunately, the picture does not yield any insight, besides that short-lived packages are more frequent than long-lived packages.

So I tried another view:

I grouped uploads by the livetime of their two preceding uploads. For each such groups, the circle indicates the average livetime. The darkness indicates the absolute number in the sample. So we see a correlation between the packages livetime and the livetime of its predecessor, which is also not very surprising. We can state some hypothesis, like: “A package replacing a very old package is likely to be long-lived if its pre-predecessor lived very long or very shortly, but less so if that lived for a few months.“ But I’m not sure of the significance of these.

I could have also taken into account which uploads are major and which are minor, by looking at the version number, but I didn’t.

What’s the conclusion? Nothing much. I got some funny looking graphs. And there needs to be a way to render pictures like the first within the axes of a Chart diagram. I put the (somewhat hackish) code online – feel free to play with it.


nomeata’s mind shares

26.05.2014 12:10:00

Does list fusion work?

I’m writing this in the lunch break of TFP in Soesterberg. The invited talk this morning was by Geoffrey Mainland, and he talked about the difficulties of (informal) reasoning about performance in high-level languages like Haskell, especially with fancy stuff in the compiler like fusion. So I couldn’t help but think about a (very small) help here.

Consider the the two very similar expressions foldl (+) 0 [0..1000] and foldr (+) 0 [0..1000]. Which of these fuse away the list? Hopefully both, but hard to predict.

So with my list-fusion-probe library, you can write

import Data.List.Fusion.Probe (fuseThis)
main = print $ foldr (+) 0 (fuseThis [0..1001])

and find out. If you compile this (with -O!), it will print


If you change the foldr to foldl, it will print

Test: fuseThis: List did not fuse

So you can see that the function fuseThis :: [a] -> [a] does nothing if the list gets fused away, but causes a run-time error if not. It allows you to annotate your code with your assumptions of list fusion, and get shouted at if your assumptions are wrong.

It wouldn’t be hard to have the compiler give a warning or error message at compile time; we’d just need to introduce a special function abortCompilation that, when found in the code during compilation, does just that.

Note that you’ll have trouble reproducing the above in GHC HEAD, where foldl does fuse (which is what I’m going to talk about tomorrow here).


nomeata’s mind shares

09.05.2014 07:59:00

Going to TFP 2014

Near the end of my internship with Simon Peyton Jones at MSR Cambridge I tackled the problem that foldl is not a good consumer in the sense of list fusion, as the resulting code compiles quite badly. I found an analysis that would allow GHC to safely do the required transformation to fix this in the common case; I dubbed this analysis Call Arity. The code is in GHC master (but not in 7.8), and I get to present at the Trends in Functional Programming conference in Soesterburg in 2½ weeks. If you are curious you can either look at the code in CallArity.hs or the submitted paper, which yet has to go through the formal post-conference peer review in order to be officially accepted.

If you are going to TFP as well and want to get your GPG key signed, just talk to me there!


nomeata’s mind shares

24.04.2014 22:07:00

gtk-vector-screenshot screencast

I recently installed piwik on my website, to get some idea about how it is being used. Piwik is a very nice and shiny tool, although it is slightly scary to watch people walk through your website, click for click. Anyways, I now know that I get around 50 visitors per day.

But I also learn where they are coming from, and this way I noticed that “Shnatsel” did a very nice screencast of my gtk-vector-screenshot tool – if I had not created it myself I would think it was fake.


Uploads from neingeist

17.04.2014 08:10:32

barcode detection for the visually impaired

neingeist posted a video:

barcode detection for the visually impaired

work in progress


nomeata’s mind shares

02.04.2014 21:10:00

Steuerhinterziehung bei Subway?

Kürzlich war ich, wie üblich vor dem (sehr zu empfehlenden) Spieleabend in der Karlsruher Spielepyramide bei Subway essen. Heute wollte ich wissen, wie viel ich da eigentlich ausgegeben habe. Den Kassenzettel hatte ich nicht mitgenommen, aber da ich bei Subway Punkte sammle kann ich da ja problemlos nachschauen, was mich das Essen gekostet hat.

Den Eintrag „Kauf 8.59 €“ an dem Tag finde ich – allerdings am gleichen Tag auch einen Eintrag „Kaufstornierung -8.59 €“, samt entsprechendem Punkteabzug. Das Sandwich hatte ich gegessen, das Geld habe ich auch nicht mehr, also ist irgendwas faul.

Meine Vermutung ist: Steuerhinterziehung. Wie kürzlich in Der Zeit beschrieben ist es wohl unter Gastronomen zum Teil gängige Praxis, am Abend ein paar Einnahmen aus der Kasse zu löschen – weniger Einnahmen heißt weniger Steuerlast. Bevorzugt natürlich jene bei denen der Kunde den Kassenbon nicht mitgenommen hat. Nun scheint die Subway-Kasse direkt an das Punktesammelsystem angeschlossen zu sein, so dass das Stornieren auch meine Punkte gelöscht hat.

Zum einen bin ich etwas sauer: Nicht nur dass sich ja jemand auf unser aller Kosten um seine steuerlichen Pflichten drückt (sozusagen ein 100000000tel Hoeneß), mir entgehen auch noch meine sauer erfressenen Bonuspunkte!

Andererseits haben es Fast-Food-Franchisenehmer alles andere als einfach, und Subway ist hier wohl ein besonders heftiger Fall – gut möglich dass es der Händler solche Tricks nötig hat, um über die Runden zu kommen. Im Vergleich zu z.B. dem Karlsruher Freshsub haben die bei Subway ganz offensichtlich weniger zu lächeln...

Außerdem entgeht so nicht nur dem Staat ein wenig Geld, sondern auch Subway selbst, die – so schätze ich – einen Anteil des Gewinns oder gar des Umsatzes vom Franchisenehmer einfordern. Dazu passt auch dass Subway auf seiner Facebookseite sehr erpicht darauf war, in einem ähnlichen Fall genau zu erfahren, welcher Händler hier ein Storno durchgeführt hat.

Was lerne ich daraus? In Zukunft den Kassenbon mitnehmen, und wenn mir öfter die Punkte durch den Lappen gehen werde ich den Händler mal drauf ansprechen.


nomeata’s mind shares

05.03.2014 15:43:00

Creative use of screen-message

I just learnt that the math and computer science student body is using screen-message to power an information screen in their room:

There are five instances of screen-message, configured to use non-standard colors and a fixed-width fonts, and controlled by the rather new remote control feature, where screen-messages repeatedly keeps reading text from standard input until a form feed character (ASCII 0x0C) comes, and displays that. The window manager ratpoison takes care of tiling the instances.

It looks quite a bit like a poor man’s version of dividuum’s great info-beamer. I was told that they also tried out info-beamer, but the Raspberry Pi was too slow and weak for that, while screen-message and ratpoison run happily on such small hardware.

Correction: Info-beamer was not tried, but rather ruled out as overkill for this task.


nomeata’s mind shares

10.02.2014 22:12:00

Personalisierte Tip-Toi-Datei als Geschenk

Mein Neffe, gerade frisch 5 Jahre alt geworden, ist ein großer Fan der Ravensburger Tip-Toi-Bücher, und ich glaube er hat inzwischen alle für sein Alter geeignete. Wer das Konzept nicht kennt: Man kauft im Spielwarenladen (z.B. die gut sortierte Spielepyramide in Karlsruhe) recht teure Erklärbücher mit vielen Bildern und wenig Text, und dazu braucht man noch so einen dicken Stift. MIt dem kann man auf die Bildchen im Buch zeigen, und dann erzählt einem der Stift etwas. Im Stift ist ein kleiner Micro-Controller, das heißt er kann auch ein bisschen Logik – etwa: Finde alle Mäuse auf der Seite, dann sagt er einem sowas wie „Gut gemacht“ oder „Die Maus hast du schon“ oder „Das ist doch keine Maus!“. Das Video auf erklärt das auch nochmal.

Zu jedem Buch gibt es auf die entsprechende Datei zum Herunterladen und per USB auf den Stift kopieren. Und wer Computer-Freaks kennt weiß was jetzt passiert: Die Datei wird natürlich einmal im Hex-Editor aufgemacht...

Und nach vielen Stunden Hex-Dateien anschauen haben ein paar Leute, die sich nach und nach bei mir gemeldet haben und mitmachen wollten, und ich es letztendlich geschafft, das Dateiformat zu verstehen: Wir können die vorhandenen Dateien dekodieren und die enthaltenen Audio-Dateien als auch die zugehörige Logik, also was wann wie abgespielt wird, auslesen. Und es geht auch andersrum: Aus eigenen Audio-Aufnahmen komplett eigene GME-Dateien erstellen!

Und so gab es für meinen Neffen zum Geburtstag eine Spezial-Edition des Weltatlas-Buches, wo ich zu einigen Sachen auf den ersten beiden Seiten ihm etwas erzählt hab, mal was mir zu dem Land eingefallen ist, mal was den Ort mit unserer Familie verbindet, oder einfach nur die Geräusche eines Lastschiffes oder eines Löwen nachgemacht. Insgesamt 60 Aufnahmen, und trotzdem nur einen kleinen Teil des Buches abgedeckt – kein Wunder sind die so teuer. Beim Geburtstag kam das dann wohl gut an, wurde mir berichtet, wobei ich nicht einschätzen kann ob es nicht die anwesenden Erwachsenen (die ja eher erwarten dass sowas eigentlich nicht geht) mehr beeindruckt hat als das Geburtstagskind selbst.

Der nächste Schritt wäre jetzt, auch eigene Bücher (oder zumindest Bilder) zu erstellen. Theoretisch wären wir soweit, die optischen Codes sind verstanden, nur braucht man wohl einen etwas besseren Drucker als die die man üblicherweise zu Hause hat. Und ich selbst kanns nicht probieren, weil mir die Hardware fehlt; meine bisherigen Experimente musste ich immer durch andere testen lassen.

Du willst auch so eine GME-Datei für deine Verwandschaft erstellen? Sehr schön! Ich habe eine Anleitung (in Englisch) geschrieben; wenn dabei Probleme auftauchen, einfach nachfragen. Und wenn nicht, würde mich trotzdem sehr interessieren, was du draus gemacht hast und wie es angekommen ist.

Es gibt noch mehr zu tun, z.B. die Logik für die Spiele (also das was mit via dem Würfel unten rechts startet) dekodieren. Mithelfer sind sehr willkommen!


nomeata’s mind shares

19.01.2014 17:22:00

Eine Woche Freizeitstress in Cambridge

So als Strohwitwer hat man ja wenig Gründe, den Feierabend einfach nur zu hause herumzusitzen, und daher habe ich meine Woche inzwischen gut mit Programm gefüllt. Die letzte Woche beispielsweise sah so aus:


Montag abends gings zu einem Tanzkurs des Cambridge Dancer’s Club, dem Tanzverein der Universität. Ich habe mich am Kurs „Ballroom and Latin Advanced“ versucht, und eigentlich war das auch mal mein Tanzniveau, aber das ist etwa 11 Jahre her... und so tat ich mich doch recht schwer. In dem Kurs ging die Zahl der Frauen und Männer auf, und so tanzte ich durchgehend mit einer vielleicht 70-jährigen Dame, die ebenso Schwierigkeiten mit den Figuren hatte, was natürlich auch nicht geholfen hat. Direkt im Anschluss war ein etwas einfacherer Kurs, in dem ich besser mithalten konnte. Hinterher habe ich gesehen dass dieser als  „DanceSport Ballroom Improvers“ deklariert ist, also für Leute die in Richtung Tanzwettbewerb gehen wollen, was ja nicht mein Ziel ist. Ich bin mir noch unschlüssig ob ich hier weiter mache, oder den Tag anders füllen will.


Diestag abend ist die traditionelle „Microsoft Research Interns Movie Night“, deren Organisation inzwischen bei mir gelandet ist. Diese Woche haben wir die neuste Folge der BBC-Serie „Sherlock“ im Auditorium – also mit großem Beamer und Kino-mäßigen Sesseln – geschaut; für nächste Woche ist „Gran Turino“ geplant.


Mittwochs gehts stets zu einer Brettspielrunde, die ich übers Internet gefunden habe, mit einer Spielauswahl fast so groß wie beim Spieleabend in der Karlsruhe Spielepyramide, darunter sehr viele Spiele aus Deutschland, oft auch in der deutschen Ausgabe, mit einer aus dem Internet besorgten englischen Übersetzung. Zum Abschluss spielen wir immer noch eine Runde Bohnanza, wobei aus der Brechbohne dann die „Breckbean“ wird.


Ich bei meinem Schüleraustausch in den USA vor 12 Jahren dort ein bisschen Swing, insbesondere Lindy Hop, getanzt, und seit dem nicht mehr. Daher war ich hoch erfreut zu sehen, dass hier gerade wieder ein Kurs beginnt: Diesmal nicht von der Universität aus, sondern von Cambs and Beds Lindy Experience, die in der Village Hall von Grantchester (da wo die berühmten Cambridger Auen sind) erst Lindy Hop und dann Balboa lehren. Von Lindy Hop hab ich sogar noch einen kleinen Rest im motorischen Gedächtnis, welches mir aber beim Balboa Schwierigkeiten macht: Der Tanz ähnelt oberflächlich dem Disco Fox, das heißt wenn ich auf die Füße achte, mache ich plötzlich Disco-Fox-Figuren (und verwirre meine Tanzpartnerin), und wenn ich auf die Figuren achte machen die Füße Mist. Da hilft wohl nur üben...


Freitags kann ich dann üben, allerdings wiederum Latein- und Standardtanz, beim freien Tanzen in der Cafeteria des University Centers. Diese Woche mit dem unerfreulichen Zusatzprogramm „Fahrradschieben“, weil sich ein Glassplitter in den Reifen gebohrt hat. Aber ich bin hier ja ein verwöhnter Leihfahrradfahrer und hab das Rad also auf dem Rückweg beim Fahrradladen am Bahnhof (soweit sehr zu empfehlen!) angeschlossen, den Schlüssel mit einer kleinen Notiz in den Briefkasten geworfen und am nächsten Morgen frisch repariert und gewartet abholen können – daran könnte man sich gewöhnen.


Samstags hab ich noch nichts wöchentlich regelmäßiges; diese Woche war ein Brettspieletag in Ely (etwa 40 Auto-Minuten nördlich von Cambrige), mit noch mehr neuen Brettspielen. Dort wurde ich auch auf hingewiesen, ein Portal, in dem man viele Brettspiele kostenlos und asynchron, also ohne ständig online zu sein, spielen kann. Das wäre die ideale Plattform für meine eigenen Versuche, Brettspiele umzusetzten (zuletzt meine Adaption von Sim Salim als Sum Serum), doch leider ist mir die technische Umsetzung mit .NET und anderen Microsoft-Produkten doch zu fremd – was hab ich denn schon mit Microsoft am Hut?


Aber eigentlich brauch ich ja auch nicht unbedingt mehr Projekte, meine aktuellen langen ja auch um den Sonntag gut zu füllen. Z.B. in dem ich diesen Blogeintrag schreiben. Aber zur Zeit beschäftigt mich allerdings vor allem das Tip-Toi-Reverse-Engineering, bei dem wir inzwischen in der Lage, nicht nur die Audio-Daten der Tip-Toi-Dateien zu extrahieren, sondern sogar solche Dateien mit komplett eigenen Töne und Spiellogiken für existierende Bücher zu erstellen. Und wenn ich das richtig sehe dann scheitert das basteln von eigenen Büchern nur an der meist zu geringen Auflösung von haushaltsüblichen Druckern.

Kleines PS für die Karlsruher: Wenn ihr das Uni-Kino AFK gut fandet, überlegt doch ob ihr auch deren Crowdfunding-Kampagne unterstützen wollt!



16.01.2014 15:26:00

Memo an mich selbst: praktische Programme

Da ich letztens das Arch Linux auf meinem Laptop neu installiert habe und bis heute noch Programme finde, die ich bisher vergessen habe zu installieren, die ich aber total praktisch sind, hier mal meine Liste der Programme, die für mich auf keinem System fehlen dürfen.

Dieser Artikel ist also eher ein Zusammenschrieb für mich selbst, aber vielleicht findet hier ja jemand noch das ein oder andere nützliche Programm oder auch nur  eine Gedankenstütze bei einer Neuinstallation.Mit einem “*” markierte Einträge sind Programme, von denen ich denke, dass sie besonders praktisch und trotzdem eher unbekannt sind. Diese sind also vielleicht mal einen Blick wert.

Disclaimer: ich verwende hier die Paketnamen aus den Arch-Repositories, manche Pakete sind auch aus dem AUR (Arch User Repository). Auf anderen Systemen können die Pakete eventuell etwas anders heißen, oder garnicht gepackt vorliegen.

zsh # Eine Alternative zu bash. Besonders mächtig mit der oh-my-zsh, oder der grml-zsh-config (im Repo)

zsh-syntax-highlighting # Syntax-Highlighting in der Shell (inspiriert von der fish-Shell), muss noch nach der Installation in der zshrc eingetragen werden

gvim # enthält v.A. auch das vim-binary mit Mausunterstützung fürs Terminal

vim-pathogen # kümmert sich um das Laden vom Vim-Plugins

* servefile # Ermöglicht Dateien und Ordner über einen einfachen HTTP-Server freizugeben (ähnlich dem SimpleHTTPServer von Python). Kann auch Upload und Autentifizierung.

* htop # Wie top, nur schöner

mplayer # Spielt eigentlich alle Mediendateien.

libreoffice # vim kann leider keine .docx-Dateien öffnen ;)

dwb # Ein webkit-basierter Browser mit vim-like Tastenkombinationen

i3-wm # Tiling window manager. Mag ich besonders wegen dem Stacking-Modus (Fenster in Tabs), der gut für kleine Bildschirme (Laptop) ist.

i3lock # Der passende Lockscreen zu i3. Sehr minimalistisch.

dmenu # Baut Menüs aus stdin und gibt die Auswahl nach stdout. Wird von i3 als Standard-Programmstarter benutzt.

xautolock # Um mit i3lock nach gewisser Zeit automatisch den Bildschirm zu sperren.

dunst # Notification Daemon. Aussehen ist sehr gut anpassbar.

compton # Compositor. Ermöglicht echte Transparenz und dezente Überblendungseffekte zwischen Workspaces und Fenstern.

rxvt-unicode # Mein Terminalemulator der Wahl. Anpassbar, schnell.

cellwriter # Virtuelle Tastatur mit zeichenbasierter Schrifterkennung (mein Laptop hat Touch- und Stifteingabe).

think-rotate # für das Drehen von Display und Touch-Eingabe (für den Tablet-Modus meines x230t). Praktisch dazu auch libwacom und xf86-input-wacom

xournal # Tool zum auf PDFs rummalen, alternativ jarnal

* mypaint # Einfaches Malprogramm mit Unterstützung für Stifteingabe

* ranger # ein Dateimanager für die Kommandozeile. In Farbe und mit vim-like Tastenkombinationen

* moreutils # Eine Sammlung kleiner, praktischer Programme im Sinne der coreutils. Mehr Infos.

pulseaudio-ctl # Für Lautstärke-Tastenkombinationen

pnmixer # Tray-Applet für Pulseaudio

tmux # Terminalmultiplexer, alternativ screen

conky # Ein leichtgewichtiges Tool um Systeminformationen auf dem Desktop anzuzeigen. Benutze ich momentan um die i3bar mit Informationen zu füllen.

screen-message # Zeigt beliebigen Text im Vollbild auf dem Monitor an. Gut um z.B. URLs zu kommunizieren

Irgendwas Wichtiges habe ich jetzt bestimmt auch noch vergessen, aber das wird mir dann schon irgendwann wieder einfallen. Ich versuche diese Liste regelmäßig zu aktualisieren, wenn ich neue must-have Programme finde.

Falls noch jemandem spontan etwas für diese Liste einfällt, immer her damit. :)


nomeata’s mind shares

29.12.2013 21:08:00

Sim Serim as a browser game

Recently, I gave the very elegant board game “Sim Serim” away as a present, without actually playing it, leaving me curious about the game. One can easily play it on paper (you just need a paper, and 4 tokens like coins for each player, BoardGameGeek has English rules the of game), but I took this as an opportunity to learn more about HTML5 canvas and nodejs, and so I created the browser game “Sum Serum”, implementing the game mechanics of “Sim Serim”. You can play it locally with two people, or over the network. Contributions are welcome! Especially slicker graphics...

In other news, given that in recent years I became one, I’m on BoardGameGeek myself now, see my profile there.


nomeata’s mind shares

19.12.2013 23:05:00

My contribution to XKCD’s #949 is not needed

A few hours ago I posted about share-file, a small tool to make a local file available at a public URL so that it is transferred from my machine, without being stored at some central server. I wanted to create something like FileTea, but usable from the command line.

My post made it to HackerNews (which brought my server to its knees for a while; let’s say I had the opportunity to find out what setting for apache’s MaxClient option works on my machine...), where the comments (besides some misunderstanding about the notable features of share-file) contained interesting links related to solving #949:

  • First of all, James Brechin implemented a command line client for FileTea. It is not clear to me whether he created it in response to my posting, or whether it lay around for a while, but I don’t care: It does precisely what I need, making share-file obsolete for me. Lazyweb works!
  • There is a service very similar to FileTea, but seemingly developed independently, at It seems that this task is best solved using unorthodox programming language choices; while FileTea uses C and glib (not common in web applications), fipes, the software behind fipelines, is implemented in Erlang.
  • The new and shiny thing for peer-to-peer communication without additional software is WebRTC, which only needs a modern browser, and there is a chat- and file-transfer program at I did not test how well it handles the case where both sides are behind a NAT, though, and sending a ready-to-use link is still simpler for the other side.
  • I found another WebRTC-based tool that focuses on sharing files only, and where users who have downloaded a file will, as long as their browser tab is open, help uploading it –  a bit like Bittorrent. So if you need to share a file with many people (all of which are using up-to-date non-IE browsers), sharefest is worth a try.

nomeata’s mind shares

19.12.2013 11:17:00

My contribution to XKCD’s #949

Randall Munroe rightly put shame on all the geeks in the world when he pointed out that transferring files over the internet is still an unsolved problem.

I am a big fan of FileTea’s approach to transferring files, where they are streamed from browser to browser, without registration and without being stored on some central server, and where closing the browser tab reliably cleans up the transfer. But I wanted something that works from the command line, so I created a small tool called share-file that will use SSH port forwarding to serve the files from a local, embedded web server at a publicly available port, as shown in these screenshots:

It works without additional dependencies (but better with python-magic installed) and requires a publicly available SSH server configured with GatewayPorts clientspecified. For more details, see the README, and to try it out, simply fetch it with git clone git://

BTW, if someone implements a command line client for FileTea, I’ll happily dump share-file for it.


nomeata’s mind shares

01.12.2013 10:42:00

Eine Geschichte über Heizungen in Großbritannien

Am Mittwoch nach der Arbeit kam ich nach hause und hörte so ein nerviges Piepen. Meine erste Vermutung war, dass einer der vielen Rauchmelder sich beschwert, dass seine Batterie leer geht. Das Piepen kam aus dem kleinen Zimmer, in dem ich die ersten zwei Nächte wohnte, und es war dann auch tatsächlich ein Melder, aber kein Rauchmelder, sondern ein der Kohlenmonoxidmelder, der unter dem Heizungs-Boiler liegt. Allerdings beschwerte der sich nicht über Kohlenmonoxid, sondern über das Wasser, das kräftig auf ihn drauf tropfte.

Ich hab ihn erstmal abgetrocknet und dann die Batterien rausgenommen, um meinen Ohren eine kleine Pause gönnen zu können. Kurz drauf stellte ich fest dass alle Steckdosen im Haus keinen Strom hatten (die Lichte allerdings gingen). Leider wusste ich nicht wo die Sicherungen sind, ging also erstmal einkaufen und wartete auf meinen Mitbewohner.

Der stellte dann fest, dass wenn man die Sicherung reinmachte, sie gleich wieder raussprang. Das ging so lange so bis wir den Boiler komplett vom Strom trennten – der hat sich wohl selbst einen Kurzschluss verpasst.

Mein Mitbewohner telefonierte dann mit dem Vermieter, der telefonierte dann mit British Gas und brachte die dazu, am gleichen Abend noch einen Techniker zu schicken (wozu er wohl etwas dick auftragen musste und behauptete, der Strom würde gar nicht mehr tun). Und entgegen allen Unkenrufen meiner Mitbewohner und der mittwöchlichen Brettspielrunde, dass man sich bei British Gas keine große Hoffnungen machen muss, kam dann auch ein Techniker. Der stellte dann größere Schäden am Boiler fest, für die erstmal Ersatzteile besorgt werden müssen – bis Freitag bleibt die Heizung kalt.

Ich hab mir zwar inzwischen die dickste Decke gekauft gehabt, die es im Sainsbury gab, aber die Nächte waren doch recht frostelig.

Am Freitag war ich dann von uns vier Mitbewohnern (der fünfte ist ja praktisch nicht existent) wohl der mit den flexibelsten Arbeitszeiten und dem gutmütigsten Chef, so dass ich vormittags zu hause blieb und um 10 Uhr einen freundlichen Menschen von Britisch Gas empfing und mit Tee versorgte, während der – laut über das alte Gerät schimpfend, das wohl schon längst ausgetauscht gehörte – den Boiler wieder instand setzte.

Passend dazu übrigens ein Artikel in der neusten Zeit (leider noch nicht online) über das Verhältnis der Briten zum Heizen, den ich nun voll bestätigen kann – dass ich hier doppelt verglaste Fenster hab muss man schon als Glück bezeichnen.

An der Stelle interessant: Trotz der unglaublich schlechten Isolation der britischen Häuser und deren Einstellung zur Heizeffizienz produzieren wir in Deutschland mehr CO₂ pro Nase. Was vermutlich daran liegt dass die Briten vor einer Weile weitgehend auf ihren industriellen Sektor verzichtet haben.


Wenger Online#Blog

01.11.2013 23:20:35

Ferien in Pianta Monda

Wie in den letzten Herbstferien waren wir auch dieses Jahr wieder in Pianta Monda zu Gast. Trotz oder sogar wegen dem vielen Bergsteigen hat es besonders den Kleinen sehr viel Spaß gemacht.

P1040712 P1040704 P1040699-P1040700 P1040685 P1040682 P1040666 P1040667 P1040645-P1040652 P1040633 P1040634-P1040636


Wenger Online#Blog

22.08.2013 23:57:36

Schlafen wie auf Wolken

Unser nicht mehr ganz so kleiner Pirat braucht ein neues Bett. Da wie immer alle Besuche in diversen Möbelhäusern umsonst waren, weil die Modelle entweder nicht gefallen, aus Spanplatten gebaut sind oder nicht in den gesteckten Preisrahmen fallen, haben wir das kurzerhand selber gebaut.


Liste der Teile:

Als erstes habe ich die beiden Füße für den Fußteil gebaut. Dazu werden die beiden 9cm breiten Bretter exakt in der mitte durchgesägt. Dazu eignet sich am besten ein Japansäge, viel genauer als die Stichsäge und so schnell das es sich nicht lohnt extra die Kreissäge zu holen.
Jetzt werden immer zwei davon rechtwinklig mit Leim und jeweils 3 Schrauben zu einem Winkel zusammengefügt. Die oberen Ecken mit einem Zirkel rund anzeichnen und mit der Stichsäge rundsägen. Zuerst sehen diese Rundungen etwas grob aus, aber nach der Behandlung aller Kanten mit dem Viertelstabfräser in der Oberfräse ist es schon fast perfekt. Der Rest erledigt später das Schmirgelpapier. Als Verbindung der beiden Füße kommt jetzt ein 90cm (Breite der Matratze) + 2×2,8cm (Dicke der Bettwangen) Brett dazu. Das darf ruhig geleimt und geschraubt werden, der Fußteil ist klein und leicht genug zum Transport und muss nicht auseinandernehmbar sein.

Aus dem 30cm breiten Brett werden dann die beiden Regalseitenwände für das Kopfteil. Durch das senkrechte Bettabschlußbrett was genau zwischen zwei Regalbrettern eingeschraubt wird ist das Kopfteil ziemlich stabil. Aus das Kopfteil wird geleimt ung geschraubt.


Die Bettwangen müssen demontierbar und trotzdem stabil mit dem Kopf- und Fußteil verbunden werden. Ich habe dafür Rampamuffen verwendet. Dazu das Brett mit einer Schraubzwinge am Zielort befestigen und mit einem 8er Bohrer beide Bretter durchbohren. Im sichtbaren Brett mit einem Senkbohrer eine zur Schraube passende Senkung anbringen und die Bohrung im anderen Brett mit einem 11er Bohrer aufbohren (Lt. Baumarktmitarbeiter sollte ein 10er passen, ich habe da die Rampamuffen aber nicht eingedreht bekommen. Gefühlt wäre sogar ein 12 noch besser gewesen. Nur wer hat schon so einen großen Bohrer im Haus) und die Rampamuffe vorsichtig eindrehen. Dabei muß man tierisch aufpassen das diese auch exakt grade wird. Am besten geht das wenn man die spätere Schraube von hinten ein wenig eindreht, dann kann man damit gegenhalten.




Jetzt muss das ganze Holz noch geschmirgelt und 2x geölt werden und fertig ist das neue Bett.




Wenger Online#Blog

04.08.2013 20:20:56


Beim geschätzten zweihundertsten mal stolpern über die Kiste mit den Einzelteilen meiner fürs Wohnzimmer geplanten Lautsprecher habe ich das schöne Wetter genutzt und diese endlich fertig gebaut. Es handelt sich um Sippos, ein Lautsprecher enwickelt von Alexander Gresler der trotz seines günstigen Teilepreises von unter 30€/Seite einen erstaunlichen Klang entwickelt.

Als Material habe ich schlichtes MDF verwendet. Die Kanten habe ich mit einem Viertelstabfräser abgerundet, nach dem Schleifen habe ich das Gehäuse dann mit schwarzer Beize eingelassen. Bis auf ein paar Stellen, wo ich den ausgetretenen Weißleim nicht sofort entfernt habe, sieht die Oberfläche damit schön schwarz, fast wie mit Samt überzogen aus. Beim nächstenmal werde ich da wohl etwas mehr drauf achten.

Eine etwas schwierige Stelle waren die Ausfräsungen für die Bass Chassis. Diese sind leider so geformt das man sie von hinten hinter eine Plastik Frontplatte oder ähnlich schraubt. Würde man diese hinter eine 12mm MDF Platte schrauben so würde der dicke Rand den Klang nicht unerheblich beeinflussen, außerdem würde man auch diesen Rand ja dann sehen, er müsste also sehr gleichmässig gefräst sein. Um die Chassis denoch von vorne anschrauben zu können braucht man eine zweistuffige kreisförmige Fräsung, mit einem Fräszirkel wäre das eine einfache Sache. In Ermangelung dieses Werkzeugs habe ich die Löcher einfach frei Hand gefräst. Wenn man langsam schön dem Strich entlangfräst geht das zur not.

Einpassen der Chassis und des Bassreflexrohrs, anlöten der Kabel.


Alles ist an seinem Platz, fertig zum testen.


Und so sehen sie fertig aus.


Zuerst hatte ich Zweifel ob alles stimmt da sie die Bässe ziemlich überbetont haben und gelegentlich ein starkes Resonieren zu hören war, es lag aber aber am schrottigen Verstärker den ich zum testen verwendet habe. Im Wohnzimmer klingen sie richtig gut, ich werde gleich mal ein paar längere Musikhörsession machen…

mehr... v4

10.07.2013 12:08:00

Your favourite ideology is shit, and why you should be angry at political parties.

Capitalism has failed. I don’t mean this in the revolutionary, lets socialize All The Things way - all I mean is something that should really be obvious right away. Much as there has never been a communist nation (insofar as you can refer to a communist society as a “nation”), there really hasn’t ever been a proper anarcho-capitalist state. None of the various forms of revolutionary socialism have ever managed to transition over to anything but famine and opressive dictatorships, to the point where we’re pretty sure that even trying is a horrible idea, and none of the various attempts at removing as much regulation as possible ever go anywhere before the inevitable huge consolidated organizations pop up, go under, and enough people get hurt that thigs are rolled back very quickly (and lets not even talk about the half a dozen failed attempts at swimming libertopias).

So, if communism isn’t the silver bullet, and capitalism doesn’t work either, what does? Well, look around - what do you see? What is the economic philosophy nearly every nation on earth subscribes to? It goes by many names, depending on whatever seemed like a good idea at the time. Roughly, it can be described as “something somewhere in the middle between the two extremist ideas of no-government-at-all anarcho-capitalism and government-runs-everything centralized-socialism”.

It’s obvious that, while that covers just about everythig everyone does, that different nations still do thigs differently. Some nations have socialized medicine, some don’t. Some have huge economic safety nets, some don’t. Some are libertarian enough to make almost anyone who doesn’t post on the forums happy, some are still so socialist that socialist academia would rather pretend they somehow aren’t. As it turns out, while it is obvious that “some government - but not too much” is a generally sound principle, how much is “too much” is a matter that isn’t settled and might never be. And that is perfectly fine!

Society is a messy, complex thing, and a moving target. There usually is more than one side to any issue and no solution that is great for everybody, and what was perfectly fine yesterday might need reevaluation today, since the world and the people that live in it constantly change. That is why it is good that there are people who have various oftentimes diametrically opposite points of views about issues, so that these people can then get together and figure out how to solve the problems they have in some way that everyone can live with, after considering all the sides of the issue that there are. That way, whatever happens will usually be better than if any one group had just gone ahead and done whatever. Maybe it is a terrible idea to deregulate banking, maybe it isn’t. Maybe it is a terrible idea to regulate what people can and cannot say, maybe it’s fine to allow people to sue for personal insults. Maybe the state should have a monopoly on the exploitation of natural ressources, or maybe not. The wrongest possible thing is blindly following your own ideology without first checking if maybe, just maybe, the other guys have the right idea this time.

As long as we are at the neighbourhood association level, it’s perfectly possible for everyone to participate personally in political decision-making. As soon as a significantly greater number of people get involved, this becomes impractical. A good - not perfect, but pretty good - system for this is political parties. They are instruments of political decision-finding - they stand for various different sets of values and positions, and when voting, people delegate the actual process of talking things through thoroughly to them, so that things can get done. There’s obvious problems with that (lack of granularity, long time between elections, …), which can be offset in various ways, but as time goes on, there is one less-obvious problem that has become quite a bit more problematic recently.

To actually figure out what a good way to handle things is, you usually need discussion. If everyone already agrees, that seems great at the time, but when everyone pretty much agrees on everything, that starts leading to short-sighted, sub-optimal decisions.

But that is exactly what is happening right now.

Political parties should not be like a corporation trying to maximize shareholder value, always trying to get the maximum number of votes. A party should, of course, aim to get the greatest number of votes it can - but it should do that by convincing as many people as possible that its ideas are the way forward, not by constantly shifting their core values around until they aren’t considered inelectable by anyone anymore and then going for the “we are the lesser evil!” vote. Parties should not jump at any opportunity to shift closer to their political opponents in an effort to skim off some votes. Parties should not succumb to populism and do a complete one-eighty every time public opinion seems to shift. All this slow, unstoppable slide to the center leaves is parties with no real positions of their own who cannot possibly effectively represent the spectrum of opinions that there is.

But that is exactly what is happening right now.

Every time you hear a politician say “Some Other Party had this idea first, but we saw it was a good idea so we’re doing it as well!”, you should get angry. Every time you see a party abandon yet another long-held position to move further towards the center, you should get angry. You should tell these people “No! Have some fucking backbone! Risk being in the wrong! Debate with the opposition! If you must, compromise, but not right away!”, or, in other words, “Do your fucking job!” - which is the representation of the electorate, and not the conservation of personal political power. However, inevitably, that seems to be where things end up going, if left unchecked.

What can be done about this? Well, I certainly don’t claim to know. There are some ideas that I find neat - systems like the Pirate Parties “Liquid Democracy” tools, where votes can be delegated on a per-issue basis and the delegation can be changed at any time, or election systems that encourage smaller, more diverse parties - but these probably have terrible problems of their own. A good way to figure out what might work would be to get together and talk and maybe disagree about some things so that we can learn from each other. Lets disagree. Lets talk.


The Turkey Curse

28.06.2013 11:06:00

Abgeordnete mit eigener Whistleblower-Plattform

Ich will hier und jetzt nicht diskutieren, ob es sinnvoll ist, Geheimnisse innerhalb von staatlichen Institutionen und Unternehmen zu haben oder nicht. Es bedarf keiner hellseherischen Fähigkeiten um zu der Überlegung zu kommen, dass der Schutz von Geheimnissen in Zukunft immer aufwändiger wird, und wenn es um Geheimnisse aus Regierung, Verwaltung, Sicherheitsbehörden usw. geht auch um einen Preis, der sehr hoch sein könnte, der dafür zu bezahlen ist - und dabei gilt: Umso schmutziger das Thema, desto eher wird es negativen Fallout geben. Zu dem, was in den USA dazu passiert und meines Erachtens auch hier irgendwann auf die eine oder andere Art zu erwarten sein könnte, siehe den Artikel bei McClatchys. Deswegen gehe ich für die Überlegungen in diesem Text davon aus, dass es Dinge gibt, die nicht an die Öffentlichkeit sollen (z.B. aus Gründen “nationaler Sicherheit” oder wenn Betroffene ganz besonders geschützt werden müssen) aber es trotzdem möglich sein muss, Probleme entsprechend zu adressieren.

Grade wenn am Rande der Verfassung agiert wird, ist funktionierende Kontrolle ganz besonders wichtig. Was es aber zumindest geben muss ist eine Möglichkeit, Verstösse anonym melden zu können - und zwar nicht bei dem direkten Vorgesetzten, sondern entweder “weiter oben” oder an einer Stelle, die der Person, die die Informationen loswerden will, besonders vertrauenswürdig erscheint und Möglichkeiten hat, das entsprechend vertraulich zu thematisieren.

Binney und Drake, zwei NSA-Whistleblower, die auf dem 29C3 (siehe Aufzeichung des Vortrages) gesprochen haben, meinten beispielsweise, sie wären niemals an die Öffentlichkeit gegegangen um auf Mißstände aufmerksam zu machen, wenn es diese Möglichkeit gegeben hätte und sie die Probleme hätten melden können und so abgestellt worden wären. Aber natürlich gibt nicht nur Verfehlungen durch Mitarbeiter von Sicherheitsbehörden, auch in anderen Bereichen von Politik, Behörden und Unternehmen gibt es dieses Problem. Inwieweit Betriebsräte, Journalisten oder andere Strukturen helfen und was es sonst noch gibt, lasse ich aber mal aussen vor.

Eine dieser Stellen sind die Abgeordneten des Bundes und der Länder, und das aus mehreren Gründen: Sie sind die gewählten Vertreter des Volkes, sie besitzen eine verfassungsmässig garantierte Immunität und sind in der Lage, in nicht-öffentlichen Beratungen Dinge zur Sprache zu bringen. Ausserdem sind sie die, die ohnehin verfassungsmässig Kontrollfunktionen wahrnehmen sollen, speziell, wenn es um die Arbeit der Exekutive geht.

Nathan hat mich durch sein Posting auf der Liberationtech-Liste und in Gesprächen in den letzten Tagen noch mal auf das Projekt DeadDrop hingewiesen, das von Aaron Swartz entwickelt wurde und z.B. beim New Yorker unter dem Namen Strongbox seit Mai im Einsatz ist. Eigentlich ist das System für Newssites konzipiert, kann aber prinziell natürlich auch von völlig anderen Entitäten in derselben Art genutzt werden. Ziel dabei ist es einfach, dem Empfänger über Tor. Nachrichten und Daten zukommen lassen zu können.

Die Überlegung wäre also, so eine Strongbox für die Abgeordneten zu haben - und zwar für jeden einzelnen und unabhängig von der Fraktion. So kann also auch, überspitzt gesagt, ein Schlapphut, der Probleme der Auslegung einer Maßnahme hat, sich an Leute wie Uhl und Konsorten wenden, wenn er glaubt, er wäre die Person, die das angehen kann statt dem Parlamentarier einer anderen Fraktion.

Bereitsteller der Infrastruktur könnte der Bundestag (oder der entsprechende Landtag) sein oder die Fraktionen oder auch die Abgeordneten das selbst machen - was für letztere vor allem dann recht einfach gehen könnte, wenn man ihnen ein entsprechendes Device zur Verfügung stellt (vielleicht sowas wie einen Rasberry Pi mit Strongbox). Dazu gehört natürlich auch noch, dass die Abgeordneten alle in der Lage sind, mit einer für Bürger einfach zu benutzender und nicht zentral kontrollierter Crypto ausgestattet werden (also GnuPG/PGP/OpenPGP) und ihre Schlüssel entsprechend hinterlegen.

Da wir grade beim Thema sind: Die Zwiebelfreunde haben auf Indigogo eine Crowdfunding-Kampagne für mehr Tor Exit Nodes und Bridges gestartet, die ihr unbedingt mit ein paar Euro unterstützen solltet, wenn euch etwas an Anonymität und Zensurumgehung gelegen ist!


The Turkey Curse

24.06.2013 13:30:00

Ich gehe nicht zum Reden in den Wald

Ludwig Greven hat bei der Zeit einen Artikel mit dem Titel Wer nicht belauscht werden will, sollte nicht überall reden geschrieben, der mich doch mehr als nur ein wenig irritiert. Er schreibt u.a. folgendes:

Zu glauben, dass die öffentlichen Proteste an der Kontroll- und Datensammelwut der Sicherheitsbehörden daran grundlegend etwas ändern werden, ist weltfremd.

Meint der Autor etwa, es sei besser die Klappe zu halten und diesem gespenstischen Treiben nicht entschlossen entgegen zu treten - und zwar auf allen Ebenen, die in einer demokratischen Gesellschaft zur Verfügung stehen? Wenn es eins gibt, das immer noch wirkt, ist es eine laute und fordernde Öffentlichkeit, die sich nicht von Geheimdiensten, der Polizei, Kriminellen oder Terroristen einschüchtern lässt. Denn wenn das passiert, haben wir ohnehin schon verloren.

Weiter unten schreibt er etwas, was mir schlicht die Sprache verschlägt:

In der DDR gingen Menschen, die sich unbeobachtet von der Stasi unterhalten wollten, in den Wald oder in einen Park und sprachen unter vier Augen miteinander. Wer heute unbeobachtet bleiben möchte, sollte vielleicht nicht im Internet miteinander reden.

Wie bitte? Ich soll zum Reden in den Wald gehen? Wo bin ich denn? Ich habe nicht vor, diesen Staat zu stürzen, sondern mich an demokratischen Diskursen zu beteiligen oder auch gerne mal vertraulich mit meiner Frau, meinen Freunden, meinen Kollegen, meinen Kunden oder meinem Anwalt oder Arzt zu kommunizieren. Kann auch vorkommen, dass ich mal eine Demo mitplane oder ein vertrauensvolles Gespräch oder Mailwechsel mit einem Abgeordneten oder Journalisten habe. Und soviel Wald gibt es auch gar nicht mehr, damit jeder, der das braucht, vertraulich kommunizieren kann.

Es zeugt doch schon von einem echten Problem, wenn ich normale Kommunikation (und das ist so ziemlich alles was ich mache) verschlüsseln muss wie ein Geheimnisträger, nur damit nicht irgend so ein Freak aus VS, BND oder BKA auf den schmalen Trichter kommt, er müsse auf Grund irgendeiner diffusen Bedrohung und falsch interpretierten Zusammenhängen heraus meine intimsten Details kennen. Da macht es auch keinen Unterschied, ob diese Details per Brief, E-Mail, Telefon oder meinen privaten vier Wänden ausgetauscht werden. Diese Kommunikation ist tabu und darf, wenn überhaupt, nur kurzzeitig abgeschnorchelt werden, wenn es dazu einen hinreichenden, strafrechtlich relevanten Anfangsverdacht gibt oder meine Kommunikation ein Problem der nationalen Sicherheit sein sollte.

Wenn ich mal plane, diesen Staat zu stürzen, komme ich vielleicht gerne auf die Idee mit dem Wald zurück. Aber ich bin da sehr weit von entfernt und werde versuchen, mein Recht auf Vertraulichkeit und Intregrität meiner informationstechnischen Systeme durch alle meine bescheidenen Mittel einzufordern.

Ich weiss nicht, wie es anderen geht: Ich werde jedenfalls auch in Zukunft nur in den Wald gehen, um mich zu erholen oder Pilze zu sammeln, aber ganz sicher nicht, um ganz normal privat zu kommunizieren.


The Turkey Curse

23.06.2013 20:15:00

Und er hilft doch!

Niko Härting stellt in seinem Blogeintrag unter dem Titel Prism und Tempora: Konsequenzen für Deutschland einige Betrachungen auf, denen man durchaus folgen kann. Allerdings stellt er eine Sache fest, der ich klar widersprechen muss. Er schreibt unter 5.:

Wer meint, mit Datenschutzgesetzen, einer richterlichen Kontrolle oder sogar einem Informationsfreiheitsgesetz Bürgerrechte gegen die Dienste schützen können, argumentiert naiv.

Naiv ist diese Ansicht keinesfalls, denn Härting scheint nicht zu verstehen, dass Datenschutz wesentlich mehr ist als ein paar bedruckte Zettel, auf denen steht, dass eine Meldung bei einem Einbruch auf Server stattfinden muss. Datenschutz richtig verstanden ist nämlich nicht zuletzt die Frage, wie man Datenabfluss und Mitlesen von Verbindungen verhindert (also genau das, worum es im Kern geht).

Systeme, die ein datenschutztechnisches Design haben, das den Begriff auch verdient, sind gegen Tempora weit besser gefeit als es Härting glauben machen will. Denn was den Diensten in die Hände spielt ist ja nicht nur die fehlende Kontrolle über sie, sondern vor allem, dass sich die wenigsten Betreiber von Internetangeboten Gedanken darum machen, wie man Daten und Kommunikation ordentlich schützt. Denn der Schutz gegen kriminelle Angreifer ist erst einmal derselbe wie der gegen andere, also z.B. staatliche Angreifer. Aus Anwendungs- und Anwendersicht ist da keinerlei Unterschied.

Ich sehe praktisch jeden Tag Verstöße gegen Datenschutz und Einbrüche, die hätten verhindert werden können, wenn sich die Betreiber die Sachen zu Herzen genommen hätten, die im BDSG stehen oder, etwas verklausuliert, dahinter stecken. Und damit meine ich nicht nur Datensparsamkeit oder die Sicherung von Passwörtern als Hashes. Ein einfaches und gleichzeitig überaus effektives Beispiel ist Zertifikats-Pinning bei SSL, bei dem eine Interception zumindest solange ins Leere läuft, wie die Schlapphüte keinen Zugriff auf die Zertifikate haben. Ein anderes Beispiel aus derselben Kategorie ist die Nutzung von sogenannter Perfect Forward Secrecy. Das hilft zwar nicht gegen die Speicherung, aber es hilft ganz hervorragend gegen das Mitlesen und gegen die Auswertung (Härting kann mir ja gerne mal erklären, wie das funktionieren soll). Sogar einen recht großen Teil der Metadaten kann damit abgesichert werden.

Und speziell im Zusammenhang mit Tempora und Prism müssen übrigens zwei andere Dinge gemacht werden, die damit in Zusammenhang stehen: Safe Harbour abzuschaffen oder zumindest ordentlich zu härten sowie ein Vertragsverletzungsverfahren gegen Großbritannien auf EU-Ebene. Damit gibt es noch keine bessere Kontrolle der deutschen Geheimdienste. Aber gegen die hilft, wie schon angedeutet, in weiten Teilen konsequente und vernünftige Krypto. Denn die Zugriffe auf und die Ermächtigung, die der NSA und die GCHQ haben jeweils durch die Geheimgerichtsbarkeit haben, gibt es hier nicht. Ohne die sind aber auch keine vergleichbaren Maßnahmen machbar wie die, die durch die Leaks ganz am Anfang offenbar wurden.

Ein starker Datenschutz ist der elementare Kern einer Gesellschaft, die auf funktionierende Software und sichere Datenverarbeitung angewiesen ist. Das ausser Acht zu lassen ist, mit Verlaub, grob bösartig.


The Turkey Curse

21.06.2013 21:50:00


Die geschätzten SZ-Autoren Johannes Kuhn und Johannes Boie haben sich in der dem angenommen, was Kuhn den #Neuland-Aufschrei nennt und Boie mit dem Text Siedler ohne Selbstkritik noch weiter ausführt. Ich habe das Gefühl, dass ich mit Spiesser und Siedler irgendwie gemeint bin, und vielleicht haben sie sogar irgendwie recht. Aber grade weil ich beide schätze, möchte ich ihnen hier etwas ausführlicher antworten.

Informationstechnologie ist selbstverständlich alles andere als Neuland. Sie gehört nicht nur bei ausgesprochenen IT-Unternehmen zum “Kerngeschäft”, sondern ist in so gut wie allen Bereichen der Gesellschaft, des Handels und der Industrie indirekt oder ganz direkt anzutreffen. Diese Entwicklung ist auch keine, die über Nacht über Deutschland und die Welt hereingebrochen ist, sondern schon Jahrzehnte sehr sichtbar stattfindet. Denn wie sonst sind die Entscheidungen und wunderbar treffenden Wortschöpfungen aus Karlsruhe aus den Achtzigern und aktuell zu deuten, die sich Computern und vernetzter Welt annehmen und meiner Ansicht nach von großem Weitblick zeugen.

Die Zahlen zur Nutzung, auf die sich beide Artikeln beziehen, enthalten wenig wirklich erhellendes. Aber gut, in absoluten Zahlen sind es 53,4 Millionen, die das Netz zumindest gelegentlich nutzen, und sind damit erheblich mehr als die, die gelegentlich Zeitungen oder ein Buch lesen, aber das ist ohnehin nicht der wirklich entscheidene Aspekt. Die politische Relevanz müssen wir aber trotzdem Gott sei Dank im Jahr 2013 nicht mehr diskutieren.

Interessant an Merkels Neuland ist denn auch nicht der Begriff, sondern die Mär davon, dass es irgendwelche ganz neuen und vollkommen anderen Bedrohungen gibt. Diese Bedrohungen sind dieselben, die es auch schon früher gab. Die Konzentration auf den Begriff verstellt die aber die Sicht auf das, was sie eigentlich sogar recht unverblümt zum Ausdruck gebracht hat.

Industriespionage, Betrug, Erpressung, Angriffe auf datenverarbeitende Systeme oder Fragen zum Datenschutz bringen mitnichten neue Herausforderungen, es sind dieselben wie “früher”, lange vor 9/11. Terrorismus ist demnach auch kein neues Thema und sollte in der Betrachtung, wenn es denn darum in einer Zivilgesellschaft überhaupt gehen sollte, nur am Rande in diesem Zusammenhang gesehen werden. Er mag sogar als Argument dienen, vielleicht kurzfristig und unter sehr strengen Auflagen über die Grenzen des demokratisch Erlaubten Bürger zu Überwachen und zu rastern. Krass ist dabei aber nicht zuletzt, wie dies z.B. im Lichte von Cyberwar- oder Cyerbterrorismus-Bullshit geschieht und praktisch nicht zuletzt durch staatliche und Staaten nahestehenden Personen, Gruppen oder auch Firmen hervorrufen wird, die sie selbst ermächtigen.

Das Netz kennt natürlich auch, anders als Kuhn sagt, Grenzen. Zumindest wenn mit dieser Grenzenlosigkeit das Fehlen territorialer Schranken und Regeln gemeint ist, so ist eine Nutzung in einem Netz wie dem chinesischen oder iranischen sicher ein guter Datenreisetipp für zwischendurch, um unterschiedliche Grenzen sehr anschaulich zu erfahren. Diese Grenzen unterscheiden sich nur noch marginal von “realen Grenzen”: Die Entwicklung ist unübersehbar, dass jede Regierung und jede internationale Organisation, die etwas aus sich hält, Einfluss auf das Netz nehmen will und sich bei Gelegenheit auch einfach nimmt, sei es mit legislativer, ökonomischer oder digitaler Gewalt. Und dass schliesslich die Armeen dieses Planeten vor allem zivile Infrastruktur bei ihren Angriffsplanungen im Auge haben, sollte auch im Netz nicht wirklich überraschen, sondern eher die Empörung hervorrufen, die diese Denkweise ganz grundsätzlich verdient und in zivilem Kontext auf sinnvolle Art nur rein defensiv betrachtet werden kann.

Dass sich die Menschen, die Boie Siedler nennt, nicht darum kümmern würden, was die Neulinge tun oder denken, halte ich für eine gewagte These: Eine Veranstaltungen wie z.B. der Chaos Communication Congress jährt sich dieses Jahr zum dreizigsten Mal. Auch die re:publica und unzähle weitere Events mit etwas weniger technischem Fokus sind schon eine Weile am Start - um einige wenige jener Peergroups zu erwähnen, bei denen es um die jeweils aktuellen politischen und technischen Entwicklungen auf meist hohem Niveau geht. Die Veranstaltungen verbindet eine offene Diskussion darüber, welchen Einfluss Technik auf Gesellschaft ausübt. Und ich fange da nicht mal an über einzelne Leute zu reden wie die, die hinter stehen oder viele, viele andere, die sich gefühlt seit Äonen die Finger wund tippen und mittlerweile längst zu “Told you so”-Zynikern geworden sind.

Zugegeben: Eine Teilnehmerin oder ein Teilnehmer sollte schon mal einen Computer benutzt haben, sonst wirken ziemlich viele Vorträge und Workshops dort kaum anders als klingonisch. Aber diese Veranstaltungen sind offen, und die Menschen, die dort anzutreffen sind, zeichnen sich durch einige besondere Eigenschaften aus: Die Lust daran, Erkenntnisse zu teilen, alle möglichen Fragen zu diskutieren und sogar, wenn möglich, zu beantworten, gemeinsame Pläne zu schmieden oder Software benutzbar oder einfach besser zu machen, kurz: Werkzeuge zu schaffen.

Aber hört da irgendwer von den Leuten hin, die “das Netz” als fernes Land betrachten, also jene, die der Meinung sind, es kontrollieren und zerstören zu müssen um irgendwas (ja, was eigentlich? Demokratische Kontrolle ist es jedenfalls nicht) zu erhalten - ohne sich überhaupt die Mühe zu machen zu verstehen, was da grade im Detail eigentlich passiert?

Nun gut, vermutlich verstehen sie es in Ansätzen sogar mittlerweile irgendwie und haben Probleme, weil das, was da passiert, eine Öffentlichkeit darstellt, vor der sich offensichtlich nur noch sehr wenige Dinge so wie früher verstecken lassen. Dinge, über die wir selbstverständlich Bescheid wissen müssen, um überhaupt entscheiden zu können, ob wir sie so wollen.

Die Gruppen und Gäste, die hinter diesen Events stehen, sind indirekt oder direkt damit beschäftigt, die Exekutive mit Druckmitteln wie Informationsfreiheits- und Transparenzgesetzen dazu zu bringen, offen mit Fakten umzugehen oder wenn das nicht reicht, die Informationen selbst öffentlich zu machen.

Aber es müssen tatsächlich auch noch bessere Übersetzungsleistungen her: Selbst wenn ich überaus wohlwollend die Entwicklungen in der deutschen Presselandschaft wahrnehme, digitale Herausforderungen überhaupt mal anders als polemisch zu betrachten, so ist immer noch deutlich zu erkennen, dass die Digital-Ressorts innerhalb der Redaktionen unter einer Art Exotenmalus leiden. Besonders krass zeigt sich das in der Tat bei den Diskussionen wie zum von Boie erwähnten, völlig sinnbefreiten Leistungsschutzrecht für Presseverlage. Was muss da eigentlich noch passieren?

Eine Gesellschaft, die wie unsere von funktionierender Technik wie Computern und Vernetzung elementar abhängig ist, sollte sich im Klaren sein, dass es nicht reicht, wenn ihre parlamentarischen Vertreter das Twittern für sich entdecken und dann wie einen Popanz vor sich her tragen (oder sich dem gezielt widersetzen, was genauso plemplem ist). Unsere Gegenwart und Zukunft ist digital. Und das erzwingt eine Ehrlichkeit und Offenheit, die sich nur noch unter Verlusten elementarer, gesellschaftlicher Grundwerte verhindern lässt.

Themen wie offener Umgang mit Unsicherheit, Überlegungen zur Haftung bei Soft- und Hardwarefehlern oder Verschärfung von Datenschutzregelungen im sicherheitrevelanten Kontext, kartellrechtliche Fragen und Wirtschaftförderung, wenn es um Markt und Wettbewerb geht, Fragen sozialer Umverteilung, Werkzeuge zur besseren Partizipation oder Kontrolle und Schranken beim gespenstischen Treiben von Geheimdiensten, ja selbst Netzneutralität - alles nicht neu, sondern genau die Themen, an denen sich unsere Gesellschaft schon sehr lange auf die eine oder andere Art abarbeitet und wo Antworten leider immer wieder gleich und einseitig erscheinen. Der Kontext hat sich nicht einmal wirklich verschoben: Politik, die auf diffuser Befindlichkeit und Angst basiert, war und ist schlecht beratene Politik.

Gleichzeitig erleben wir an vielen Stellen, dass aus Stärken Schwächen werden. Denn wenn es etwas gibt, was ein echter Exportschlager ist, dann ist es deutsches Ingenieurswesen, übertrieben vielleicht mit einer Floskel wie “Keine Funktion ohne Sicherheit” auf den Punkt gebracht, das einer Denkweise entspringt, die wir glücklicherweise vielerorts verinnerlicht haben und sich letztendlich auch in grade schon erwähnten verfassungsrechtlichen Begriffsmustern widerspiegelt. Ich finde es dann auch bezeichnend, dass sich in der PRISM-Affäre ein Kommentator der New York Times wünscht, die Deutschen mögen doch bitte etwas für Datenschutz auf diesem Planeten tun. Sicherheit meint in dem Kontext nämlich überhaupt nicht, Freiheitsrechte unter Sicherheitsgesetzen zu begraben, die jeden und alles unter Generalverdacht stellen, sondern reale Bedrohungsszenarien und die entscheidenen Fragen dazu anhand der gesellschaftlichen Kosten rational zu diskutieren und zu entscheiden. Neuland ist in dem Kontext einfach ein vollkommen irrationaler Begriff, denn dies ist genau der Kern jeder gesellschaftlichen Aushandlung. Diese Aushandlung findet aber gar nicht mit der Zivilgesellschaft statt.

Die verbale Rechtfertigung für entgrenzte Überwachung, die die Kanzlerin und viele Innen- und Sicherheitspolitiker anstimmen (denn so und nicht anders sehe ich ihre Aussagen), klingt in meinen Ohren wie purer Kolonialismus. Und sie rechtfertigt sehenden Auges, die Zivilgesellschaft zur Geisel zu machen und Stück für Stück in eine militärische Kampfzone, in einem nicht erklärten Krieg gegen die eigene Bevölkerung zu machen, einer Bevölkerung, der bis auf das Mark misstraut wird - einfach weil es extrem leicht fällt, diese Technik an sich als asynchrone Bedrohung zu betrachten. Es passiert also genau das, was bei genauerem Hinsehen einfach nur ganz furchtbar dumm und gefährlich ist. Denn diese “neue Bedrohung” ist vor allem eins: Gefühlt, und sie verleitet zu offensichtlich irrationalem Verhalten und zusehens zu immer stärkerer Machtverschiebung. Sie ist aber im Kern nur Ausdruck von Veränderungen, die mindestens seit Erfindung des Feuers oder des Rades, also von jeher, durch Technik ausgelöst wird.

Ich kenne nicht wenige Akteure, die einfach nach ein, zwei oder gar drei Dekaden die Lust verloren haben, immer und immer wieder zu erklären, dass eine computergestützte, vernetzte Technik sich sehr leicht in sehr repressive Werkzeuge verwandelt - also eben das was mit “Technik hilft vor allem dem Stärkeren” am Besten umschrieben werden kann. Und was gibt es in einem Staatsgebilde stärkeres als Polizei, Geheimdienste und das Militär, denen dazu auch noch die quasi unkontrollierte Macht über die Frage zugestanden wird, welches Verhalten als verdächtig oder problematisch definiert wird? Und dieser Dreiklang ist es auch, der das Ganze so überaus problematisch macht, wenn nicht mal mehr richtige Trennungsgebote existieren.

Wir waren da schon mal viel weiter, denn echte Gewaltenteilung sollte als Errungenschaft einer modernen, vitalen und selbstbewussten Demokratie verstanden werden. Ich habe aber auch mittlerweile vollstes Verständnis für jeden, der es ablehnt an Anhörungen teilzunehmen, die zu reinem Mummenschanz verkommen, und dann lieber Richtung Karlsruhe oder Luxemburg zieht.

Wenn es jedenfalls etwas Neues in Neuland gibt, so ist es nur diese eine Sache: Wie muss der Diskurs der Exekutive mit der zivilen Gesellschaft neu justiert werden - und das schliesst selbstverständlich die Diskussionen ein wie die darüber, wie Kontrolle über die Überwachung unseres Verhaltens gestaltet sein muss und ob wir diese Überwachung überhaupt brauchen. Neuland ist nicht Bastaland und sollte auch nicht unser Ziel sein.

Alle anderen Diskussionen, die aus der Neuland-Meme entstehen, sind glaube ich vergleichsweise uninteressant. Denn diese Meme zeigt höchstens eins: Die ausserordentliche Verzweiflung, die eine Reihe von Menschen seit Jahren, ja teilweise seit Jahrzehnten erleben. Oder anders: Das, was Merkel als Neuland bezeichnet, sehe nicht nur ich als das Neuland, das ein Maß an Kontrolle definiert, die einem seltsamen, demokratischen Grundverständnis entspringt.


The Turkey Curse

08.06.2013 16:51:00

Na und, Thomas?

Ich bin kein Rechtsgelehrter, aber selbst mir fallen manchmal Denkfehler von Thomas Stadler auf, die er in seinem Blog äussert. Normalerweise ignoriere ich solche Aussagen dann einfach, aber grade in der Debatte zur EU-Datenschutzreform kommt die Argumentation oft genauso daher, wie die der Lobbyisten, die es zu bekämpfen gilt.

Diesmal muss ich mich aber doch dazu äussern, denn einige Ansagen in seinem Text Prism ist kein originär amerikanisches Phänomen lassen mir die Nackenhaare zu Berge stehen.

Nach deutschen Recht dürfen deutsche Geheimdienste eben nicht tun und lassen was sie wollen, sie müssen sich an Recht und Gesetz halten - es kommt halt nur selten bis nie zu Verfahren, die es aber durchaus geben könnte, auch wenn sie extrem kompliziert zu führen sind. Das gilt umso mehr, wenn Angehörige von Geheimdiensten fremder Staaten gegen dieses Recht verstossen, und das gilt selbstverständlich auch für Verstösse gegen EU-Recht. Und das gilt erst recht, wenn sie sich dazu illegal Zugriffe auf informationstechnische Systeme verschaffen, durch Backdoors oder einen gezielten Angriff. Wenn man diesem Grundsatz nicht folgen würde, gäbe es keinen Rechtsstaat - den ich aber durchaus noch für existent halte. Denn nur, weil sich Geheimdienste nicht darum scheren, wird ihr handeln nicht legal, sondern unterliegt Rechtsnormen (und sowas wie Prism ist in der Form im deutschen Rechtssystem nicht konstruierbar). Es gibt also durchaus Ansätze, diese Schnüffelei auch mit Hilfe von Gesetzen einzudämmen oder doch zumindest mit einem extrem hohem Preis zu versehen. Von daher ist es sogar ganz entscheidend, die rechtliche Situation entsprechend auszugestalten, ja unerlässlich.

Ob nun ausgerechnet die Datenschutzverordnung der sinnvollste Weg ist sei einmal völlig dahin gestellt (ist es ganz sicher nicht). Das alles ist natürlich wenig wert, wenn es gar keine Sanktionen gibt, sondern einfach akzeptiert wird, dass Geheimdienste so sind wie sie sind (und das tut er ja in seinem Text irgendwie). Diese Akzeptanz ist aber schon längst nicht mehr vorhanden, und es ist nur eine Frage der Zeit, bis sich dieser gesellschaftliche Konsens darüber in konkreten Maßnahmen äussert - wenn auch vielleicht nicht jetzt und gleich. Es gibt aber mehr als genug Anzeichen, dass sich diese Form der geheimen Aktivitäten nicht mehr ewig aufrecht erhalten lassen.

Aber eine Ansage “die scheren sich sowieso nicht darum” geht meiner Ansicht nach total fehl: Selbstverständlich kann Deutschland oder die EU entsprechende Richtlinien schaffen, die auch eine Wirkmacht entfalten - und soweit ich das einschätze ist man damit auch gut beraten. Denn was ist “Staat” anderes als die Gesamtheit seiner Bürger? Und diese muss er gegen die politischen und wirtschaftlichen Interessen fremder Staaten schützen (sonst brauchen wir keinen Staat und müssen auch nicht mehr weiter diskutieren).

Diese Verordnung ist einer der Bausteine, mit dem Rechte und Pflichten von Bürgern unter bestimmten Bedingungen definiert werden sollen, und ich würde es besser finden, wenn er sich als konstruktiver Bürgerrechtler zeigen und mit ordentlichen Vorschlägen um die Ecke kommen würde statt schräg gegen Regelungen zu argumentieren, die die Bürgerrechte und den Datenschutz stärken sollen.

Und es ist ganz nebenbei auch wenig zielführend, die Journalisten in Mithaftung zu nehmen. Denn genauso wie die meisten Menschen keinerlei Bock auf jede Art von Geheimdiensten haben und mit ihnen nichts zu tun haben wollen, geht es auch den allermeisten Journalisten. Ist es ihnen zu verdenken?



25.03.2013 13:01:00

API der Karlsruher Verkehrsbetriebe

Dieser Beitrag interessiert wahrscheinlich hauptsächlich die Karlsruher Leser…

Die Karlsruher Verkehrsbetriebe (KVV) stellten vor kurzem ihre für Smartphones optimierte Web-App vor, mit der man u.a. live Abfahrtsdaten für  alle Haltestellen bekommen kann.

Aber eigentlich will man ja eine API haben, um selbst mit den Daten zu spielen…

Da das ganze natürlich mit AJAX funktioniert kann man schön mitlauschen, wen man was fragen muss, um selbst an diese Daten zu kommen. Es stellte sich sogar raus, dass mein erster Versuch, nämlich die Kommunikation via Wireshark mitzuschneiden, schon Overkill war, denn es handelt sich um reine GET-Anfragen, der API-Key wird als Parameter übergeben. Steht alles im Quellcode der Seite :)

Ich hab mich dann gleich mal drangemacht, die API ein bisschen zu dokumentieren und Python-Bindings zu schreiben. Gibt’s beides auf meinem Github.

Wenn jemand Bindings für andere Sprachen oder coole Statistik-Tools baut, darf er mir die gerne verlinken :)


Wenger Online#Blog

23.03.2013 18:33:42

Reise nach Anshan, Liaoning, China

Ich war eine Woche geschäftlich in Anshan in der Provinz Liaoning in China. Anshan ist für chinesische Verhältnisse eine kleine Stadt mit *nur* etwas mehr als 3 Millionen Einwohnern. Der nächste international erreichbare Flughafen ist in Shenyang von wo aus es noch etwas mehr als eine Stunde mit dem Auto bis Anshan ist.

Für eine Reise nach China benötigt man ein Visum welches man nicht zu knapp vor der Reise besorgen sollte, die eigentliche Einreise geht dann recht unspektakulär über die Runde, man füllt noch im Flugzeug einen Einreisezettel mit der Hoteladresse aus und wird nach einem kurzen Blick in den Ausweis durch den Zoll gewunken.

Als ich in Anshan angekommen war, fehlten mir und noch drei weiteren Reisenden aus Deutschland das Gepäck. Trotz der sehr hilfsbereiten Flughafenmitarbeiter war es nicht gerade einfach die notwendigen Anträge zur Gepäcksuche auszufüllen, da niemand im ganzen Flughafen mehr als 2 Worte englisch sprechen konnte. Im laufe des Abends wurde das Gepäck irgendwo wiedergefunden und am darauffolgenden Tag direkt in das Hotel geliefert.

Ich übernachtete, wie schon bei früheren Besuchen, im Wu Huan Hotel. Die Eingangshalle strotzt China typisch nur so von Marmor, Gold und Glitzer. Der Rest vom Hotel ist im gleichen Stil gebaut, doch vielen Ecken sieht man deutlich an das seit dem Bau wohl noch nie etwas renoviert wurde.

Ganz oben im 27ten Stock gibt es morgens immer das Frühstück und wenn man Glück hat die aufgehende Sonne über der Stadt. Leider ist es schwierig schöne Bilder von hier oben zu machen, da die Fenster wohl länger nicht mehr geputzt wurden.

Trotz der ganzen Arbeit war es mir möglich an einem Tag die größte Jade Buddha Statue der Welt zu besuchen. Der Tempel liegt direkt am Rande der Stadt neben einem riesigen Park.
Blick vom Hotelzimmer DSCF1042 DSCF1046 DSCF1047 DSCF1048 DSCF1057 DSCF1058 DSCF1063


Wenger Online#Blog

15.03.2013 17:00:46

CNC Sticken II


Trauriger Roboter für ein T-Shirt. Vorlage, von Hand reduziert auf wenige Farben und komplizierte Details vereinfacht. Beim ersten Sticken habe ich vergessen zusätzlich dieses Stickfließ unterzulegen und es hat mir ganz viele Löcher in den Stoff gestickt. Leider war das T-Shirt dann nicht mehr zu retten, der zweite Versuch hat dann schon besser geklappt.

Sad Robot - Vorlage SAM_1679 SAM_1681 SAM_1684 SAM_1685 SAM_1686
mehr... v4

19.02.2013 20:11:00

There is no Cyberwar

Recently, there has been widespread hysteria about the Chinese government, like the governments of the United States of America and Israel and Russia before it, possibly endorsing or supporting people breaking into other peoples computer systems. In the light of the panic being spread by people for whom a general state of fear about foreign people breaking into your computers might be advantageous, it is important to remember one thing:

There is no Cyberwar. Cyberwar is not a thing that is happening anywhere or at any time, nor is it a thing that has ever happened. It is not a thing that is likely to happen in the near future.

Lets break the word “Cyberwar” down into parts. It is made from the word “Cyber”, a prefix used by people who are not competent with computers to mean “Computer things we do not understand”, and “War”, which is generally understood to mean “violent conflict between nations”, or at least “violent, armed conflict”. The kind of conflict where destruction is widespread and people die.

You might have noticed that we haven’t really seen anyone dying from supposed “Cyberwarfare” - at best, there has been economic damage from IP violations, and some breakage of Iranian centrifuges - arguably the most war-like “act of cyberwarfare” to date, and funnily enough perpetrated by the people who are now crying the loudest about it.

That there is no cyberwar does not, by any means, mean that there is no computer crime. There is stealing of industrial secrets, there is mass spamming and scamming, there is all around virus writing and breaking into computer systems by criminal organizations.

Which brings us to the actual, important point: Computer crime is a real, existing, hard to solve problem. Which is exactly why the panic about “Cyberwar” is so harmful - it distracts from the problems we actually have, in lieu of problems that are for the most part made up or actually created by the measures that are supposedly taken to prevent them.

There is no Cyberwar, but if a general and a bunch of politicians on a power trip create a “Cyberwarfare Division”, there suddenly is a whole lot more people writing malware and doing things that destabilize the internet and hurt the network as well as society as a whole. There suddenly is pressure on security professionals to let some malware slide and to build backdoors into their systems, which invariably get abused or introduce new security vulnerabilities. There suddenly are people selling “security consulting” to scared companies, making sure they are protected against a threat that for the most part just doesn’t exist while leaving their systems open to the more everyday, less sexy security problems that cannot be solved by applying quickfixes at 90USD/hr.

It is 2013, computer security is not a thing that is solved or can be solved easily, and the “Cyberwar” hysteria is making it worse. So please: Stop. Stop panicing about Cyberwar. There is no Cyberwar, and the panic about Cyberwar is harmful and in the way of making actual progress towards getting more in control of problems we actually have.


Wenger Online#Blog

03.02.2013 21:32:18


Zu Weihnachten habe ich mir eine Stickmaschine geschenkt. Eine Brother Innovis 900. Mit einem XY-Tischchen kann diese bis zu 10x10cm, mit einem Trick auch bis zu 10x20cm, große Bereiche besticken. Über einen USB Anschluß auf der Seite kann man eigene Bilder in die Maschine laden.

Der Geburtstagswunsch unseres Sohnes war nun der Anlaß diese Funktion endlich mal genauer unter die Lupe zu nehmen.

Davor kommt aber erst der beschwerliche Weg das gewünschte Bild ins passende Format zu bringen. Da wir beim Sticken nicht 300 mal die Fadenfarbe wechseln wollen ist es wichtig sich auf möglichst wenige Farben zu beschränken. Die meisten Bilder, auch wenn sie auf den ersten Blick so aussehen als ob sie nur aus wenigen Farben bestehen, haben an den Übergängen ganz viele zwischen Farben.

Für dieses Bild (weil es Comicartige schwarze Ränder um jeden Farbbereich hat) war es die beste Methode das Bild zuerst in Scharz-Weiss zu wandeln und dann die Flächen wieder mit dem Floodfill werkzeug zu füllen.

Normale Bilder und Zeichnungen sind als sogenannte Bitmaps gespeichert. Das heisst für jeden Bildpunkt ist gespeichert welche Farbe er hat, aber es gibt keine Information darüber welche Bildpunkte zum Beispiel eine Linie oder Fläche bilden. Damit ein Bild gestickt werden kann muss diese Information zuerst wieder gewonnen werden, das nennt man vektorisieren. Die meisten Stickprogramme haben dazu eine entsprechende Funktion, hier können dann noch Details eingestellt werden. Zum Beispiel wie genau die Vektoren sich an kleine Zipfel annähern sollen und welche Farben gestickt werden sollen.

Da das Motiv auf einen dunklen Stoff gestickt werden soll, habe ich die äußeren schwarzen Ränder teilweise entfernt, besonders zwischen den Haarsträhnen. Bei einem Test war der schwarze Rand da viel zu dominant. An vielen Stellen können gleichfarbige Flächen allein durch eine Änderung der Stickrichtung sichtbar gemacht werden.

Das Resultat sieht ganz gut gelungen aus, nur die gefüllten Flächen sind leider etwas zu klein geworden, so daß zwischen Umrandung und Rand etwas der unbestickte Stoff zu sehen ist. Das kommt daher das der Orginalstoff weicher ist als der den ich für die Tests verwendet habe. In der Sticksoftware gäbe dafür einen Korrektionsparamater, der die Stiche dann ein paar Prozente größer macht.


Wenger Online#Blog

03.02.2013 20:26:25


unsere Kleinen brauchten neue Mützen für Schnee, gewünscht war was “Drachiges”. Durch den verlängerten Halsteil bleibt es auch bei eisigem Wind schön warm an den Ohren. Wenn gewünsch kann ich gerne ein Schnittmuster hochladen. Passende Handschuhe mit Drachenzacken gabs auch noch dazu.

Mütze-Gelb Mütze-Blau

mgr's weblog

13.12.2012 01:57:04

Alex Wenger, Max-Gerd Retzlaff:

Zum dritten Mal in Folge nehmen Alex Wenger und ich an der Weihnachtsbaumausstellung der Staatlichen Hochschule für Gestaltung Karlsruhe teil:

The Invisible Tree

— shy but photogenic —

Please take a picture!

Alex Wenger & Max-Gerd Retzlaff

The Invisible Tree; click for a larger version (204 kB).


Ein unscheinbarer kleiner Kasten. Miit dem bloßen Auge ist nichts zu sehen. Erst im Blick durch eine Kamera (oder auch ein Handy) erscheint auf dem schwarzem Karton ein lila glimmender Baum.

Gemeinsame, frühere Projekte: »uoısuǝɯıp ɹǝɥʇo«, Tannenbaum braucht Zuwendung, LED Cube Modeller, Paraflows edition, and Hacking OpenGL (in Lisp), LED Cube Modeller, 22C3 Edition, LED-Cube (Entropia-Wiki), 3d Baby Cube (Weblog von Alex).

Read the whole article.


Wenger Online#Blog

04.11.2012 17:26:26

Ferien auf Pianta Monda

Nachdem wir schon etwas länger die Novita (die Vereinszeitschrift von Pianta Monda) mitlesen, haben wir es in den Herbstferien endlich geschafft einmal wieder ins Tessin zu fahren. Die Hinfahrt verlief ohne größere Staus und so sind wir am späten Nachmittag in Menzonio angekommen. Hier mussten wir all unser Gepäck auf die Schultern nehmen und erstmal einen ziemlich steilen Berg hinaufsteigen. Es gieng mindestens 15min. sehr steil Bergauf und wir waren uns nie ganz sicher ob wir uns auch auf dem richtigen Weg befanden, doch dann war Pianta Monda in Sicht. Ulrico hieß uns Willkommen und Peter zeigte uns unsere Behausung. Wir waren gerade die einzigen Gäste und so hatten wir das ganze Gästehaus für uns aleine.

P1040141 P1040139 P1040143 Sonnenaufgang panorama P1040132-P1040134 panorama P1040266-P1040276 panorama P1040293-P1040298


15.08.2012 17:34:00

Humble Bundle for Android #3

Ihr kennt das ja inzwischen: ein Stapel Indiegames für Android, Windows, Linux und Mac, kein DRM, ihr bestimmt den Preis, ein (einstellbarer) Teil davon für einen guten Zweck. Die Spiele könnt ihr dann auch auf Steam freischalten.

Diesmal mit dabei:



02.08.2012 15:58:00

AsciiDialog: Fühl dich wie ein Hollywood-Hacker

Mal ein bisschen Eigenwerbung:

In Filmen sind Hacker ja immer voll cool: Tipp tipp tipp tipp – ACCESS GRANTED.

Ich wollte schon immer mal ein Skript bauen, das mir so eine tolle riesige “ACCESS GRANTED”/”ACCESS DENIED” Meldung auf der Konsole ausgibt.

|  ____ ____ ____ ____ ____ ____    ____ ____ ____ _  _ ___ ____ ___    |
|  |__| |    |    |___ [__  [__     | __ |__/ |__| |\ |  |  |___ |  \   |
|  |  | |___ |___ |___ ___] ___]    |__] |  \ |  | | \|  |  |___ |__/   |
|                                                                       |

(mein Code-Highlight-Plugin macht die Farben kaputt -.-)

Ich sollte ja eigentlich auf meine Klausuren lernen, aber man kann ja nicht immer nur lernen… Daher habe ich nebenbei diese schon etwas ältere Idee umgesetzt.

Und weil ich ja so viel lernen musste, konnte ich das auch sehr gründlich umsetzen :) Das Ding kann jetzt einen gegebenen Text mit ncurses in einem schönen ASCII-Style Dialog anzeigen, wahlweise auch farbig (rot, blau, grün, weiß) und kann den Text auch vorher durch figlet jagen.

Zu finden ist das Ganze auf GitHub.

Wie funktionierts?

asciidialog foo

Zeigt einen einfachen Dialog mit dem Inhalt foo

asciidialog -f -a "-t -f cyberlarge" foo

Verschönert den Text mit figlet. Zusätzliche Argumente für figlet können mit -a übergeben werden (standardmäßig ist das “-t”, damit figlet die ganze Terminalbreite nutzt).

asciidialog -c red ACCESS DENIED

Mit -c kann man eine Farbe für den Dialog angeben. Möglich sind “red”, “blue”, “green”, “white” and “default” (Terminal Standard benutzen)


git clone git://
cd AsciiDialog
./ -f -c red "tl\;dr"

Uploads from neingeist

06.07.2012 03:20:31


neingeist posted a photo:



Uploads from neingeist

06.07.2012 03:20:30


neingeist posted a photo:



Uploads from neingeist

06.07.2012 03:20:30

keine ponies mehr!

neingeist posted a photo:

keine ponies mehr!

ging's um gulasch oder um den info-beamer?



31.05.2012 21:42:00

Humble Bundle #5

Das neuste Humble Bundle hat es in sich: Bastion, Amnesia: The Dark Descent, Psychonauts, LIMBO und Superbrothers: Sword & Sworcery bilden, denke ich, das wertvollste und auch ein sehr gutes Humble Bundle. Natürlich wie immer zum selbstbestimmten Preis und ein Teil des Geldes geht an die EFF und Child’s Play

Fokus liegt dieses Mal auf eindrucksvollen, atmosphärischen Welten:

Bastion ist ein Action-RPG, das dank einem genialen Erzähler seine tiefe Geschichte erzählt, ohne auf viele Dialoge zu setzen, die das Spiel verlangsamen. Das Spiel gibts erst, wenn man mehr als der Durchschnitt zahlt (grade 7,15$).

Amnesia: The Dark Descent ist ein furchtbar gruseliges Horrorspiel – nichts für schwache Nerven, regelmäßige Adrenalinstöße garantiert. (Das Spiel macht besonders Spaß, wenn man andern beim Spielen zuschaut :) )

Psychonauts ist ein Action-Platformer, der seinem Namen alle Ehre macht: Welt und Charaktere sind bunt, schrill und haben teilweise echt eins an der Waffel.

LIMBO ist ein 2D Puzzle-Platformer, in dem ihr euch durch eine monochrome, düstere Welt schlagen müsst, die euch einfach nur umbringen will (und das recht häufig auch schafft).

Was Superbrothers: Sword & Sworcery sein soll, kann ich noch nicht richtig sagen, in diesem für iPhone entwickelten 2D Point&Click Adventure steuert ihr euren Helden durch eine  Welt in sehr schöner Pixelgrafik, aus den ersten Minuten kann man aber noch keine wirkliche Story erkennen.

UPDATE: Superbrothers: Sword & Sworcery hat wenig Rätsel oder ähnliches, es erzählt vielmehr eine Geschichte und nimmt sich dabei herrlich wenig selbst ernst.

Hier noch eine Meinung des britischen LetsPlayers TotalBiscuit, dem man die Spiele vorher schon verraten hat. Während er über das Bundle redet, versucht er sich nebenbei an Superbrothers: Sword & Sworcery. Bastion, Amnesia und LIMBO hat er auch alle schon mal angespielt:



11.05.2012 17:34:00

rapidly recolor websites by hand or automatically with colortater

Recently, someone asked me via the feedback form at the bottom of my blog whether I would be okay with them having their blog look similar to mine. I have no exclusive right to the template (it was made by someone else and provided to me for free by Viktor Persson) and I like the spirit of sharing, I gave them the go-ahead.

What I didn't expect was that the pages look so very similar, because there's not really much original design to my blog anyway like a title picture or something. I didn't want the pages to look so stunningly similar, so I decided to change my color scheme.

That's when my lazyness kicked in. I knew there were about five or six places where I'd put small variations of that tone of green that wasn't in the original template and I didn't feel I could just hack the hex codes and get a good-looking result immediately. Therefore I came up with the simplest plan that could possibly work: Create a tool that automatically classifies colors in css style sheets into groups and offer the user to interactively change them. What could go wrong?




09.05.2012 19:24:00

ipython notebook for more engaging documentation

During my work on zasim, I've found out that the most excellent IPython notebook web application is well suited for creating engaging and enlightening interactive examples and tutorials for your library, framework or program.

You can find examples for all things discussed in this article both in the IPython example notebooks and the zasim example notebooks.

Here's how it works.

Run ipython notebook in the console, perhaps supplying --notebook-dir as the place where notebooks should be kept. Then just create a few notebooks with text cells for explanations and code cells for examples. Other than full examples, that can just be run with "run all", you can also write incomplete code cells and ask the user to fill out the code, perhaps with an assertion at the end that the user has to make pass as an exercise.

But there's more to the IPython notebook than just code input and text output:

Cooler types of output

Displaying different formats in-line

The notebook can display graphics (pngs and svgs for instance) and HTML or javascript snippets as code output and you can input TeX equations in your markdown cells, that will be rendered with MathJax.

Making an object pretty-printable as a png or similar is pretty simple; you just have to implement a method like repr_png or similar that return appropriate data. Look at the documentation of IPython.core.formatters for more information on the available formats.

Displaying multiple things for one cell

If you want to display multiple things in one go, you can import the function display for objects that have appropriate repr_format methods or the different display_foo methods for png, svg, … from IPython.core.display. They can be used in loops for instance to display sequences of images in multiple lines. But we don't have to restrict ourselves to static imagery. With a little trick (that's going to be improved upon "soon"!) we can even get animations.

Displaying (crude) animations

At the moment, this is rather slow and somewhat sloppy with a bit of flickering, but you can use IPython.core.display.clear_output to remove stdout, stderr or "other" output from the cell currently being run. That "other" contains any images or snippets you have displayed with the display function.

With a bit of time.sleep and clear_output, you can make animations. But don't choose too short pauses between the frames, because the web frontend does not wait until the new image is generated and loaded before clearing the output.

With text, of course, this works more smoothly.

Cooler types of interaction

Using gui event loops

Of course, the magic behind the IPython notebook is just the same as the magic behind the qtconsole or the regular interactive shell. That means that you can run different types of event loops and control them from the notebook. For zasim that means that you can use the supplied PySide/Qt-based gui elements and let them show up on the screen. Of course there is no automagic VNC setup going on, so the gui windows will just pop up on the screen of the user where ipython notebook was called and will fail if no gui is available.

All you need to do to get the event loop running and push gui elements around is this little line in one of your cells:

%gui qt

Connecting other frontends

Since every notebook runs a stardard IPython kernel behind the scenes, you can connect any program that supports the IPython zmq protocol. That includes the IPython QtConsole and the regular interactive shell, too.

In the terminal you've started the notebook with, you'll see a couple of lines like this one:

[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-dcd04517-dd1e-4339-84e8-46ef617e26c1.json

Just supply this --existing argument to your other application and you can interact with the kernel that's running for the notebook.

Currently, commands run in the notebook won't show up in other connected frontends and vice versa, so it can get a bit confusing if you actively change state from the other connected frontend, but it's still very useful to inspect the state of the kernel.

Cooler ways of launching the notebook

Distributing example and tutorial notebooks with your library or framework has just one little problem: The user most likely won't be able to write to the notebooks and keep their changes, due to system-wide installations being read-only. And if the user can write to those notebooks, you may not want them to overwrite the example versions you distributed.

To solve this problem, I wrote a little IPython notebook launcher that creates copies of all the notebook's files and launches the notebook, as well as a browser, for those copies. I even went a little further and added the option to put customised imagery and style sheets in there, so you can brand the notebook web app with your logo or your website style.

This piece of code has a page on the IPython Cookbook section of their wiki and the version I use in zasim can be found in the github repo as well.

Keeping your docs and code in sync

One important thing is to keep the documentation up to date with changes to your internals. Of course you should be on your toes anyway every time you change something that's described in the documentation, but every now and then, one or two sentences in your documentation might slip by unnoticed and become out of date.

Using sphinx for zasim helped me in that aspect, because I can put code examples everywhere as doctest blocks that will be executed whenever the documentation is built. This already helps a fair bit, but one could go even further and add invisible doctests right next to the paragraphs that make statements to ensure that all statements in the documentation hold true even as you change your documentation.

But in addition to that, we can also run our example notebooks as unit tests. This can be done with a rather simple file for py.test. Details can be found on the IPython cookbook page.

A large part of this has been done for me by minrk of the IPython project. Thanks!

Exporting notebooks to sphinx

At the moment, sphinx integration is not there, but according to an old blog post somewhere, it's a high priority item. I imagine there would be a plugin for sphinx that would read and/or execute an ipynb file including output cells and imagery and put it right into a sphinx document. That I'd love to see.

Until then you can use the print function in the notebook to open a print-view that you can then save using your browser as an html file with imagery.

That's not ideal, but it will certainly get better. Until then, you can do it like me and just tease your potential users with one or two screenshots.


All in all, the IPython notebook isn't just really useful for end users as a tool, but also for developers of anything that could be learned through guided experimentation. It is not only more convenient than just text (which the user would have to copy-paste to a shell to try), but also more interactive, because the user can immediately change values inside the cells and re-evaluate. That gets pretty close to immediate feedback.

So do give it a try, either with the IPython example notebooks or the zasim example notebooks.