Present Perfect


Picture Gallery
Present Perfect

Filed under: General — Thomas @ 14:35


Easter Weekend

Over here Good Friday is a holiday too. Great ! Kristien's birthday, so spent all day together. Hope she's happy with the very lowcost present she got, to compensate with the high-cost one from our anniversary that she didn't seem pleased with (the present, not the anniversary.)

In the evening we went out to an absolutely wonderful Thai restaurant. Been quite a while since I had such good food.

Over the course of a few days I've seen a whole bunch of movies: Ghost World (Scarlett, yum), 21 Grams (scary, but good), True Romance (again, I love this movie), Liar Liar (I haven't seen a lot of Jim Carrey films, which means I don't get annoyed, so I liked this one), and Highlander (which is still one of my favourites, even if only for sentimental reasons), and 8 Mile. I must avoid catching hadessitis. And tonight we watched Sixteen Candles, which was ok-ish if only for seeing a really young John Cusack :)

For counterbalance Kristien also made me watch about 10 more episodes of Friends. Well, it was her birthday, she got to choose this weekend.

Had a great barbecue on Sunday too for Easter. Invited some friends over, experimented with roasting peppers to great success, and had a great day out on the terrace. I love the weather here, even though it's been flaky of late.


Finally ended up packaging all the bits and pieces for Dave/Dina to make TV/out work again with the new Matrox. That meant rebuilding kernel packages with appropriate patches and options, DirectFB from CVS, and some other stuff.

Played a little with an interesting application from someone that basically rendered a user interface as a filter to MPlayer. It's a big hack, and I'm not sure it's the direction I want to go in eventually, but it does work very well when you don't know how it works. Left me thinking about a lot of things. It's not ideal however because it won't be easy to get output from other applications (say, MAME) into that.

It does make me realize though that it really isn't that easy to get nicely output interlaced video on a TV from a bunch of applications.


Walters asked for new releases in time for Fedora Core 2 Test 3, so I went ahead. Releasing was so much less painful than before. I could easily tweak the spec files to rebuild packages to test, and everything worked out fine. So 0.8.1 of both core and plugins are out the door.


Experimented a little with camserv, which gave me some trouble making packages, but after a few patches it agreed to be put in an rpm. I didn't like what I saw from the code though. Now to start thinking how to split up GStreamer pipelines to implement the same thing.


New office is almost ready. I get thrilled even only from seeing our name in sticky letters by the door :) We'll probably move in sometime next week.


I went looking for two bands I have heard stuff off but haven't found CD's for here yet. I came up with their latest albums. The first band is Mew, a Danish band. Their music is sort of like My Bloody Valentine in sound, but more poppy, and with Sigur Ros-like singing, but in English instead of made-up-language. I saw them live once and really liked them, but never found a CD in a store. I must say it's a really good album (with a good Stina Nordenstam duet on it too) and I'll probably order it. The other one was by the Walkmen, which for lack of inspiration I'll describe as a mix of Interpol and the Strokes :)

Filed under: General — Thomas @ 14:34



We had sort of crappy weather with lots of rain over the last week. More rain than in the three months before last week combined. But this weekend has been absolutely wonderful. We went out skating with a smaller group today and it was incredibly nice. A bit of sea wind, lots of sun, and pure fun. We passed by a square were they were setting up huge cranes for some construction work, and I noticed a van with a cable tied to a traffic light, with the traffic light being bent.

After some cluedo'ing we concluded that the van had reversed on purpose to pull down the traffic light in an angle so the big crane could take the place of the traffic light. I wish I could've taken a picture :) That's Spain for you - if the traffic light's in the way, you just bend it.


Finally made some time to finish up some new packaging. I finally figured out the right kernel magic plus DirectFB magic to make applications share the framebuffer, and have video playback be smooth again, and return to XDirectFB after exiting. It involves cvs of the linux-fusion module and DirectFB in itself at the moment, but it seems to work. Just rebuilding the whole stack of RPM's from the kernel to XDirectFB on just takes a lot of time though. On the plus side, the latest set of improvements to mach just help a huge bunch. Nice to see your software coming together.

Filed under: General — Thomas @ 14:33



Tracking Heisenbugs this week. The first one was that after my return from holidays, GstPlay wasn't able to play back anything anymore. I didn't really look into it much until I really got annoyed and decided to read some logs.

The first problem was missing return value checking in the libraries, giving the Totem user no clue on what is going wrong. I added some error handling for these cases. On bugs like these it's best to work from the outside in, and first fix the bugs at the top of the stack. If you fix the underlying bugs, you forget about the toplevel bug that "the user doesn't know something is wrong".

The actual problem seemed to be osssink failing to negotiate, and after some digging I realized some code was added while I was away to autoprobe the allowed sample rates. The log seemed to indicate that it wasn't able to play back any sample rate, and from that point on everything failed.

I added some error signaling code for this condition. Only after testing again it suddenly worked. This was even more surprising. I wasn't able to reproduce it since, but I'm sure if anyone encounters it they'll at least get a nice error dialog. So now it's a matter of waiting until it pops up again for me.

Does serve as a reminder though that we really need to take more care in the stuff we commit after 0.8.0 - it is impossible to predict how other people's hardware will react to changes we make if they're less than trivial.

The second Heisenbug is one where playing our Matrix test clip and seeking a lot of times can trigger an error where it fails to negotiate. Dolphy and I thought it was a race, but it turns out it really isn't. It's another bug that gets exposed sometimes because of a race. Basically our plugin is somehow failing to cope with a resynchronisation after a seek. It looks like the mad library handles the resync correctly, but we probably mess up emptying the internal buffer somewhere. As a result, each seek, even in audio files, triggers a whole bunch of resynchronisation in a row as it's misreading header information and changing the sample rate quickly. Only in some random cases this fails and throws an error.

Mad documentation is very sparse and our plugin isn't exactly crystal clear either, so I'm spending some time reading the code and adding comments to figure out what exactly could be wrong. It doesn't help that I'm constantly distracted by other things to do as well.

One of those is thinking of the whole media playback/licensing issue. We're starting to see some solutions to that problem but they will all take time.


I really want to use GNOME 2.6 as soon as possible, there are some enhancements that I'd like to use and there is code I want to test and fix. Over the last years I've changed and tweaked my cvs setup a little, and this time I made the last change I wanted to make. Instead of having the cvs checkouts and install locations under my user account, I decided to move it to /home/gnome and create a second test user. There are some things that really don't like having the same process from different locations for the same user at the same time running, so for those things it's better to run your cvs session as a different user.

So basically, I have jhbuild check out to /home/gnome/head/cvs and install to /home/gnome/head/prefix. I'll also be having a 2.6 jhbuild branch, in the same location, but with head changed to 2.6. Maybe I should write a short article on how I organize stuff and why, because a lot of people seem to run in various problems using cvs build tools and the resulting build.

Then I wanted to actually use it without interrupting with my regular X sessions, so I tried to use gdmflexiserver -n again, but it just crashes mysteriously on my Fedora box, bringing down the current X. After some searching and poking, it seems that this is a known bug (127780), and I pulled the fix from CVS and rebuilt the FC1 rpm - if you're experiencing the same problem, get this RPM and try it out.

So now my fake user is happily running GNOME head again, and I can finally fix some nautilus-media bugs again. And I get to recover about 5 GB of accumulated crap from my main user's gnome directories, including some stray patches I was going to still submit.

ssh key authentication

Some people gave me some tips. Apparently keychain is a daemon which allows you to authenticate only once per bootup, not once per session. Also, You don't really need the two files I created on Fedora Core; your X session is already run inside ssh-agent by default, and you can just add ssh-add to gnome-session-properties and you get a nicer, nonblocking dialog for your passphrase. Even better ! Thanks.


Saw a poster this week for a great music festival at the end of May in the middle of Barcelona ! Beside Wilco, PJ Harvey and Elbow, the Pixies are playing ! I'll get to see them before all of my undoubtly jealous Belgian friends :) Too bad I have to be in Belgium the first day of the festival for my dad's thesis/graduation/professor thing, but as long as I can see the Pixies, I'll be fine.

Filed under: General — Thomas @ 14:32



Spun a new tarball yesterday because a translation got added. This also allowed me to try and put in a patch I had received for the thumbnailer but for which I didn't have time or inclination to push it in before going on holidays. Having to respin the tarball anyway made me submit the patch to the release team together with some good arguments on why this patch makes sense. Nice to see that good arguments help make good decisions.

Then I made an RPM to test and got extremely puzzled by the fact that nautilus crashed as soon as I checked a property page on an audio file. After reading a bunch of bonobo, then ORBit code, which scared me senseless, I figured out the right way to run nautilus from gdb (remove nautilus from the session), and then the problem became readily apparent. It was not finding glade files, and it was not doing so because I forgot a "make" command in the spec file. So the actual build was done from %makeinstall, which overrides datadir and friends, causing the wrong - install-time - location for the UI files to be put in the binary.

So now I firsthand experienced the difference between running or not running make before make install.


With the recent break-in on GNOME servers I wanted to do my part in making sure I'm doing things correctly. I got told that using passphraseless ssh keys is worse than doing password-based ssh access, so I started looking into how it ought to be done instead. Some people asked me to let them know if I figured out the right set of things to do, so here it is.

Basically, I did the following:

  • mv .ssh ssh in my homedir
  • generate a completely new ssh-dsa key, with passphrase
  • replace the old public key in authorized_keys on all the servers I use this key on (for this step, ssh -i ssh/id_dsa is useful, since you want to get on the servers using your old key to install your new pubkey)

It is possible to add a passphrase to your current key, but since that doesn't really change the public key it doesn't help at all if someone might have gotten your old private key. So, don't :)

After this, you want to set up your session so that you only get asked for your passphrase once, and ssh-agent takes care of authenticating when you move around. If you run Red Hat/Fedora, you can do the following:

  • run switchdesk, and choose the same type of session you are running. This will generate .Xclients and .Xclients-default
  • edit .Xclients and replace each "exec" instance with "exec ssh-agent". This step makes sure that your session is run under ssh-agent.
  • edit .Xclients-default and add "ssh-add < /dev/null" BEFORE the exec gnome-session line. This step makes sure that before your gnome-session is loaded, a GUI window will pop up to ask you for your passphrase.

Now log out and back in, fill in your passphrase, and try logging into a server where you copied your new public key to. It should just let you in.

If I made an important security boo-boo, let me know please.


There's this incredibly nut roasting store in Barcelona. If you're ever around, go over and buy some almonds or hazel nuts. They taste so much better than the ones you buy anywhere else. I feel an addiction coming up.

Filed under: General — Thomas @ 14:31



Had a good holiday, was good to see some Belgian friends back. It made me realize though that even though I love my new life, I do miss my old friends. There's probably no good solution anyway, since even when going back I'd probably not just have my old friends back. People change.

As for snowboarding, I had a great time. One day our teacher got us to jump off a cliff without us being able to see what was down there. She asked us to trust her and go straight ahead. The first two took a turn right at the edge though, which made her really angry. So I decided to switch off my brain and go straight ahead. A very nice drop of at least five meters awaited me beyond the cliff, which was both scary and very exhilarating at the same time.

We had three days of continuous snow fall and fog. The penultimate day, it started clearing up, so our teacher took us off-piste again. Only, one of the others smashed his knee into a rock, so I stayed with him to make sure he was ok, and at that point the fog set in as quickly as I ever saw it rise. Our teacher urged us to get back to the track, and I followed a trail that took me further down instead of back to the track by accident.

I had spent about ten minutes trying to listen for sounds telling me where to go, and had pretty much resigned myself to making an iglo and waiting for the next day, when I finally heard our teacher yelling back at me, trying to guide me back to the track. Pretty scary moment, all in all :)

We also played the Werewolf game again, which reminded me of how much I like playing games, and how good this particular game really is. Just when you think you have pretty much figured out all the strategies, you get surprised by another twist in how the game evolves. And as soon as the people around you realize some new trick, the rules change since you have to take into account the fact that they now realize new things. You can play this game either completely on an emotional level, or completely on a tactical level, or combine bits, or only look at what happens between start and end of night, and so on.

For people that don't know the game, apparently it's a variant on a game called Mafia. Well recommended.


Getting home was a strange feeling. Skiing holidays always meant going back to Belgium, and now we drove the 800 kilometers back to Barcelona. I was glad to be back home anyway. I also got the card game I ordered in the mail, Chez Geek. Looks like fun, now I need to find people to play it with :)

Didn't touch the laptop during the weekend. We had a good meal, and watched Made afterwards. Vince Vaughn is so magnificently annoying in that movie, you keep wanting to grab him and yell some sense into the guy.

And now, Kristien's parents are over for the weekend. Had some good spaghetti, hope they enjoy themselves out here even though the weather is pretty bad.


Trying to get back into the swing of things. Commited some of the translations that we got submitted, ran into a weird bug where the player wouldn't play anything. Traced it down to return values not being checked causing the program not to say anything about not wanting to do anything. Fixed that so it pops up dialogs; now need to trace back what's actually going wrong underneath.

Started to make libtheora packages for Fedora now that alpha3 is out, and checking how well our support is at this point. Had to package libogg and libvorbis as well, and noticed some oopses in the release of those packages too. Tried checking out their new SVN code setup, but couldn't make sense of the error messages svn threw at me. Will try again later.


Sifted through tons of mail, still going. SPAM in general has come to the point of being completely ridiculous. You know, sometimes people on two sides of a fence just keep inventing workarounds to things the people on the other side do, and at some point it has grown to the point of complete and utter ridiculousness and both sides have lost track of the actual goal.

I mean, seriously, who is going to buy a product spelled v|aGR@ from some guy mailing you with the body containing text like

 Get Your Meds Here programmer eastwood churchwomen abet  turnpike You too can now enjoy the same deep discounts offered to US  residents 

where the text is probably chosen to lower scores on spam filters (churchwomen selling v|aGR@).

This whole spam thing is getting ridiculous - do these completely senseless mails still cause people to buy stuff ? There must be a point where the message is so crippled that it's no longer economical to send them, no ?


At some point in the holiday (there was WIFI access you could pay for in the ski resort, but apparently some holes were still open since I was able to get on the net fairly easily) I read some blog entry by Miguel about media playback.

One point he raised was I would love to see a standardized C-based interface that every one of them exposed and allow people to pick one over the other. Well, I'm fairly sure people don't care and don't want to pick, they just want one that works. The people that care about which framework to pick are the distributors and the people working on said frameworks.

The REAL problem with media playback on Linux is very very simple. People expect to be able to play formats that, because of patent/legal issues, are not as easy to provide code for.

In general, there are two approaches to that problem, and they present a significant split in methodology for distributors. On the one hand, people who install and use Linux themselves are fine with installing some packages providing "questionable" codecs, in whatever way. These people really don't care that xine or mplayer is not distributable as is.

On the other hand, there are large desktop rollouts where people expect stuff to just work, and where distributors can't afford to walk the grey areas. In these cases, licenses need to be bought to allow the framework to legally play back these formats. On top of that, there is code that needs to be written, because the code playing back this format CANNOT be GPL.

So, bottom line: the people running Linux in a corporate desktop rollout will be running different code than the hacker/player community out there. As far as I know, this is about the only area that really causes such a wide chasm between the two sets of Linux users we currently have or are aiming to grab. The only thing I can think of that came close was Ximian's Exchange Connector, and even that is fairly limited in scope. Feel free to correct me with other examples, I haven't thought it through that much yet.

Given this pretty big problem, my personal feeling is that the only right solution is a framework that is pluggable, LGPL, and enforces an architecture of its plugins in such a way that it is possible for companies to write closed plugins, and for the hackers out there to write open but possibly questionable plugins. This is in my opinion the only way the opposing goals of both the hacker community and the corporate desktop rollout can be married, instead of having to wildly diverge codebases due to legal issues.

The other remark that puzzled me in Miguel's log was I for one am not excited about requiring 160 megs of GStreamer code on my machine to essentially play mp3s and CDs. With tarballs for core and plugin coming in at 1.5 and 3 MB, I'm really curious who is going to have to write the remaining 150+ MB of GStreamer code. Miguel, can you give us a ring when you're done with those ? If all you want is mp3 (boo ! Use Ogg !) and cd playback, I can give you a GStreamer binary that does just that in under 300K easily. But I'll be asking you in three years' time if playing mp3's and CD's is really the only thing you want to do in the multimedia arena... There's really not one .avi movie or DVD you want to play ? Not even, say, Antitrust ?

« Previous PageNext Page »