[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 !

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

Buh-Bye

Filed under: General — Thomas @ 08:53

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

Computer Trouble

Filed under: General — Thomas @ 18:26

2004-11-26
18:26

Computers and I have not had much love for each other the last two weeks. Last week our office server's hard disk crashed badly. All sorts of sectors lost, and so on. Luckily I had backups of what mattered. Which reminds me, need to prod some employees to mirror the backups. The hard disk was broken so badly that during attempts at getting data off of it, which was very slow by itself already, after some time the kernel code completely gave up on the drive and it wouldn't even mount it anymore.

The easy solution was to buy a gizmo that seems to be all the rage these days: an IDE-to-USB kit that costs only about 25 euros. You put your drive in it, connect it, then attach it through USB, and presto. It's not quite perfect yet: you still need a power adapter for the external drive to work, and you still need to screw the damn thing open. I'd prefer having had some slide-in solution or whatever. Anyway, this is great news for all my old harddisks lying at home collecting dust.

Of course, it would have been nice if the manual had said that the drive needs to be set to master for it to work. But after fixing that, FC3 just automounts all the partitions when I plug in. Which would have been great except for the crappy partition labels that FC always assigns, but I'll save that pet peeve for another day.

Meanwhile at home, while working on the newish home machine, I went for a drink and when I got back, both that machine and the home server had switched off. A short power outage is very regular here in Spain (I should buy a UPS). Only this time the work computer didn't want to start anymore. Started cursing, dismantling the machine, switching to a different power supply, reseating cards, trying a whole bunch of stuff. With a quickly sinking feeling, I spent two hours trying things until I gave up, packed motherboard and processor into a box and started going through my Spanish dictionary to arm myself in the fight with the technician.

Next morning, go to the store, hand in the motherboard, look at the guy trying to find the problem (there's always this small window of time where there's a possibility you'll end up a total loser because the technician manages to get it running or finds obvious signs of maltreatment on the equipment, causing you stress). See him give up after twenty minutes as well, and he replaces the motherboard for me after showing that it works.

At night, come back home, try to put in the motherboard and notice that the riser bits for the motherboard screws to be screwed into were of course left behind attached to the old broken motherboard. And all the risers I scrapped from other machines were all too high. And of course I remember having a whole cup of crap like this at my old place before moving to Spain. *sigh*.

Anyway, some filing, scrapping, and cheating later, my machine was sort-of-working again. Overheating slightly, but it runs.

As for the softer side, I spent a big chunk of yesterday evening fighting with our applet's ant build. I finally realized that behind my back it was actually using gcj to compile in cases where I wanted to try the Sun compiler. The problem we had with gcj and jikes was that the applet compiled nicely, but didn't actually run on Internet Explorer because it complained
about missing sun.audio methods. I tried to get the build to give me reproducable end-user errors, before trying to tackle
the actual problem.

The actual problem was not that hard after all. You see, Wim had written a stubs directory containing "fake" sun.audio classes, with the methods in it that he uses. I was under the impression that this was a standard trick being used by Java people, since Wim is a respected Java hacker, and that I could trust that part to be correct. But thinking it through and thinking about what I learnt up to now about Java from all of my painful debugging, it was actually possible that the class and method signatures were not entirely correct. And Java looks up methods by looking at the full signature.

So in a nutshell, a signature that you infer from a use of the method in a program can of course be different from the actual signature of that method. Or, different signatures still allow the Java applet to compile. So after luring Wim into decompiling the sun.audio class files, we extracted the correct "fake" implementation, and after that it Just Worked. So the applet now compiles with both Jikes and GCJ and runs on the old 1.1 Java implementation in Internet Explorer.

Of course, Johan brought down our good mood the next morning by showing us the source code for Java that he downloaded from somewhere which obviously contains the correct signatures as well...

Odds and Ends

Filed under: General — Thomas @ 21:15

2004-11-22
21:15

Seems I only make time for roundup posts these days. Need to fix that. Anyway, on with the show.

Ubuntu
My violent love affair is now on hiatus. Last weekend I noticed that my music share, which has UTF-8 file naming, didn't get picked up correctly by Ubuntu. Well, at first I thought something terrible had gone wrong, but luckily it was "just" Ubuntu. After trying to debug and fix it for a few hours with the help of some people, I realized a few things:

  • I don't think that the text console can actually DO UTF-8 correctly. (IIRC this is because of the lack of console font size). This means, I could not enter or see a bunch of UTF-8 characters at the same time, and the console got wonky when they were there in files and stuff.
  • I couldn't figure out how to do this properly in Debian for the graphical desktop either (note to debheads: no, reconfiguring locale and chosing only utf-8 and setting that to default and rebooting didn't work)
  • I have no idea how this works in the underlying parts. All those tools and layers implementing utf-8 for me are alien to me.
  • I don't ever want to go back to a distro that doesn't have full UTF-8 support out of the box.

I'm sure I'll revisit Ubuntu often enough, and follow everything, and I hope someone helps me figure this one silly thing out, but for now our little casa has switched back to Fedora Core 3.

Whilst on the
subject ... There is *some* progress on the Extras front. At the same time, there is an incredibly painful situation developing. It was decided that fedora.us would not get updated for FC3 for now, pending a Fedora Extras launch. While this would be a *great* idea if it meant that Extras would launch, say, this week, nobody realistically knows when it's going to launch. Meanwhile users are dropping fedora.us in droves. I just hope Fedora Extras is not the nail in the coffin of decent packaging...

Kernel module packaging
I'm happy with what I have for this - it was a snap getting all my kernel modules updated for FC3. Each time I update packages, I also look at some new functionality. For the webcam modules, I installed the user-space header, and now I can work on some functionality in say, GStreamer. At work we bought the Logitech Sphere webcam which has motor controls. Now I have a gst-launch pwcsrc ! xvimagesink, and if I press left or right the camera rotates :) Soon in a CVS near you.

Java stuff
Had some pains trying to figure out how to build our java applet nicely using only free tools. The stuff available for FC is confusing. It doesn't help that there is no good "getting started" documentation. It also doesn't help that stuff that is in FC2 is not available in FC3 (like, say, ant). And the whole GNU classpath confusion is confusing too.

Anyways, with some help from Tom Tromey (much appreciated) I made some headway and I could finally compile the applet correctly. After that, I started fixing up methods that are not in Java 1.1 to make the applet work again on Explorer. So I made my first steps into the Java programming world. Don't worry, just visiting, not staying long.

Grand Theft Auto
How sad am I ? I bought GTA San Andreas 3 weeks ago, and I think I have logged about 2 hours of play time in total, if it is that much.

Tango
Kristien and I are taking tango classes with some Argentinan guy. The first two classes were private, and apart from the occasional misunderstanding (I only realised that his ¨sjo" is our "yo" or "I" after the twentieth time he said it) that went great. But in his public class I feel like a complete beginner. He has me dancing with everyone else in the class, including the men. And he has me doing the women steps. Which is quite interesting, but makes me start from scratch. Anyway, I hope Kristien holds on for this bumpy ride so we can get somewhere...

GStreamer
One week forced stop due to freedesktop being cracked. Need to pick up slack tomorrow and do a final prerelease...

Libcolorspace
Wim finally extracted his latest working copy of his colorspace conversion library. It's looking good, structure-wise. Took a look at python bindings for it. Hope to have it released soon so I can use it in my own new pet project and in Flumotion's wizard to do device previewing.

More updates later, after dinner.

« Previous PageNext Page »
picture