Contact me

My primary e-mail address is "my firstname" at "my lastname" dot se. Please do not post this address in clear text on the web and do not CC me to this address when posting to a mailing list. To CC me, use the address that I use when I post to that mailing list (something at or use u1 at if you can't find a post by me on the mailing list.

I am using a lot of different e-mail addresses to avoid being spammed to death on my primary mail address. These take the form of an id and the domain Almost all the ids currently reach me, but I have started rejecting mail on some of them to avoid spammers. I also use the e-mail address "my firstname" dot "my lastname" at


These are the projects that I am particularly interested in and in some cases also involved in.


An erlang framework for web development. I have built a skeleton for nitrogen applications and I have also done a simple integration with jquery mobile. repository, sample application.


I have a KNX system in our house that controls all the lighting, power outlets, blinds etc. I have written a system in Erlang and Nitrogen that interfaces with KNX. The system is centralized: every time someone presses a light-switch, a signal is sent to my erlang server and the server decides what to do. This means that the system can be reprogrammed from the web interface without using ETS. It also means that I can use very simple KNX components and implement complex logic and timers in erlang instead. This code is not open-source.


I have written a number of tools using couchdb with javascript frontends. It is a very powerful database. I have used it to track commits to a set of git repositories to track commits as they move between the repositories. I developed the code at work and it is very specific to how we use git.


I use git a lot, both for personal projects and at work. I have performed a large migration from CVS to git based on cvs2svn at work. We have divided our source code into many different git repositories (62 at last count) and we branch them all at once to create development branches. I have built many tools around git to help the developers to handle operations that need to be performed in all repositories at once and also keep track of what happens in our development branches. The code is not open-source.

Provides TV-listings in xmltv-format for Swedish TV-channels. I originally wrote all the backend code that translates data from the TV-companies into xmltv-format. I worked on the project for six years, but I have now left the project and others have taken over after me.

The code for the backend is available as the NonameTV project, my git repository.


The xmltv-project produces grabbers that download TV-listings in a well-defined xml-format for a number of different countries. I have written a grabber that downloads data from


A perl-module that I have written. It implements a HTTP-cache on disk similar to the cache in a web-browser and uses If-Modified-Since and ETag to see if a page has changed. CPAN, repository