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.
Yesterday
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 !
Work
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.
GStreamer
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 ...
Peter
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 :)
Congrats
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...
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...