Present Perfect


Picture Gallery
Present Perfect


Filed under: General — Thomas @ 3:29 pm

3:29 pm

Didn’t post much of late – various factors conspiring against me, the biggest one being me.
Being poked repeatedly to do something about it, so here goes. A quick rundown of the essentials, possibly followed by separate posts.


Stuff has happened. I became a godfather. His name is Arthur, a solid Flemish name. I’m going over next week to see him for the first time. No pictures online yet, the parents are old-school :)

Congratulations to Jeroen and Annelies – they had their second son, Finn. The pictures look good, but I’m not sharing on account of the father’s paranoia towards bad people.

Sad when friends break up – my thoughts are with you, you know who you are.

Lunya had her ovaries removed. She was very well-behaved when she had the cone on her head – maybe we should keep it around for when she’s too rough.

After my lamenting my own ignorance of fresh music, I found a bunch of new bands I like. I’m not yet sure if I should be sad that I’m getting most of my musical recommendations from this brat, but what can I say, the lad knows what’s good.

Among other bands, I’ve picked up on Art Brut, the Departure, the Editors, Go Team. I’ve enjoyed new albums by Greg Dulli, Elbow (simply astounding), Sigur Ros, Nada Surf (to a lesser extent), dEUS (Belgium’s back).

In the mean time, one of my favourites, Six By Seven, has split up. Bastards.

Lots of concerts to look forward to over the next few weeks – Bloc Party, dEUS, Coldplay (shut up if you have an opinion), Art Brut, Nada Surf, Editors, with possible seconds of White Stripes, Rufus Wainwright, Daniel and the Johnsons, Backstreet Boys (?!), Black Eyed Peas (why not), and a whole bunch of others I’m forgetting.
It got to the point where I had to make a list for myself and I freaked out my co-workers with it.


Good stuff is happening all around me at work. But meanwhile I was getting the feeling of just not being able to complete what I was working on. Andy’s image of the “big ball of mud” is what you need to keep in mind here. You climb the ball you had left yesterday and something underneath slips out from you that was broken by some other change. You try to add something to the ball and you find that there’s nothing supporting it and you need to dig all the way down to add it and then go back up. It brings you to the point where you cannot fairly estimate how long finishing your thing is going to take.

I had several days where, to write the next two lines of Python code, I had to spend a few hours debugging a problem, some more hours adding/fixing stuff in C, then checking and writing the two lines of Python – only to run into the next problem.

While personally I do not mind this approach – it ensures that the layers you’re using are getting proper testing and fixing and are only improving in quality – it is very painful if you want to complete something. Every day you take half an hour to update all of the underlying code, check some changes, run the testsuite (thank God for me seeing the light on testsuites the past year), figure out if anything broke, and try to add to the project.

But that’s not even the worst part. The worst part is having to test this stuff with an actual phone that

  • doesn’t have any logging
  • has a crappy user interface
  • gives one out of three possible error messages – so it’s useless for feedback
  • takes a long time to do anything at all
  • fails to get a stream even when the stream is fine

Seriously, no debugging, no logging, no way to tell what’s going on, not even being able to be sure that if the phone doesn’t show anything, I broke something …

I’ll be glad when we have a first working version.

It got to the point where I was starting to doubt myself and felt like I couldn’t achieve anything useful anymore, with everyone around me hacking up excellent stuff. So I took a weekend for myself (sorry Kristien) to hack on something of my own choosing to see if I could still “do it”. The thing in question was something I want to work on to test synchronization over the network. I wanted to combine GStreamer and Twisted to expose GstPipelines over the network to one application. As a first run, I wanted to get the excellent seek example running over the network, so I could control the application running on my desktop from the laptop.

With some fixes to the python code for the seek example, some deep digging into Twisted’s serialization layer to be able to serialize objects with both methods and state, and a bunch of hacking and abstracting, I had something that nicely seeked across the network. Phew – so it wasn’t just me.

As a second challenge for myself, I’ve started looking at GStreamer on Windows. Sebastien (Julien’s brother) had been working on it for a while and had passed by the office to help me set up a buildslave and explain how stuff works. It was actually challenging and, in a weird way, fun to get GStreamer to build on Windows. I’m lucky I had help from Sebastien, and we could use the work of some very smart people before us – Steve Lhomme, Tor Lillqvist, the MingW people, …

The reason I want to do this is to put up a buildbot so we figure out platform issues immediately. In the past, we’ve had some people throw some patches or build files at us for Windows, and then they would just bitrot until the next person came along. They also always had strange requests or problems that seemed to be hacked around in the end- I wanted to see if I could go over all of that and fix stuff properly. Also – there are various ways of building stuff on Windows, and everyone had their own preference, and nobody knew what the “best” way was. You can build stuff with MinGW, CygWin, VS6, VS7, the last two of which with or without solution files, or with Makefiles, …

I’ve also set up a clean VMWare install at home to try out stuff, taking notes as I go along (which I’ll probably post once I’ve gone through it all). At the moment, I have a VS6 build working from fresh CVS, and my MinGW build is close to working. There’s lots of silly little things that caused GStreamer to not work (the most obvious one being that any printf-style function with a %s crashes when passed a NULL string on Windows) or have issues, and it’s fun to apply the stuff I’ve learned to a new platform.

The other reason it was fun is because it proved a nice counterbalance to my daily anal-retentive self when it comes to software development. Windows is like the wild wild west. The rules are completely different for developing. There is no package management system. You add crap all over the place until you have a huge ball of stuff with bits poking out and you can’t be sure what goes where. But there’s no other way – that’s how it works. It feels like being an LFS user, and it’s ok because that’s the only way to make it work ! You install a version of libtool in one environment, but it has some bugs, so you add some other version for some other environment to your path, and see what happens… Basically, you just throw random stuff at the problem, and poke at things with a sharp stick, until it works.

Of course, after two days of anarchy, I made sure I cleanly separated several different tools on my clean home install, started writing batch files instead of tweaking environment variables, and so on. But the mess we made on the work machine was fun to make.

So, with these two challenges under my belt, I can safely say that it’s not just me. My actual work project is *hard*. I’ll just have to poke at it harder, and refrain from projecting a finish line.

No Comments

No comments yet.

RSS feed for comments on this post. TrackBack URL

Sorry, the comment form is closed at this time.