30.01.2014All new in 2014

Some time ago I started to fiddle with ruhoh, a static blog generator. I thought the idea of having static files as the interface to your website was intriguing.

When I started ruhoh was still beta (I don't remember the exact version number, but you can see for yourself if you want). The nice thing about ruhoh is, that it's still in development, and not all things just work. But the creator of ruhoh is available on Twitter or GitHub, so you can just ask, if something does not work.

Anyway, my early attempts to move from Tumblr to ruhoh never really made it past this fiddle phase. But when Tumblr announced a big DNS change and I found out that the DNS service I was using (XName) is really bad when I comes to changes, I lost my blog.

I used to blog under the domain readmore.ch. But this doesn't feel right anymore. I use my nickname 'odi' resp. 'metaodi' all over the interwebs. So why not use it for my blog? Therefore I was once more looking into ruhoh, which in the meantime grew to a pretty good stable product (with still some fiddling if you want). So finally I created a new blog using ruhoh 2.6, imported my old Tumblr content here as markdown files and start all over again.

The fun part was to upgrade the ruhoh standard template to Bootstrap 3. Now I got an up to date blog, which is even responsive. The complete source can be found on GitHub. Btw: I use GitHub Pages for the hosting and switched to DNSimple to provide my DNS service for metaodi.ch.

My plan for this blog is, that it should contain my opinion on various topics. It should not be too technical (I will write such content on other blogs, like the one of my company). It'll be mainly in English, but every once in a while I will write in German if needed (look out for the corresponding tag).

Happy reading and welcome to my new home!

23.05.2013On Citizenship in Open-source software development — Products I Wish Existed


TL;DR: By giving an actual social status to the people contributing to a repository, GitHub would solve the problem of zombie-projects with …

11.10.2012Insert Coin To Play

Can gaming concepts help make OpenStreetMap better?

29.05.2012Fiddle around (code)

Since I’m using JavaScript more heavily, and beeing active on StackOverflow, I’m using a service called jsFiddle. It’s a great tool with a simple idea (I can see a pattern here: great tools are always based on simple ideas): Make it easy to write demo code. Either to help someone or to point out a problem.

jsFiddle UI

jsFiddle comes with a very basic user interface that is divided in 4 parts:

  • Basic HTML (omitting <head> and everything you don’t need)
  • CSS for styling
  • JavaScript (the heart of the page)
  • and finally the resulting page

No login required, just write your code and share the unique link. You can even include JavaScript frameworks or other external resources, it’s really easy!

Then last week I stumpled upon a website called sqlFiddle, which uses the basic idea of jsFiddle, but this time for databases and queries. There you can select different database systems and start writing your SQL code.

Now today I learned about a site called Sencha Fiddle, that let’s you actually develop Sencha Touch mobile application. You can even download the whole thing when your done. Wow!

There are several more xFiddle services that I can think of being valuable:

  • LaTeX
  • Shell scripting (allowing me to choose which shell I want: csh, ksh, bash, ..)
  • Python
  • Sass/SCSS
  • Less
  • ..

I don’t know if there is a directory of these services (leave me a message if you know it), but anyway I hope to see more websites like that in the future.

Spread the word. Start to code.

UPDATE I: There is a Python Fiddle :-)

UPDATE II: …and Ruby Fiddle (thanks Jürg)

UPDATE III: reFiddle for regular expressions (thanks Toni Suter)

08.03.2012Setup JavaScript unit testing using QUnit, PhantomJS and Jenkins on Amazon EC2

Me and my friend are currently working on a term paper about Google Fusion Tables. It’s about it’s possibilities and potential. Our goal is to create a cross-platform mobile application using Sencha Touch, therefore we need to write a lot of JavaScript code for the UI and to access the Google Fusion Tables. Fortunately Google provides an inofficial JSONP API, so we get native JavaScript access without another server roundtrip (there is a good blog post explaining the usage with jQuery).

The next question is: if we write tons of code in JavaScript, how are we going to unit test this code. We already used QUnit in a former project and it’s fairly easy to use, so we decided to use that. This all works very well, you get a nice web page where all your tests run in the browser and you get nice output, everything’s fine.

Browser output of

But, wait! What about our build? We use Jenkins CI, which is configured to build our project every time we push new code to GitHub. Wouldn’t it be nice if our tests run when we build, so we get immediate feedback and never ever forget to run them and fix our code?

Yes, it definitely would be!

Now we have several problems

  • How do I run JavaScript without a browser?
  • Does Jenkins “speak” JavaScript?
  • Is there a solution for ant? Do I need another tool? Another server?
  • How do I get my test results as XML, so Jenkins can handle them?

I checked serveral solutions to my this problems: From node.js to Rhino (there is even an ant based unit testing framework using Rhino) to TestSwarm. They were all too limited or too bloated. I couldn’t believe this is such a big deal to run QUnit JavaScript code, get the results and publish them in Jenkins.

This is when I found out about PhantomJS, a nice and handy headless WebKit browser, that runs JavaScript code. Exactly what I need. As we are using Amazon EC2 for this project, I tried to install PhantomJS on a basic Amazon AMI. I just couldn’t get it to work, when I asked in Twitter if someone succeeded to setup PhantomJS. Philipp Küng pointed out (thanks again!) that it is much easier to setup with Ubuntu. Well then, launch a new Instance on EC2, choose the latest Ubuntu AMI, and after some simple commands you’re good to go:

sudo add-apt-repository ppa:jerome-etienne/neoip
sudo apt-get update
sudo apt-get install phantomjs

After that I had to setup Xvfb (virutal framebuffer), because EC2 instances are headless. Generally see the PhantomJS Wiki for further information.

Now I have a PhantomJS instance, the published QUnit tests and Jenkins. To be able to retrieve the data from PhantomJS I created a simple PHP script, which runs on the new instance and just executes a shell command (idea from this blog post).

/* Display 99 is configured on the server using Xvfb */
$value = shell_exec("DISPLAY=:99 phantomjs run_qunit.js http://gft.rdmr.ch/test/js/index.html junit-xml");
echo $value;

With this URL I was able to create a simple ant target, which fetches the latest results from the tests:

<target name="test-js" depends="deploy">
    <get src="${test.url}" dest="${result.dir}/${result.js.file}"/>

Where ${test.url} referes to my PHP script, and ${result.dir} is configured as the location of JUnit reports in Jenkins (see screenshot):

Jenkins job configuration for JUnit XML

Now the last missing piece is to get proper output for Jenkins. I adapted the QUnit test runner from the PhantomJS examples accordingly (called run_qunit.js, see above, here is my version). I added a new command line parameter type, which determines the type of output the runner generates. With the value junit-xml, the output can directly be used by Jenkins, this is the reason for the junit-xml parameter in the PHP script above.

The generated XML looks like that:

<?xml version="1.0"?>
 Tests completed in 2294 milliseconds.
36 tests of 36 passed, 0 failed. 
<testsuite name="QUnit - JavaScript Tests" timestamp="2012-03-08T00:11:27Z" tests="36" failures="0" time="2.294">
<testcase name="PaintSwitzerland" classname="GoogleFusionTable">
<testcase name="Construtor" classname="GftLib">
<testcase name="Constants" classname="GftLib">
<testcase name="doGet" classname="GftLib">
<testcase name="doPost" classname="GftLib">
<testcase name="doGetJSONP" classname="GftLib">
<testcase name="doPostJSONP" classname="GftLib">
<testcase name="ExecSelect" classname="GftLib">

And in Jenkins like that: Test trend with failed/successful tests over

Overview of tests: Overview of all performed

Failed test: Detail of a failed test incl.

06.10.2011ZFF 2011: Turn Me On, Goddammit

Turn Me On,

In "Turn Me On, Goddammit" von Jannicke Systad Jacobsen spielt die bemerkenswerte Helene Bergsholm die 15jährige Alma, welche gerade dabei ist ihre Sexualität zu entdecken. Sie wohnt mit ihrer Mutter in einem Provinznest in Norwegen. An einer Party ereignet sich ein peinlich Vorfall mit ihrem Schwarm Artur, welchen sie brühwarm ihren Freundinnen erzählt (“He poked me with his penis!”). Niemand will ihr diese Geschichte glauben, fortan wird sie zur Aussenseiterin, die Lügengeschichten verbreitet.

Auch der Zuschauer des Film wird geschickt darüber im Unklaren gelassen, ob dieses Ereignis tatsächlich stattgefunden hat oder nicht. Die Kamera schweift manchmal ins träumerische ab, indem der Fokus auf dem Vordergrund liegt und der Hintergrund stark verschwommen wird oder die Farbgebung ganz stark ist. Dieses Stilmittel setzt die Regisseur immer dann ein, wenn die Hauptdarstellerin in ihrer Fantasie ist, jedoch manchmal auch bei Ereignissen die tatsächlich stattfinden. Dadurch erscheint auch die ganze Welt des Dorfes mal romantisch, mal langweilig.

Die Hauptdarstellerin ist eine Wucht, diese junge Frau weiss genau was sie will und bewegt sich sehr natürlich vor der Kamera, das Thema Sexualität ist einfach eine Facette ihres (pubertären) Charakters, der weder übertrieben wirkt noch ins Lächerliche gezogen wird.

Leichte Erzählweise, kurzweilige, gute Unterhaltung.

04.10.2011ZFF 2011: Kurzes aus der Türkei

Die Internationlen Kurzfilmtage Winterthur zeigten Kurzfilme aus der Türkei, dem diesjährigen Gastland des Zurich Film Festival. Die beiden Festivals haben schon die letzten Jahre eine Zusammenarbeit gepflegt.


My Mother Learns Cinema

My Mother Learns
Cinema (Nesimi Yetik, 2007)

Eine kleine Ode ans Kino, als ersten Schritt um das Kino kennen zu lernen, lehrt ein Sohn seiner Mutter die korrekte Aussprache einiger Regisseur.



Biskilet/Bicycle (Serhat Karaaslan, 2010)

Dieser Film, der ganz ohne gesprochene Sprache auskommt, erzählt von einem Jungen, der gerne ein Fahrrad hätte. Alles was ihm noch fehlt ist ein Hinterrad…


I, Soldier

Soldier (Ergun Köken, 2007)

Ein ganz spezieller Film, der zum Teil aus 2 Perspektiven gefilmt wurde, wobei beide nebeneinander gezeigt werden. Die Aufnahmen sind während den Feierlichkeiten zum Unabhängigkeitstag der Türkei entstanden.


Dem (Moment)

(Moment) (Aysegül Okul, 2010)

Ein Mann ist auf dem Weg zu einem Bewerbungsgespräch, unterwegs holt er sich noch einen Kaffee und trifft dabei eine Frau, welche Minuten später von einem Auto überfahren wird, Kurz darauf durchlebt der Mann die Szene nochmals, wird er diesmal das Schlimmste verhindern können?



Gemeinschaft (Özlem Akin, 2008)

In diesem kurzen Animationsfilm geht es darum als Gruppe eine unliebsame Person loszuwerden. Doch wie stellt man das an? Ein witziger Erklärungsversuch.


Xewna Yusiv / Yusiv’s Dream

Xewna Yusiv / Yusiv's
Dream (Ferit Karahan, 2011)

Yusiv führt ein normales Leben bis seine Idylle gestört wird: er wird heimlicher Zeuge eines Mordes.


KöY (Das Dorf)

KöY (Das
Dorf) (Mustafa Dok, 2009)

Der zu Beginn sehr lustig-fröhliche Film zeigt einen Mann, der es sich zur Aufgabe gemacht hat, auf einem Schild jeweils die genau Anzahl Personen die sich im Dorf befinden zu notieren. Dieser Spass wird aber jäh durchbrochen als das Militär auftaucht.


Bende Sira (Ich bin dran)

Bende Sira (Ich bin
dran) (Ismet Ergün, 2007)

Zum Abschluss gab es noch ein wahres Highlight: eine Gruppe von Jungs liebt es ins Kino zu gehen. Da sie nicht genügend Geld haben, gemeinsam zu gehen, legen sie jeweils zusammen und bestimmen wer gehen darf. Nach dem Filmbesuch, muss derjenige dann natürlich ganz genau erzählen was passiert ist. Der Film kommt ganz ohne Untertitel aus, die Bilder sprechen für sich. Die Jungs können sehr bildgewaltig von ihren Kinoerlebnissen berichten. Ein Schmaus!

30.09.2011ZFF 2011: Kriegerin


"Kriegerin" von David Wnendt ist eine Geschichte einer jungen, rechtsextremen Frau irgendwo in einer tristen Kleinstadt in Ostdeutschland. Der Film bewegt sich auch erstaunlich neutralem Boden, auf eine Moralpredigt und billige Erklärungsversuche wird verzichtet. Gezeigt wird vielmehr wie sich diese Frau in ihrer Nazi-Clique durchschlägt, wie die Leute miteinander umgehen und wie gross ihr Hass auf alles Fremde ist. Sobald ein Ausländer aufkreuzt, gibt es Radau, Fäuste fliegen. Dabei hauen die Frauen ebenso drauf wie die Männer.

Marisa (Alina Levshin) spürt jedoch, dass etwas nicht stimmt in ihrem Weltbild. Nach einem von ihr provozierten Unfall, macht sie eine Wandlung durch, davon darf aber natürlich niemand etwas mitbekommen. Diese innere Zerrissenheit sieht man Alina Levshin förmlich an, wunderbar gespielt, sehr beeindruckend. Einzig die Nebengeschichte von Svenja, einer 15jährigen, die neu zur Clique stösst, ist etwas gar überzeichnet. Die Verwandlung vom apolitischen Mädchen, zur “Heil Hitler” schreienden jungen Frau, geht mir etwas zu schnell.

Ich bin sehr gespannt wie dieser Film in Deutschland aufgenommen wird, zum Teil sind die gezeigten Szenen sehr hart, die Sprache ebenso. Dadurch entsteht der Eindruck, einen wirklichen Einblick in diese Szene zu erhalten. Beim Interview mit dem Regisseur und der Hauptdarstellerin nach dem Film wird auch schnell klar warum: die Recherche für den Film war sehr intensiv, so hat sich David Wnendt mit mehreren Frauen aus der rechtsextremen Szene getroffen und sich deren Lebensgeschichte angehört. Diese vielen verschiedenen Geschichten sind in den Film eingeflossen. Speziell ist auch noch, dass für den Film alles neue Musik komponiert wurde, im Stile der “bekannten” Nazi-Lieder.

Ein beeindruckendes Portrait einer Frau und deren Umgebung, die plötzlich beginnt ihre Gesinnung zu hinterfragen, ohne dies laut auszusprechen.

30.09.2011ZFF 2011: Majority (Çogunluk)


Der Debütfilm "Majority" von Seren Yüce war für mich eine grosse Überraschung. Ich bin gar nicht vertraut mit dem türkischen Filmschaffen, dieser Film hat mich auf alle Fälle schwer beeindruckt. Die Machart unterscheidet sich grundsätzlich von den anderen Filmen die ich am Festival gesehen habe. Erzählt wird eine Geschichte mitten aus dem Alltag. Somit hat die Geschichte auch keinen klaren Anfang und kein Ende.

Der Film handelt von Mertkan (Bartu Küçükçaglayan), der noch zu Hause bei seinen Eltern wohnt und bei seinem Vater in einer Baufirma einen Bürojob hat. In seiner Freizeit trifft er sich mit seinen Freunden um Tee zu trinken oder mit dem dicken Auto seinen Vaters durch Istanbul zu fahren. Eines Tages trifft er auf Gül (Esme Madra) und verliebt sich in sie. Das Problem an der Sache ist nur, dass Gül eine Kurdin ist und Mertkans Vater auf keinen Fall will, dass sich sein Sohn mit “solchen Leuten” trifft.

Der Film könnte ebenso gut ein Theaterstück sein: Ziemliche wenige Schauplätze, geballte Emotionen ohne viele Worte. Der Film schafft es stets, die gerade herrschende Stimmung einzufangen, geprägt von einer gewissen Schwere und der Autorität des Vaters. Das Ende ist brillant gemacht, die vermeintlich im Mittelpunkt stehende Liebesgeschichte verkommt zur Nebenhandlung. Ein Film bei dem man auch nach dem Abspann noch einige Minuten auf dem Sitz verharrt.

Sehr auffallend ist auch die Kameraführung. Bei den zum Teil sehr langen Szenen wird die Kamera bewusst an einem Ort belassen, obwohl sich die Protagonisten aus dem Bild bewegen. Dann kommen auch immer wieder gleiche Motive vor wie das Ausziehen der Schuhe und Jacke beim betreten der Wohnung: diese Handlung wird ca. zehnmal gezeigt, immer von einer Perspektive.

Ein stimmungsvolles Kammerspiel, welches eine eindrückliche Geschichte erzählt, die einem nicht einfach so loslässt.