Present Perfect


Picture Gallery
Present Perfect

Mallorca (two weeks ago)

Filed under: General — Thomas @ 16:00


asleep in the sun
with the ocean washing over

Kristien and I spent a weekend at Mallorca. Mallorca is very nice - if you manage to stay away from the touristy bits (one strip of road we passed had no less than seven (7) SPAR stores over a length of one kilometer). Luckily we had an excellent local guide in the form of our friend Jauma - or "Jim" as his Mallorquina friends call him.

We spent the weekend going to rocky and sandy beaches, going to a birthday barbecue in a house with a nice swimming pool and lots of food (eating in the pool is an excellent way to spend an evening), partying at the local fiesta, snorkeling and frolicking in the water, and visiting some small towns, including the town where we were trying to get invited to Michael Douglas' and Catherine Zeta-Jones' outhouse. Sadly the happy couple had moved out and their place out there is now a restaurant where you have to pay just to get in.

that feline feeling

I don't know how cats manage this in this heat.

Pay to Play

Filed under: General — Thomas @ 22:40


A one-acter to be performed in a square-shaped room with unopenable windows


a dashing young man with an autistic hang-up on quality in all the wrong places
an IRC bot insulting people who break the build, and praising those who fix it
Dorkus Molorkus
a big-haired hacker sitting opposite of Thorsten
an interesting little CVS module giving home to libgstreamer.so and libgstbase.so
an intern with a craving for cheese caught in the crossfire
the GNU toolchain
a collection of useful tools evolved through combinations of genetic programming and bacterial cultivation techniques
another CVS module depending on gstreamer and providing libgstaudio.so and containing a plugin called libgstximagesink.so
Hens Jamestridge
a wise hacker secreting years of experience into little pearls of information somewhere south of the equator

Curtain opens and light is cast on a dashing young man with an autistic hang-up on quality in all the wrong places.

On an eternal quest for cleanliness, Thorsten finds some code that does not correspond to his sense of aesthetics. He commits a bunch of code that changes gst_audiosrc_ to gst_audio_src_ all over the place.
Some time later, Hobbit makes an innocent change to some documentation and commits. Until suddenly ...
Hedonism: Go eat some cheese instead of committing, Hobbit. You broke the build of gst-plugins-osx
Hobbit: (grunting) Merde, stupid bot. Why are you complaining to me ?
Thorsten and Dorkus exchange some unrelated pleasantries refering to their mothers. Half an hour goes by.
Hedonism: Wouldn't you rather work on MPlayer, Hobbit ? You broke the build of gst-plugins-osx
Hobbit: (grunting) Die, hedonism. I didn't break anything, you're the one who's broken.
Thorsten: (looks up and investigates actual problem). Hm, this is strange. The documentation is complaining about gst_audio_src_get_type missing. I changed that name this morning. (tries locally, things work). Hm. I'll force another build. Hedonism, build gst-plugins-osx.
Hedonism: building gst-plugins-osx. I'll holler when it's finished.
Time passes. Dorkus makes another reference to Thorsten's mom, followed by:
Dorkus: personal note - 14.43 - Thorsten seems unaffected by repeated references to his mom.
Hedonism: As a penalty for your actions, beers are on you, Thorsten. You broke the build of gst/plugins-osx.
Thorsten: (looks at build log) Hm, still complaining about the same thing. This doesn't make any sense. libgstxvimagesink.so seems to be missing gst_audio_src_get_type, but I know it's in libgstaudio.so because I made that change and it works fine here. I sure wish I could log into that build slave. Let's check the other slaves. (investigates unstable slaves). Oh, this 32-CPU build slave seems to have the same problem. (logs in, runs make manually). Yep, fails. What to do now ?
GNU toolchain: (whispering)
We are a collection of useful tools evolved through combinations of genetic programming and bacterial cultivation techniques. Use us !
Thorsten: ... but, (h pronounced gutturally, as if being a Barcelonan waiter) hhhhhow ?
GNU toolchain: (whispering) using ldd on libgstximagesink.so will show you what libraries the plugin is linked against.
Thorsten: (tries the command) Huh. it's linked against an installed copy of libgstaudio.so, in the prefix. Why would this happen ?
GNU toolchain: (whispering) Order. Order.
Thorsten: What's that ? I can't quite make that out.
Dorkus: (running his hands through his hair, making it even bigger than usual in the process) Your mom can't make out. HAH ! (puts up arms defiantly in the classic Vanilla Ice pose but putting up his fingers in a traditional metal gesture)
Thorsten: (ignoring Dorkus) Curse you, libtool ! You are Sithspawn.
GNU toolchain: (whispering) We are powerful. But we can only be wielded by those who are worthy.
Thorsten: I shall not be thwarted in my quest for quality. I will seek out the writings of Hens Jamestridge on the intarweb and reach enlightenment ! (starts seeking out writings)
Hens Jamestridge: (a complicated explanation best summarized in http://advogato.org/person/jamesh/diary.html?start=175)
Thorsten: (reading it over nine times in the hopes of understanding it) Hm, this looks related to my problem, but I can't tell for sure. It seems that somehow this plugin is being linked to an installed copy of libgstaudio.so from before my Quality change. Strings on that installed copy confirms it's still the old version. Of course, the buildslave will not - and should not - install the new version until it's satisfied that this new version builds properly. Verily, this is a deadlock ! What to do ?
Thorsten: (goes to the toilet for a quick thinking break, taking along a magazine that just happens to have an article on the new libtool 2.0 release, proving that God doesn't play dice. Sadly the article is short on details. Thorsten flushes and washes hands, then goes back.)
Thorsten: (reading over Hens' article a tenth time). Hm, so the -L flags affect the library lookup path - I knew that much. Maybe that is my problem here ? (looks at build output and linker flags). Ah, yes - there's a -L flag for the prefix right at the start of the link line. Where is that coming from ?
Hedonism: I find your lack of skill disturbing, Hobbit. You broke the build of gst-plugins-osx.
Hobbit: (grunting) #(*!&$ Get lost, stupid bot. (Hobbit kicks bot, but has no ops). Grrrr.
Thorsten: (getting ashamed of his precious bot insulting people) Verily, I shall not rest until I have figured this out. (starts diving into .la files, Makefile, and twiddling various flags, experimenting all the while. A theory forms itself. Thorsten waves at Dorkus)
Dorkus: (waving arms around wildly, in time with the music on his headphones other people can't hear) YOUR MOM ! (removes headphones) Um, sorry, what ? Whu-whu-whu-what ? Are you speaking ?
Thorsten: (waiting for Dorkus' attention) How good is your library-fu ?
Dorkus: (eyes like a rabbit caught in headlights) Uhm, why ?
Thorsten: Can I try out my theory on you on what's going wrong.
Dorkus: (trying really hard to say "NO") Uhm, sure, why not.
Thorsten: Well, it involves libtool and stuff. (Thorsten starts explaining away)
Dorkus: (eyes glazing over after the word "libtool" falls) I'm sorry - I lost you after you said libtool. (puts headphones back on, continues to shake arms around wildly)
Four hours go by, and one by one, hackers leave the room, until finally, only Hobbit and Thorsten remain. During these four hours, Thorsten's Thunkpad starts wheezing louder and louder, like an astmathic turtle dragging itself back to sea. Thorsten ignores the dying Thunkpad.
Thorsten: (talking to himself) Ok, so I think I figured this out. We're pulling in -L flags because of pkg-config gstreamer --libs containing them, and we're putting those in libgstximagesink_la_LDFLAGS through GST_PLUGIN_LDFLAGS. And this happens to come before libgstximagesink_la_LIBS, so the -L appears on the final link line before our internal copy of the libgstvideo.la file that's in _LIBS.
Thorsten: (starts editing a slew of Makefile.am and configure.ac) so if I'm correct, I should never use small-el or big-el flags in LDFLAGS, and order my LIBS contents so that from high-up to the bottom of the dependency stack, so that in-module libraries do not get switched out for old installed copies. Now, let's see what this does on that 32-CPU machine ...
Thorsten: (waits until make completes) GNU toolchain, what sayest thou ?
GNU toolchain: (whispering) ldd seems to say that libgstximagesink.so now correctly points to the uninstalled copy of libgstvideo.so
Thorsten: Hurray ! (Thorsten commits fix)
Time passes.
Hedonism: The emperor will be pleased, Thorsten. You fixed the build of gst-plugins-osx.
Thorsten: EXCELLENT !
Hobbit: (grunting)Hedonism, still waiting for those apologies.(Hobbit leaves to go home.)
Thorsten: (savouring the moment after four hours of staring at .la files, link lines, and Makefiles, shaking his hands at the sky like tiny antennas) I 0WNZ0RZ LIBTOOL ! (looks around, sees that the lights went out and nobody's there) Hm, no one here to applaud me loudly and thus solve my fan problem. I shall have to part with this Thunkpad soon if this keeps up.
Thunkpad: Wheeze.
GNU toolchain: (whispering) So what have you learnt, young Thorsten ?
Thorsten: I've learnt that I should not put libraries in LDFLAGS. I've also learnt that I should order my _LIBS starting from the library highest up in the dependency chain. And finally, I've learnt that I should not just blame libtool for my incompetence like so many other hackers. Libtool is doing the right thing. Everything works fine now. Thank you, GNU toolchain !
GNU toolchain: (whispering) My precioussssssssssss.
Curtain falls.

I'm sorry, but figuring out linking problems hurts my brain. I had to retaliate and hurt yours too.

Work Work Work

Filed under: General — Thomas @ 18:52


this guy now works for us

Michael Smith (of icecast and vorbis-tools) joined us yesterday. He made his first commit to Flumotion today, woohoo.
All of us here at the office are currently working hard on GStreamer 0.9
Some excellent progress is being made, definitely liking some of the things I see. Andy is busy porting over elements that Flumotion uses, Edward is rocking hard on the python bindings, Wim is working out more core issues and finishing his GLib patches, and Christian is cheerleading and testing.

I started running Jamboree with 0.9. I imported my 120 GB of Ogg Vorbis files and saw it die around 10% of the way through due to lack of memory. So I wanted to valgrind the gst code it's using to read tags, but ever since upgrading to FC4 my valgrind kept segfaulting on me. Until I realized I had an old compiled-from-source copy in my homedir's prefix. After removing that, it worked again. And after doing that, I started to actually valgrind our unit tests. That was a good idea - it turned up a whole bunch of leaks and issues to work on. I stole the idea of valgrinding regression tests from Conrad Parker, and it's pretty damn smart. So I spent two days adding more and more of them to our valgrind test suite, fixing bugs along the way.

I wanted to turn it on by default as part of make check, but since versions before 2.4 didn't have decent threading support, some of our build slaves started locking up. So I guess I'll need to make a separate target for the valgrind tests.

this guy is a visionary
he valgrinds his regression tests
- from make check -

I'm liking the use of subclassing in the 0.9 branch of GStreamer. I had added a num-buffers property to sinesrc to make it easier to test pipeline cleanup, just like fakesrc had. Except I noticed this week it was leaking a buffer somewhere. So instead of debugging the code, I moved the num-buffers property to basesrc (since all sources send buffers, so all of them can EOS after sending a number of buffers if wanted), and removed it from fakesrc and sinesrc. So, end result:

  • the leak in sinesrc is fixed
  • I removed two blocks of code and added one, so there's less code now
  • I also get the num-buffers property on videotestsrc (and other sources) for free.
my view on the world, 50%
the horror, the hair, the alphabet

After fixing the more obvious leaks related to tagging, jamboree read my whole 120 GB of Oggs in one single go. Been playing ever since that, too. There's a bug for mp3, I guess we need to look at that. But I've got enough music for now...

The next GStreamer is going to be excellent. It's taking time, but the seeking is luverly, the threading seems to work out very well, and there's some serious quality being spread out over it.

Time for some Quakage - later.

Music = Life

Filed under: General,Life,Music — Thomas @ 16:59



Went to one day of Werchter with the boys band. Sadly arrived late for AYWKUBTTOD. Rilo Kiley was good. Bloc Party was great, but we didn't go forward soon enough so we had to follow from the side and didn't get enough of the sound. Nine Inch Nails was ok, Interpol was great but short. We got home fairly early because Interpol was moved forward for some reason. Anyway, I realized that I miss going to festivals and having some loud live music play - if the music's good. Maybe I should catch another this year - Pukkelpop or Benecassim.


... And You Will Know Us By The Trail Of Dead still takes the prize for coolest band name ever. I didn't really "get" their latest album on the first few listens, but I've been listening to it all day today and "Will You Smile Again" is all over the place, excellent song.

Tom McRae made a new album, has some good tunes on it as usual. Every album he made has at least one song with that McRae Moment - this album has it in Vampire Heart, in the tiny pause between "so I curse you with a vampire heart" (where the backing vocal goes up and decelerates to a standstill right before a drop) and "for letting me love you". That, and the way the woman sighs "love you" after that. Go Tom.

Lift to Experience - how I miss thee. Those sonic scapes of desert rock with a biblical twist and a self-evident grace. There might not ever be another album. Some time ago I found this painful article about the lead singer and the daemons of music. Sad to read, I wish there was redemption at the end.

My brain is wired for music. I walk into an airport hall and hear some woman sing "Too many people" and in that split second the words tranvision, vamp, and perfect shoot through my brain. I guessed a song once where I had heard only the first second - where that second isn't actually part of the song, but just the musicians tuning instruments. When I am old and in a home I will be a reverse jukebox: a song will be played, I will write or type out the artist and song title, and people will take money from me.

I need more music. If anyone has suggestions, shoot.


Filed under: General — Thomas @ 18:17


Pop Quiz

Guess the Unix system that produces this output:

shiny:thomasvs$ touch acaps
shiny:thomasvs$ touch acapS
shiny:thomasvs$ rm acaps
shiny:thomasvs$ rm acapS
rm: acapS: No such file or directory


shiny:thomasvs$ touch acaps
shiny:thomasvs$ ls acap*
shiny:thomasvs$ ls acap*
shiny:thomasvs$ ls acaps*
ls: acaps*: No such file or directory
shiny:thomasvs$ ls acaps
shiny:thomasvs$ ls acapS
shiny:thomasvs$ ls acapS*

Notice how the shell actually checks what you're asking for and interprets it - contrast "ls acapS" with "ls acaps" output.


figuroutable: within the capacity of someone to be figured out. Ok, let's focus here. This distcheck bug should be figuroutable.