Jannis Pohlmann Personal website

Jannis

I am an open source enthusiast, student and musician from Lübeck, Germany. In my free time I enjoy hacking on Xfce and Lunar Linux. I've been a member of both teams since about 2005. Besides developing software, I love to listen to and play music (Guitar, Bass and Drums) and hang out with friends.

Contact me via jannis@xfce.org. My public PGP key is 0x354AFBA6. You can download it from here.

My CV is also available for download.

Navigation

Thursday, December 8 2011

Looking for new maintainers for some of my projects

I am looking for a new maintainer for some of the open source projects I started over the last couple of years. Due to taking a full-time position as a software engineer, I will have less spare time to hack in the near future than I had while being a student. I will continue contributing to Xfce but I would like to focus on core development (thunar, tumbler, garcon etc.). As a consequence, I am looking for people interested in maintaining the following projects:

Most of these are smaller projects but some of them (like thunar-media-tags-plugin and xfce4-mixer) have many users. xfce4-mixer is particularly interesting, I think. It’s code base is of medium size and it lacks integration with notification daemons, key bindings for muting and altering the volume of a selected channel. Also, the per-channel widgets could be arranged in better ways than they are right now. PulseAudio support has been requested several times but that is an entirely different story. xfce4-mixer is mainly intended as a mixer for GStreamer. A PulseAudio mixer would better be written from scratch. But if anyone is up for the task - why not!

If you are interested in maintaining any of the above (yes, you are free to rename jptemplate to something that does not carry my initials!), please let me know in a comment or send a mail to xfce4-dev@xfce.org! 

(You will need knowledge of C, GLib and GTK+ for the Xfce projects and VIM script for jptemplate. But in particular panel plugins are really simple, so the code base should be easy to understand even for a GTK+ newbie who is willing to read API manuals.)

Friday, December 2 2011

Joining Codethink

I already hinted at the end of my studies in earlier posts related to my thesis. After submitting that thesis I moved 400km south of Lübeck to enjoy a few quiet weeks, record music and work on Xfce. However, I only stayed there for two weeks before I was set to fly over to Manchester, UK. The reason: I will be joining Codethink in January!

Having spent the last three weeks in and around their office, the city of Manchester and one of its suburbs, I can confidently say that this was a great decision. Codethink is a social and diverse company with a strong background in open source, with bright people, and a nice overall atmosphere and attitude. We had plenty of enjoyable evenings, chats, not to forget the brilliant food. I managed to feel at home already, but sadly, I had to leave again yesterday.

Like many people in Codethink, Manchester appears to be a city that likes music, a place where almost everyone is either a die-hard music fan or even a musician. I found a room right in the hart of the northern quarter at 10 minutes walking distance to the office, surrounded by record shops, live music venues and pubs. Rehearsal spaces are expensive but nearby. I could list various additional reasons for why I’m really happy. This simply is a good move.

About three years ago I was about to cancel my studies and look for a job. In the end I decided to carry on. Last week my Diplom (the German equivalent of an MSc) certificate arrived. Despite many doubts throughout these years, I managed to graduate with honors. It’s funny that this grade will have no impact on anything and is only really useful for proving to myself that I can pull through if I really want to. But then again, I had a great and chilled time being a student. So in retrospective, I guess I only ever had doubts because I was impatient and eager to make a difference in what was assumed to be the “real world”. 

Now, with Codethink, I can.

Tuesday, November 22 2011

Find out the client of an Xorg UNIX socket

Today, I needed to find out why an X client did not receive any input events. Or to put it differently: to find out which process the X server was sending events to.

Running an strace on the X server process reveils the socket the X server writes X events to. Assuming that the file descriptor of this socket is 38, the following provides a way to find out which client will receive the events:

ls -la /proc/`pidof Xorg`/fd/38

This will print something like:

lrwx------ 1 root root 64 Nov 22 04:13 /proc/306/fd/38 -> socket:[4036]

So the UNIX socket is 4036. This is only the X server side of it. The following shell command will yield the complete socket pair:

grep 4036 /proc/net/unix -A1

The output of this is:

eff24600: 00000003 00000000 00000000 0001 03  4036 @/tmp/.X11-unix/X0
eff24000: 00000003 00000000 00000000 0001 03  5048

I think /proc/net/unix has all UNIX socket connection pairs in adjacent lines, so in this case the line below 4036 holds the client socket, which is 5048. Note that you may have to use -B1 instead of -A1 as the order of sockets may be different. Searching for the process that uses 5048, you can do this:

ls -l /proc/*/fd/* 2>&1 /dev/null | grep 5048

The output in this case could be something like this:

lrwx------ 1 root root   64 Nov 22 04:12 /proc/663/fd/36 -> socket:[5048]

This means that the X events are sent to the client with PID 663 with the corresponding file descriptor being 36. This can then be used in an strace on PID 663 to find out more about the reception of events etc.

Fun.

Monday, October 17 2011

An introduction to drawing graphs with TikZ/PGF, Part 3

This post is the last in a series of articles about PGF/TikZ and its new graph drawing features on which I am working as part of my graduate thesis.

In the previous two posts I gave an introduction to graph drawing, the graph syntax of TikZ and its Lua-based graph drawing engine that can be used to implement automatic graph drawing algorithms and use them to compute layouts for graphs that are to be rendered with TikZ.

For this post, my intention was to demonstrate the algorithms that I implemented as part of my thesis. These algorithms work well with many graphs, including grids, symmetric graphs, flow charts, flow networks and state machines or automata.

However, I decided to just point to the final version of my thesis here. It documents the algorithms extensively and gives many examples of how to use and tweak them. I think the thesis holds information much more useful to users and graph drawing researchers than what I’d be able to put in a regular blog post.

So, here is the official link: 

http://www.tcs.uni-luebeck.de/downloads/papers/2011/2011-configurable-graph-drawing-algorithms-jannis-pohlmann.pdf

If you find mistakes, please keep them to yourself. It still has to be marked by the two reviewers, so I don’t want to know what I did wrong yet. ;)

Wednesday, September 28 2011

On MeeGo

Whatever MeeGo was, it never made it into the open source mainstream, which I consider to consist of projects actively worked on by volunteers and companies alike, and didn’t manage to become an project attractive enough for individual open source enthusiasts not driven by money to make substantial contributions.

There is enough room to speculate over the reasons why this is. My personal take is that MeeGo failed to be a successful open source project because the corporate commitment to the open source idea was not strong enough and expectations were too high right from the start. 

Open source projects start with an idea and evolve into a proper product over time. Sometimes they are developed incrementally, sometimes it happens that big parts of them are replaced all at once. The idea behind an open source project may be huge but they all start off with baby steps. MeeGo, however, wasn’t supposed to. The idea behind MeeGo was big, and due to market pressure it was expected to become complete and successful quickly. It occurs to me that the idea was to sort of guarantee success by providing the project with professional, corporate governance. 

I think everyone who started working on open source as a hobby knows that this is something a lot of hackers are not comfortable with. An open source project under corporate leadership may easily suffer from top-down decisions that give developers the feeling of working in a restrictive environment rather than a playful one. I’m not surprised by the fact that the only people I know ever contributed to MeeGo worked either for/with Intel or Nokia.

It isn’t the technologies, tools or frameworks that are reason for the failure of MeeGo. KDE and GNOME are large and successful projects based on Qt, GTK+, Clutter, D-Bus-based desktop middleware etc. What has lead to failure in my eyes—the eyes of an outsider, open source developer and potential user—is that the dynamic nature of open source projects conflicted with corporate expectations and hopes for a quick success they needed so badly. Add to that the pressure on Nokia, the corporate culture clash of two global information technology companies and the fast pacing world of mobile devices and interfaces, and you have a pretty explosive mixture.

Personally, I won’t place my bets on Tizen. I can only imagine how frustrated and disappointed everyone who tried to get involved may be today, even those who contributed to MeeGo as part of their work for Intel, Nokia or one of the many smaller companies that make up the corporate part of the open source ecosystem. It is also frustrating for me as a developer aiming for a job in open source and desktop/mobile/UI technologies.

I guess the mobile open source platform we are all hoping for will be there some day. But it will only appear slowly, driven by the efforts of enthusiastic individuals with big ideas, realistic expectations and sound knowledge of the pace and dynamics with which open source projects grow and mature. This of course relies on open hardware and I don’t know enough about the manufacturing industry to predict the availability of open, hackable devices in the near future.

In the meantime, the best we can do as open source software developers is improve the base OS and innovate in desktop/mobile/UI technologies by experimenting with new ideas and extending existing frameworks. I’ll help where I can.