that is all folks

this is a pretty big day for me as i am handing in my master thesis today. i was working on it almost, quite, nearly and almost a year (actually a few months less, but you should got this by now). with this final act of my computer science and psychology studies i am also finally leaving those nice student rebates and student parties behind. ghosh, what nice memories i do have here. shoddy cafeteria meals, always short on money, piles of work and bad weather when you got some free time. just some of the reasons why the studies are the best years of your life, don't you agree? ;)

but i know, my personal life isn't as interesting as this: i will present parts of my thesis during this year's guadec. but more on that later. for now just this: it will be legend - wait for it - ary!

my thesis has the title "typical development processes of free and open source software projects" and aims to provide a primary scrutiny into the development processes and project management strategies of free and open source software projects. several free and open source software projects were analyzed systematically in order to identify concertedly models and processes. gnome was of course under these projects. the results were very interesting and i will try to present them to you in near future, dear reader.

until the final evaluation however i am not allowed to publish the thesis. but my professor and i are looking for ways to publish the results in near future. so in one way or another you will shortly be able to skim through my work. if you are really interested in the topic, just drop me a note, and i will arrange a "proofread" copy for you, just for you.

with a master of science in my pocket i am looking for a great place to bring in my talents and skills. i am already in contact with some awesome companies and organizations, but if you do have some offers about or including free and open source software, project management or innovative research and products, i would love to talk to you!

gnome release schedule

as i needed a graphical representation for my master thesis i did attempt a shameful rip-off of my friend andreas' beautiful contemporary piece of art.

and to quote vincent

I like it. It’s pure art, you know. Not understandable.

source

creating beautiful graphics with pgfplots

during the last weeks a lot of people asked me what tools i would use to create graphics for my master thesis. alrighty, i will show you my toolset. to be honest, i am a bit of a design fetishist and therefore i had the following requirements

  • consistent font type and size for text and graphics
  • high quality, scalable function and data plots, which can be exported to pdf
  • shareable configurations and settings between the figures

this basically restricted by options to the awesome pgfplots library, which is built around the even greater tikz library. i won't go into implementation detail here, as you can find more samples and a very good and detailed documentation in the pgfplots manual. anyway, these are three of my latest graphics i needed for my thesis. for a concrete example i filled them with data from the cheese git repository.

the first graphic shows the commit activity of the cheese project from it's first commit until present time. you can certainly see all the hectic during several gnome releases.

the code to produce this plot is the following. i choose to have one tex file for each graphic and convert it to pdf. this allows me to publish the graphics elsewhere too and is generally quite comfortable when using a revision control system such as git. there is of course also the possibility to use tikz external, which generates a pdf file for each figure inside a document on the fly but you might run out of tex memory if your plots get too big or if you have several plots in one document.

basically i just give pgfplots some points in a coordinate system and let it interpolate the remaining ones. using the dateplot extension, i can use plain dates instead of numbers and pgfplots will convert them automatically.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\definecolor{scarletred1}{rgb}{0.937,0.161,0.161}
\pgfplotsset{width=12cm,compat=newest}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  date coordinates in=x,
  x tick label style={/pgf/number format/1000 sep=},
  xticklabel={\year},
  ylabel=Commits,
  xlabel=Time,
  enlargelimits=0.10,
  legend columns=2,
]
\addplot[smooth, no markers, color=skyblue1]
  table [x=date, y index=1] {commits_by_month.dat};
\addplot[smooth, dashed, no markers, color=scarletred1]
  table [x=date, y index=1] {commits_by_month_average.dat};
% both data files are in the following format:
% date commits
% 2011-07-01 77
% 2011-08-01 72
% 2011-09-01 148
% [...]
\legend{Commits, Average}
\end{axis}
\end{tikzpicture}
\end{document}

in my second example i wanted to see at what day/time combination most commits occur. this can simply tell if the development of a project is driven more by a company or by individuals in their spare time. as you can see, most of the cheese development occurs after work or on weekends.

to produce this graphic, i misused the scatterplot extension to draw points with a calculated size. you can find the related code inside the pre and post marker code section. using symbolic coords i can use strings as coordinates on the y axis.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\pgfplotsset{width=12cm,compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  point meta=explicit,
  xmin=-1,
  xmax=24,
  xlabel=Hours,
  scatter/@pre marker code/.code={%
    \pgfmathparse{\pgfplotspointmetatransformed/1000*50+50}%
    \let\opacity=\pgfmathresult
    \pgfmathparse{\pgfplotspointmetatransformed/1000*7.5+1}%
    \def\markopts{mark=*, color=skyblue1!\opacity,%
    fill=skyblue1!\opacity, mark size=\pgfmathresult}%
    \expandafter\scope\expandafter[\markopts]
  },
  scatter/@post marker code/.code={\endscope},
  symbolic y coords={Sunday,Saturday,Friday,Thursday,Wednesday,Tuesday,Monday},
  xtick = {0,...,23},
  x=0.59cm,
  y=0.59cm,
]
\addplot[only marks,scatter]
  table[x index=0, y index=1, meta index=2] {punchcard.dat};
% data files are in the following format:
% hour day commits
% 00 Monday 14
% 00 Tuesday 42
% 00 Wednesday 14
% 00 Thursday 16
% 00 Friday 12
% 00 Saturday 18
% 00 Sunday 11
% 01 Monday 21
% 01 Tuesday 9
% 01 Wednesday 5
% [...]
\end{axis}
\end{tikzpicture}
\end{document}

last but not least i am interested how involved an author is. it is quite easy to tell the role of a developer by looking at this graphic: does he code more or is he more into project management? when did he enter the project, when did he leave? this are the top six contributors to the cheese project.

the code is quite similar to the first figure, except that i am reading multiple columns out of the same file.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{butter1}{rgb}{0.988,0.914,0.310}
\definecolor{chocolate1}{rgb}{0.914,0.725,0.431}
\definecolor{chameleon1}{rgb}{0.541,0.886,0.204}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\definecolor{plum1}{rgb}{0.678,0.498,0.659}
\definecolor{scarletred1}{rgb}{0.937,0.161,0.161}
\pgfplotsset{width=12cm,compat=newest}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  date coordinates in=x,
  x tick label style={/pgf/number format/1000 sep=},
  xticklabel={\year},
  ylabel=Commits,
  xlabel=Time,
  ymin=0,
  legend columns=3,
]
\addplot[smooth, color=skyblue1]
  table [x=date, y index=1] {commits_by_author.dat};
\addplot[smooth, color=chameleon1]
  table [x=date, y index=2] {commits_by_author.dat};
\addplot[smooth, color=butter1]
  table [x=date, y index=3] {commits_by_author.dat};
\addplot[smooth, color=chocolate1]
  table [x=date, y index=4] {commits_by_author.dat};
\addplot[smooth, color=plum1]
  table [x=date, y index=5] {commits_by_author.dat};
\addplot[smooth, color=scarletred1]
  table [x=date, y index=6] {commits_by_author.dat};
% data files are in the following format:
% hour day commits
% date committer1 committer2 committer3 committer4 committer5 committer6
% 2010-06-01 8 0 34 0 0 0
% 2010-07-01 46 8 52 0 0 0
% 2010-08-01 26 3 18 0 0 0
% [...]
\legend{Daniel G. Siegel, Filippo Argiolas,
  Yuvaraj Pandian T, Jaap A. Haitsma,
  Bastien Nocera, David King}
\end{axis}
\end{tikzpicture}
\end{document}

that's it for now! if you need to produce high quality graphics for your next thesis, paper or just for fun, take the time to have a look at pgfplots. the results are worth it!

return of the travelling gnome

the travelling gnome was gone for a very long time and some already expected the worst. but there are some fantastic news, ladies and gents, the beloved travelling gnome is back!

kudos to eric for discovering his hideout!

missing in action

if you happened to see vincent's talk at the desktop summit yesterday, you certainly know the story of the travelling gnome. for those who haven't, let me sum it up.

some very long time ago, right before the 2.22 release of gnome, i wanted to do some screenshots to show the great new features of cheese we had at that time. therefore i asked how to take screenshots of cheese and while getting some more or less useful responses i did not find a nice way to show off cheese. a few days later though i got a parcel by vincent, with a great present in it. have a look at my previous post to read more about it.

after the release i sent the travelling gnome to andré, a good friend and great guy along with a piece of good smelling cheese and some instructions:

  1. add a photo of the travelling gnome and yourself to https://live.gnome.org/TravellingGnome
  2. get a present and put it into a box along with the travelling gnome and the instructions
  3. send it to your favourite gnome hacker

voilá, the travelling gnome was born! it then travelled to cosimo in italy and onwards. if you want to check the route it has taken so far, have a look at https://live.gnome.org/TravellingGnome.

and now comes the sad part of the story: it has gone missing, vanished, unaccounted, lost, gone and doomed. i already asked around, but it seems that nobody knows the current location of the travelling gnome. so please, if you know where to find, please send it to your favourite hacker along with the instructions above.

thanks!