[lang]

Present Perfect

Personal
Projects
Packages
Patches
Presents
Linux

Picture Gallery
Present Perfect

History

Filed under: Hacking,Life — Thomas @ 14:46

2006-03-05
14:46

Over the last few years I was using CVS not only for a bunch of personal projects, but also for keeping logs of how I configure certain machines, spec files for packages for submission to Fedora, my own packages, GStreamer packages, config files, patches to other projects, small test applications...

A few months ago, the apestaart server got moved physically, then transferred to a new machine. A good week after that, I did some GStreamer packaging, and I couldn't update from the server anymore. I thought it was just a matter of switching CVS Root. But no. Log in to server. No /home/cvs.

And the old server was still accessible, but had most things already wiped. So, a good four/five years of history gone :/

Of course, I've already suffered a more traumatizing experience with data loss in the past, so emotionally I was just about able to cope with this one.

The experience has two upsides. First of all, this has definitely swung the karma balance between our sysadmin, Wiebe, and me clearly over to me. He's picked me up a bunch of times at the airport, offering on his own initiative, which is a definate treat. One of those times was after midnight, so I was in the red. Not anymore now. Which, after last month's mole weekend (more later), has left me with a nice Belgacom shirt.

The other upside is that, given that I had to start from scratch, I finally jumped to subversion. I tell you, switching to subversion is a lot easier if you don't have a CVS repository to run cvs2svn on. Coupled with a nice trac install, the public bits are now easily browsable. You can probably even file issues, just like you can for this guy.

Now the hard part is logging in to 10+ machines, comparing the local CVS checkout's copy (which can have local modifications) to this new repository checkout and deciding which bits to keep...

GStreamer 0.9.6

Filed under: Hacking,Releases — Thomas @ 22:35

2005-11-23
22:35

GStreamer 0.9.6 is out. For those not in the know, a new stable release is less than two weeks away ! This release incorporates all the API changes we had queued up over the last month. It was a bit of a commit- and bug-closing frenzy, so it was two days late, but it's out now.

If you've written an application using GStreamer, better late than never to try and port your application and point out any possible problems we might have forgotten about...

I'm looking forward (though with a little anxiety) to the stable release - I'm very happy with all the love the core has gotten, and we've been able to layer lots of quality all over - automatic build testing, unit tests, automatic valgrinding, ... Edward is working on a media test suite which will be out soon as well. Seems #gstreamer has really caught on to what it takes to produce and improve quality, which makes me happy.

I remember a few weeks ago when someone proposed a port of the matroska muxer to 0.9 and I said "well, your patch is missing a unit test". I was expecting him to tell me to take a hike. But no - he wrote a unit test, submitted it, and added "writing this unit test I found a few bugs in my muxer." G-r-r-r-r-r-r-r-eat !

Anyway, I'm sure all other libs out there were already doing this, and this is nothing new - but it makes me happy we've come this far.

Now, on to cleaning up more of our tree and moving some stuff around...

foo

Filed under: Fluendo,GStreamer — Thomas @ 11:09

2005-04-08
11:09

and the talking leads to touching
and the touching leads to sex
and then there is no mystery left

Alunya

So, Kristien went to get the cat yesterday. He's about five weeks old, has grey-whitish stripes and a few cute gingery spots on the top of his head. He's more active than we expected - in one night he's eaten three times already (out of the zero times projected by the woman handing over the cat) and he was already sleeping happily on our belly while people were being shot on TV in the Sopranos. Pictures up soon.

How not to do it
Yesterday some guy came into the #gstreamer channel. This was the start of the discussion:

<NickWithheldToProtectTheInnocent> I'm almost finished reading the documentation,
and I must say that the terminology of gstreamer is very lousy, much better metaphor names
could be used that would map to better real world object. Like the ones used in home theater
example. Don't you guys think so ?
<thomasvs> NickWithheldToProtectTheInnocent: no, I don't think so.
<thomasvs> NickWithheldToProtectTheInnocent: but feel free to write some documentation
that uses home theater terminology.
<NickWithheldToProtectTheInnocent> how does "bin" and "sink" make sense to you
without reading the documentation.
<thomasvs> NickWithheldToProtectTheInnocent: how do you pee cleanly without
your daddy telling you ?
<thomasvs> NickWithheldToProtectTheInnocent: how do you learn that it's not
acceptable to poo in public ?

Now, suppose you're having an open house day, and someone walks in, walks over to the group of people standing in your living room talking to each other, and then says loud enough for everyone to hear "This room is very ugly, it could look a lot better. And who puts a fishtank in the living room when everyone can see a pool table would be a much better fit for this room ?"

It's one thing to deliberately start off on the wrong foot with people you don't know at all. If you do, you'd better have a personality that can make up for it. Now later on, this guy goes on to say that he would use "metaphors that could map to real world objects, that would ease the learning process obviously. Like signals and slots of Qt. something that you can connect other thing to."

Now, I had before not taken a look at exactly what slots were in Qt, but I always wondered what they would be, since the only real-world image I had of slots was "some opening you can slide a wide and thin object into". Like, a slot machine, or a letterbox. So he starts off by saying that our terminology is not real-world enough (though to me, a bin is something you put stuff in, and a sink is something in which a stream disappears - I have one of those in my kitchen and bathroom), but a slot is fine.

It might be possible that Vegas has slot machines connected to the ground somehow to prevent from getting stolen, but in the end, a slot being basically the absence of something in something else makes it really hard to *connect* something to it.(1)

Anyway, if you're new to a project:
- be nice when you get in
- if you're not nice, but think you have a valid point, defend your point when people question it
- make sure you use a valid example to make your point. be prepared to back up if you chose an invalid example
- don't call one of the project people "stereotypical" when they challenge your point's validity. It's very stereotypical.
- don't tell them to stop wasting your time. you just came in and wasted theirs *without* having a history of good will on your side.
- don't expect to not have to read *any* documentation. Saying that "bin" and "element" should mean something to you without reading any docs is just dumb. How do you know that these concepts exist in first place ?

On a related note, I hope the cat will learn about the acceptability of pooing in public.

kernel

I got fed up about the fact that both our FC3 kernels and matthias's production kernels cause a kernel fault every time you start or stop capturing from firewire, and sometimes they even lock up hard. It keeps us from hacking on nice Flumotion bits related to Firewire. So I decided it was time for me to do the hard work and start kernel debugging. Boy, what a world of pain :)

I managed to get a serial cable linked up between the test box (which sadly is also our firewall and svn repository) and the workstation. After some tweaking, kernels started spewing all sorts of info to my other machine. But apparently firewire dies without an oops or anything. The machine just locks up and that's it.

So I started hunting for info, similarities in bug reports, kernel patches, ... I also managed to rebuild Fedora Core kernels with my own patches in a fairly sane way, but it's still painful. Yesterday night I tweaked the config a little to give me more debug info, and this morning I will bother my co-workers again with on-off internet. So if you see us go under ...

(1) This is no attack on Qt. It's a fine framework afaict. The guy gave "slot" as an example, and it just happens to be a Qt thing.

when the loneliness leads to bad dreams
and the bad dreams lead me to calling you
and I call you and say "COME HERE"

Hacking

Filed under: Hacking — Thomas @ 20:54

2005-04-03
20:54

Lots of fun hacks all through the weekend.

On Friday I hadn't finished debugging some annoying bugs in our bundling code, and I really wanted it cleaned up. So I kept working on it at home and at some point I got into "the zone" and just went straight through and fixed it all. It was about five in the morning when I stopped. But now stuff Just Works, which is nice. After that I integrated both of Zaheer's patches. It's nice to have a contributor.

Andy's here today for some hacking. We're working on different things but it's still nice to discuss ideas on our own projects. I don't know exactly what he's doing, but he cooked up a nice hack that uses generators to turn Twisted's deferred model (where you have various callbacks that you chain) into a bloc k of code in a generator that *looks* linear, and where try/except can be used to handle failures instead of errbacks.

He had fun doing it, even though something like this already is in Twisted 2.0, which is very similar to what he did.

Zaheer wrote a tray icon for flumotion-admin indicating the mood of the planet. Awesome. I'm sure Matthias will like having this around.

I tried out Togra today because it can also use GStreamer. This cube is spinning and showing any of four GStreamer video streams being played. The one on the right is a stream generated using Flumotion on my laptop. The idea is to use this at a conference in a central location to show what's happening in any of the rooms. Oh, and of course these cube faces are actually live video at the full framerate.

I worked on mach3 today, writing out some more of the intended design. I finally got over my hangup on proper configuration of "distributions" and "collections". The idea was that I wanted to make it easy for people who mirror parts of vendor's distributions locally to override the base URL for a vendor.

Initially I cooked up some object that you can .inherit() from and then any config variable not specified specifically on that object would look it up up the tree recursively. Now that works fine, but I can only use this if there's only one axis people decide to mirror on. Like, I could make all Fedora Core 3 collections inherit from a generic FC3 object, and then changing the base URL on the generic one would change it for all inheritors.

But what If someone mirrors FC 1-3, but only i386 ? If you have more than one axis people can mirror on, this doesn't work.

So I decided to just create a global object containing all collections, and you programatically set the new base url on all
of the ones you have mirrored. Since the base URL is normally the same for all of them, it means you still only have to specify this url once, and then loop along your chosen axes. So, a good middle-ground.

So I proceeded to implement this, and now I can ask any Distribution object to give me a chunk of configuration file data for an installer type. And I added some tests for that.

Back to work tomorrow, but that's just fine.
It also means I will keep python for configuration files. It's just not a TP if people complain.

Flumotion hacking

Filed under: Fluendo,Hacking — Thomas @ 21:10

2005-04-01
21:10

Progressing at a steady pace. At PyCon I fixed all problems between our Flumotion tree and the newly released Twisted 2.0 (yay guys !). Not too much work actually.

A customer ran into some issues with a bouncer not expiring connections properly. Since we don't actually have a bouncer that expires clients in the basic version, I proceeded to write a simple component view for bouncers allowing me to expire any keycard issued. That uncovered some subtle bugs in various places, which allowed me to increase the code coverage a little (It now reports 68% covered, but it's not entirely fair - we're currently not regression-testing actual components because we haven't figured out a nice way yet to test them separately from the whole process architecture).

So it's 68% against about 6000 lines of code, and the whole tree is now at 16.000 lines according to sloccount. So it seems to be worth about $500.000. Check please.

Today I was trying to figure out some nasty reload() bug with our nasty bundling code we have while integrating a patch from Zaheer. Sometimes hacking Python can still be pretty frustrating. Anyway, deferred until Monday.

I have switched to using KDE so you will see my blog on Planet KDE from now on. Really, having your desktop in C and not in C++ and thus being faster to compile really doesn't matter one iota when you're using packages anyway.

« Previous PageNext Page »
picture