Present Perfect


Picture Gallery
Present Perfect


Filed under: Music — Thomas @ 18:25


Two concerts this week. Wednesday was dedicated to the delectable
Twilight Singers. In very good form, and they seemed to be enjoying themselves immensely. The concert was in a small room somewhere round the back and upstairs. There were about 400 people there, but packed so tightly we were all dripping with sweat halfway through. Lots of AW t-shirts in the crowd as well. The set list didn't contain too many surprises, but the encore was pretty damn long and got kicked off by an incredibly sweet rendition of ABBA's "Dancing Queen". I swear, this guy just has the perfect knack for taking a song and making the cover into a work of art on its own.

After a good 90 minutes, they left the small stage completely doused in sweat.

And yesterday evening, it was Ed Harcourt's turn. I had seen him last year in Belgium at a regular concert. But for this gig, it seems it was just him and a friend playing trumpets and xylophone.
It was simply amazing. He was funny, inventive, brought a completely new approach to most of his songs with a minimum of instrumentation. He has an amazing voice to begin with, nobody whispers or sighs better than him. He got the small (150 people) audience to participate, teaching them parts of the chorus to sing along to. He brought a girl on stage because he needed backing vocals for one song, and he pulled it off too.

He went from guitar to piano during songs without dropping a single note, and he played for a good 100 minutes without breaking a sweat. About the only drawback was that he didn't play my favourite. He radiated energy all night long. It was the same sort of vibe and performance I expect Jeff Buckley was giving at Sin-é. Truly a privilege to have been a part of it. And completely different from his normal band shows, which are very good as well, but more typical in some way. This gig was quite special.

again with the tardiness

Filed under: General — Thomas @ 00:21


I seem to be unable to get back into the swing of it. Another roundup ...

Last week

Had my sister over for half of the week. Good to see her again, but some unhappy news was shared as well.

Thursday evening, my favourite happy family arrived. Kristien and I had mentally prepared for the onslaught launched by the cute little gremlin. But you can never fully prepare for this sort of thing :) It was great to have all of them over, and this time there was no emotional distance or disconnection, so yay ! Except that there was a little bit of lethargy present because of the lack of sleep - having a toddler bash in your door before the sun is up is hard to recover from...

Jeroen gave us both series of the Office - triple yay for Jeroen ! I reciprocated by getting him Death Cab For Cutie's Photo Album and Bjork's Homogenic, incidentally containing a shared track. Jeroen and I also managed to go shopping and get me some shoes on the first try (see, it's not my fault, Kristien !) and a present for my baby.

Friday evening, we had the company Christmas dinner. Excellent food, nice place, nice party, not as many drunkards as last year, which could be seen as positive. The only drawback was that there was a concert I had wanted to have gone to by Six. By Seven which I haven't seen in a long while. But, details.

During the weekend we did all sorts of activities we otherwise never get round to, like going to the aquarium to see sharks and stuff, or going to the zoo, to see, well, sharks and stuff (or, rather, dolphins).

It is amazing to see exactly what it means to have a kid. Life's partitioned in blocks of roughly four hours. Block one starts around eight and consists of having an active kid. Block two starts around 12 and involves having the kid take a nap and having a little bit of time for yourself, but you never know how much. Then block 3, a possibly unhappy kid, you never know. And block four starts around eight and sees you back having some time for yourself.

Luckily these quiet moments made Jeroen get me back on track with my GTA San Andreas gaming. A testbook case of living vicariously through others.

After three days of getting up early, I got up early to drive our little family to the airport and say our goodbyes. And then it was back to work.

Jeroen, thanks for dropping by. Oh, and find the double entry (hint: they broke up), remove it, and replace it with an Afghan Whigs song. It's only fair.


Went to the Razzmatazz yesterday for a concert by fellow hometown folk and ex-highschool collagues Soulwax. If that name makes you go "who the hell are they", maybe you might have heard of two DJ's going by the name of 2ManyDJ's. And sadly that's how Spain seems to know them as well, as Soulwax had the distinct honor of opening up for the two bro's DJ incarnation. Hence, a short one hour concert, which was fine but a bit lacking. Some of the songs were great, some of the songs on the new album are a lot better live (E Talking was superb), and some are just plain bland. Also, some of their older songs sounded really lifeless. Still, fun anyway to see the natives out on a tour.

The DJ set afterwards sucked - none of the typical humor and quirky records, just Plain Old Boring Dance/Techno/Electro/Wave/... mixing as done by Just About Any Other DJ.

Looking forward to next week's concerts - Twilight Singers on wednesday and Ed Harcourt on thursday, yay !


is going incredibly well. I've finally started on abstracting away some of the stuff that's currently in there but not in a very nice way. I'm learning all sorts of good stuff about how to properly do object-oriented coding. Programming in Python is a lot like sculpting with clay or plasticine - it's so easy to massage around code and refactor and test and try out and clean up. Doing this in C would be just plain painful. In Python, remote methods are being called all over, sometimes four levels deep, and everything Just Works.

A UI node in a view on a component inside the GUI of the admin client on machine A can have a slider moved, triggering a remote method that goes to the manager and flies through its objects, on machine B, then gets sent to the actual component on machine C, which delivers the remote method to the effect that was being controlled, which processes the update. And then, a remote method goes back to the manager to notify all other admin clients of this change, and UI's get updated everywhere.

By itself this might not be that impressive, though it's already a good practical implementation of the abstraction ideas I've picked up over the last months.
It's even more impressive if you know how the code underneath works, which I'll save for a separate post.


After posting his design ideas to the list last week, Wim started coding and implementing his ideas. It's quite impressive to see how much already works the way his design promises after so little time of actual coding. On the other hand, it seems like there's some sort of rift coming up in the GStreamer camp in the sense that some people want to advocate a model that assumes non-blocking API from underlying libraries, and not use threads in the core library, while others want to use the libraries as they are (which most of the time is blocking), and have threads in the core but in a more controlled, designed and regulated way. Sadly the discussion on Wim's proposal mostly revolved around this issue.

Personally, my feelings on the matter go beyond the technical problem. Any free software project thrives or suffers because of the people that work on it.
There are various practical constellations in which teams are organized and projects can be succesful. It is for example possible for a project to be lead and developed by one or two very active developers. They spend their time coding, they don't feel the need to document, and this typically works for as long as they are motivated enough to work on it. A variation on that theme is a project where a few people each have their own area on the project and typically don't get in each other's way.

Lots of projects seem to work well this way - GTK+ comes to mind, or Xine, or nautilus, and lots of others. GStreamer has had its share of runs like this too. But sometimes this development model fails spectacularly. After MPlayer's maintainer left, the first few weeks their tree was completely unstable, and this at a time where they were doing prereleases for their 1.0 release. (The memory of a tarball called MPlayer-1.0pre3try2.tar.gz still makes me laugh). And isn't E17 supposed to come out sometime soon as well ?

Other projects seem to manage to involve lots of people in some organized way. The key thing here is that somehow they manage to get themselves organized in some way to address the scale issue. Python seems to have all sorts of PEPs for every feature proposed, and lots of discussion. The kernel seems to have a pretty active mailing list, lots of discussion, and regular gettogethers between people working on it. I'm sure it also helps a lot that some of these people happen to share workplaces and can exchange ideas constantly. Or the project has a nice organisation behind it with lots of non-coder people active. GNOME has release teams, a board, bug triagers, and so on. Lots of discussion is also being done on mailing lists, and people regularly post design proposals for each other to comment on.

The thing is, GStreamer is mostly stuck in the first model, and while the project can evolve that way, it is at the mercy of two things: the motivation/energy/... of the active developers, and the turnover in those active developers. If one goes away and another takes it place, in the big picture you see a whole bunch of changes into another direction that is not necessarily better or worse, but takes time and resources. For whatever reason, - be it time, motivation, ... - active developers on the first type of project do not tend to document or design too much what they are going to do, or have done, or ... It is mostly left as an exercise to the reader to figure out the code. While it is probably true that anyone who can pass this rite of passage will be a good future contributor, in practice you don't end up getting a lot of contributors that way, leaving you with only the active developers. If all of them go away, because of lack of motivation, other priorities, whatever, the project is effectively stopped in its tracks. There is no one else who can easily pick it up since the implicit design, if there is any, needs to be fished out of the code, separating what was intended from the bugs, and this is a lengthy and painful process.

What am I getting at ? My concern is on the project level - I prefer a technical decision to be made on maintainability, design documentation, transparency, and so on. It doesn't even have to be the technically best solution. It's just that there needs to be a basic level of quality (design, testing, extensibility, process) which makes it achievable for a project to outlive today's group of active developers on the project. Especially when that group is very small, this is very likely to happen at some point in the project's timeline.

Anyway, I need to reread some of the replies in our mailing list's thread, because I had some comments on them. But still, my biggest concern is to ensure the project's long-term growth.

On to some more personal matters ...


You strung me around making fun of me using a juicy piece of gossip so I'm allowed to poke back at your entry.

First of all, the reason you were singing the song wrong is because Jeremy and I had sung the song wrong all the time. So it's not your sick mind that invented the lyric, it's ours. You're an altar boy, there is no sick mind in your body. All your sickness are belong to us, in fact.
Second, you didn't find out that you were wrong about it the day before your entry, you found out at Jeremy's bachelor party where we played the song and gave him a quiz. Your mind is like an emmenthal, dear friend :)


to Wiebe ! Somebody from SpecOps at home send me a picture sometime soon ! And Wiebe, order those tickets, pack it all up in a bag and get your butt over here...


Filed under: General — Thomas @ 08:53


Johan's last day yesterday. They say it's hard to get close to a Scandinavian and I'm inclined to believe that now. I know he will be in good hands at his next location so I'm happy for him. It is going to be weird though, he was the first to join us on our little escapade. Saying goodbye is strange when you know you'll see the other person again very soon though :)

I was a bit anxious to see what would happen now that I'd have to figure out stuff on my own, server-wise. I had started on some of the work I had asked him to design to try a different approach. At first I found some things that didn't work exactly as I thought they would, and it was frustrating to not be able to roll my chair to the right and ask about it. On the other hand, when going through the whole stack, it wasn't that incredibly hard to figure out where the bugs were and fix them in all the right places. The server is getting quite complicated, but still elegant in design, which is nice. And the bugs were all fairly easily localised and fixed, and just went to show that all parts of your code should be covered in testing.

So after some hours, I was connecting with my admin interface, which got its widget code from the manager, and which showed me the options to change some component on another machine at runtime, and I got notified back. I spent a good ten minutes switching between the snow and SMPTE patterns on the video test component ...

Last week

Some random bits from last week. Treated myself to an early Christmas present - a CD, "Mew" by Frengers (go pick it up), and the three big Knuth books. Lovely, a hundred page of mathematics as an introduction ... I've been Knuthing myself to sleep ever since.

Kristien and I are now going through Dawson's Creek from the top. I hope Michelle Williams plays in some decent movies soon.

I had finally gotten around to get a library card for the library with the big stack of CD's. I celebrated my inauguration by being a week late in bringing stuff back, but apparently that didn't work. I handed in my discs, and sort of lingered at the desk, and the woman seemed confused about what more I wanted. Drats, no punishment for me. The bad parts are that a) they don't have that much stuff, b) most of it is classical, c) you can only take 3 discs, d) you can only have them for a week. But anyway, better than nothing.

This weekend Kristien decided she needed to buy a printer. Remembered there was a discount sale for Epson laserprinters at one of the computer stores, but couldn't remember the model. Went to the store, called up Peter to look up the number and compatibility info, got the news that it should "sort-of-work". Tried to buy the thing. The woman at the counter said she couldn't accept credit card because we need either a passport or a residence permit to prove our identity. I told her that it was the sixth time I was in that store and that I had always paid showing my driver's license. She said that that was not possible. Uh, ok. "Well, that woman here standing next to you sold me a bunch of DVD's yesterday". No, that was still not possible. Spanish quixoticism.

Anyway, some discussion, printer bagged, went home, figured out it needed some extra package installed with some binaries as a driver (even though my FC3 install had the printer in the list), installed it, tried it, worked fine. The CUPS system really could have given a better error message, because there was a binary missing that it was executing, but hey, pretty good all in all.

Kristien's boss here just delivered a son to the world. As far as newborns go he was pretty cute and they were happy.

Three weeks of owning GTA San Andreas, only three game hours logged. Something's wrong.

« Previous Page