Like Converter

Convert Facebook Likes to candy.

The Like Converter transforms likes earned for a facebook posting into delicious candy. It is a reward system for social media managers and a source of motivation for your desk.

The thing itself is built (like the Twetterhaeuschen) on a raspberry pi, an arduino uno using node.js and firmata. The source code is on github:


Die Dübitale Revolution

Die Dübitalanzeige ist eine revolutionäre neue Darstellungsform von Information ohne Stromverbrauch.

Bayrische Großvisionäre haben das Tor zu einer neuen Dimension aufgestoßen. Die “Dübitalanzeige” besteht aus einem Holzbrett, in das durch präzise Bohrungen einzelne Dübel von Hand variabel angeordnet werden können. Je nach Dübelsetzung kann so, eine gewisse geistige Flexibilität vorausgesetzt, eine kurze Botschaft encodiert werden, ohne ein einziges Watt zu verbrauchen.

Die “Dübitalanzeige” ist der erste große Schritt Richtung dübitaler Ära. Ob das Pixel tatsächlich dem Düxel Platz machen werden muss, wird sich erst in den nächsten Jahren herauskristallisieren.

Die Eckdaten:

  • Auflösung: 5×30 Düxel
  • Stromverbrauch: 0 kW
  • Bildschirmdiagonale: 30”
  • Dübcheck & Roe’sche Constraint: 100 Dübel

CSV data manipulation in Bash

I used the akw, join and pr to do some csv data manipulation in bash.

I was in the desperate need for converting the csv file of my actual time tracking tool Toggl to a different format I can import. To relieve my weekend pain of manually editing spreadsheets, I wrote a bash script to do this for me.

This is the csv export of Toggl:

User,Email,Client,Project,Task,Description,Billable,Start date,Start time,End date,End time,Duration,Tags,Amount ()
stefan,,goodclient,299 3021 mytask,"","",No,2013-04-29,08:24:08,2013-04-29,09:18:58,00:54:50,,

This is the format I need:


There is some information I can exclude, some information I need to reformat (eg. time, date) and add some extra stuff like the client id. Here is the script.

[code language=”bash”]

awk -F’,’ ‘NR==1 {$15="Mitarbeiter"} NR>1 {split($8,a,"-");$8=a[2]"/"a[3]"/"a[1];$15="55"}1′ OFS=’;’ input.csv > a.csv;
awk -F’,’ ‘NR==1 {print "Projekt Tät"} NR>1 {print $4}’ input.csv | awk ‘{print $1,$2,""}’ OFS=’;’ > b.csv;
awk -F’,’ ‘NR==1 {print "Von"} NR>1 {print $9}’ input.csv | awk -F’:’ ‘{print $1,$2;}’ OFS=":" > c.csv;
awk -F’,’ ‘NR==1 {print "Bis"} NR>1 {print $11}’ input.csv | awk -F’:’ ‘{print $1,$2;}’ OFS=":" > d.csv;
awk -F’,’ ‘NR==1 {print "Dauer"} NR>1 {print $12}’ input.csv | awk -F’:’ ‘{print $1,$2}’ OFS="." > e.csv;
pr -m -t -s";" a.csv b.csv c.csv d.csv e.csv > f.csv;
LANG=en_EN sort -t ";" -k 2,2 projektliste.csv > projektliste_cens.csv;
LANG=en_EN sort -t ";" -k 16 f.csv > f_cens.csv ;
LANG=en_EN join -t ";" -o 2.8,2.15,2.16,1.4,2.17,2.19,2.20,2.21,2.6 -1 2 -2 16 projektliste_cens.csv f_cens.csv > output.csv;

  • Awk is the perfect command for these kind of tasks. Howevere, I needed to save each step in its own temp file.
  • The first line adds the column “Mitarbeiter” with the according headline and my id. I also reformat the date with “/” rather than “-“.
  • The second line extracts the project and task id from the ‘project column”, which is delimited by spaces.
  • The third and fourth line removes the seconds from the start and end times.
  • The fifth line, basically, does the same thing but uses a dot instead of a colon for the duration (
  • Then, the whole csv files are merged using pr.

The grand final is done by join, because i needed to get some more information from an additional csv file, the client id. Join is pretty much the same as a ‘vlookup’ in spreadsheets. Before this works, however, the matching columns need to be sorted. I had big troubles getting this to work, since there was some general language fuckup. I found the solution here. Join also rearranges the columns.


Ort und Zeit

  • Wien, 28.04.2012


  • nur Flaschenbiere oder auch Dosen


  • ein Team verpackt die Bierflaschen
  • ein Team codiert die Flaschen
  • nach der Verkostung werden Namen und Codierung miteinander verknüpft.


  • 1-5 Wertung, Schulnotensystem
  • Farbe
  • Geschmack
  • subjektive Gesamtwertung (Geilheit)


  • Nops
  • Anja
  • Yogi
  • Flo
  • Martin
  • Andrea
  • Moritz
  • Martina
  • Carmen
  • Stefan
  • Juliane


Data Journalism: Real-Time Train-Delay Monitor

The online-version of German newspaper Süddeutsche Zeitung ( rolled out an online monitor that shows the current delay of intercity trains. The newspaper uses delay-data published by Deutsche Bahn and animates it in an interactive time-line.

The reason for the delay of Intercity Express 529 and its history is displayed on the right side: Rail works and technical problems.

This video shows how to use the monitor (in German language):