[lang]

Present Perfect

Personal
Projects
Packages
Patches
Presents
Linux

Picture Gallery
Present Perfect

Please …

Filed under: General — Thomas @ 19:07

2004-12-17
19:07

... do not try to reach me this weekend. I'll be ON A BOARD IN THE SNOW. Big thanks to my lovely girlfriend !

Flumotion release

Filed under: Fluendo,Releases — Thomas @ 18:45

18:45

Rolling both a GStreamer prerelease and a Flumotion release.

I'm pretty damn happy with the new Flumotion release - it has some very nice improvements. The important one is the bundling of UI code which gets sent over the network, so that the admin client really is just a light shell that works everywhere.

We already has a basic concept of sending over UI, but now it's been cleaned up and it works a lot better.

Basically, the manager on a machine has a registry that tells it how a bunch of files in the local tree are to be "partitioned" into a set of "bundles". Each bundle is just a group of files that belong together (like, say, icons, glade files, and PyGTK code for changing colorbalance). Bundles can depend on each other (since, say, the tv card UI code depends on the colorbalance ui code). The union of all bundles represents the whole set of files that can be sent over the network.

The interesting part is that when the UI wants to show a page for a component, it asks the manager "I want to do this import. Give me everything I need". The manager replies with the list of bundle names it needs, as well as md5sums for the .zip files for these bundles. The admin checks locally for which zip files it doesn't have yet (or are outdated -hence the md5sum), and then requests all bundles it needs.

When it has them, it extracts them locally in a cache directory, *in a unique dir based on bundle name and md5sum*. Then some python magic is done so that you can import from the bundle namespace directly. So even if a file is extracted locally as "bttv-ui/a589fec...f3f/flumotion/component/producers/bttv/admin_gtk.py", you can just run "import flumotion.component.producers.bttv.admin_gtk" and it works.

Now, why all this caching ? Because you can run the same admin client against different versions of managers. So instead of having to download all code each time, you just cache all downloaded instances, and regularly clean up old ones.

One of the nice things here is that just clicking on the component ui again automatically runs the newest code. Very handy for testing.

Anyway, new flumotion came out today. Give it a spin.

Mataro

Filed under: Hacking — Thomas @ 18:38

18:38

Last Friday we went to Mataro to the Canonical conference for the Sound BOF. Nice to see some people again, like Jeff and Thom, or see people in the flesh for the first time, like Daniel. In the evening, got introduced to the cult of Maui, and managed to, as a virgin, finish twice in the first game... I also had two new rules I wanted to introduce, but couldn't figure out how I was supposed to do that. Sadly at the end I found out that my finishing was the key. I'd probably be given a card for explaining the rules here, but I'd bad-call it because we're not in game and if you are a virgin yourself you have no idea what I just said in the first place anyway.

On Saturday, joined in on the PyGTK BOF. Even for a noob like me it was pretty interesting. Nice to see what other people are working on. Fun to see Kiko in action too - all the drive of a Miguel, taking the BOF into his hands and making it actually proceed better than the average BOF. He's done some interesting work with PyGK in his company, I can see why Johan wants to work there :)

The Launchpad and Soyuz stuff that they demoed at the conference was interesting too. If they can pull it off, it would be a nice tool for someone like me working on Fedora packaging as well. Which is more sharing and goodie-two-shoed than any other distro company out there.

I would have liked to go on Sunday as well, but I was dead tired and I had tons of housekeeping I wanted to do. And anyway, I'm still a PyGTK newbie.

Razzmatazz

Filed under: Music — Thomas @ 18:25

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

2004-12-10
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.

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...

« Previous PageNext Page »
picture