WEBlog -- Wouter's Eclectic Blog

Thu, 02 Sep 2010

Frans Pop

I'm shocked to learn that Frans has died.

Even more shocked to learn that, due to me sitting with my head in the sand, I almost missed it.

You'll be missed, Frans. I didn't always agree with you or your methods, but I deeply respected you for who you were, what you did, and what you were willing to do.

May you rest in peace.

Thu, 26 Aug 2010

include povanim.mk

I was finding myself to be running the same povray command lines over and over again. And then ffmpeg2theora. And occasionally forget to update one or two .png files in the mean time, because I was trying and trying and trying some stuff all the time, and forgot that one frame in the final render. That's silly; that's why we have make.

So I wrote me a makefile.

START := $(shell grep 'Initial_Frame' $(INIFILE) | cut -d'=' -f 2)
STOP := $(shell grep 'Final_Frame' $(INIFILE) | cut -d'=' -f 2)
NUMBERS := $(shell seq -w $(START) $(STOP) )
POVFILE := $(shell grep 'Input_File_Name' $(INIFILE) | cut -d'"' -f 2)
ifeq ($(OUTPUT),)
OUTPUT := $(basename $(shell grep 'Output_File_Name' $(INIFILE) | cut -d'"' -f 2))
endif
ifeq ($(OUTPUT),)
OUTPUT := $(basename $(INIFILE))_$(basename $(POVFILE))
endif
PNGFILES := $(foreach nr, $(NUMBERS), $(OUTPUT)$(nr).png)
LEN := $(shell echo "$(STOP)" | wc -m)

$(OUTPUT).ogv : PATTERN := $(OUTPUT)%$(LEN)d
$(OUTPUT).ogv : $(PNGFILES)
	ffmpeg2theora -f image2 -i '$(PATTERN)'.png -o $@

$(OUTPUT)%.png : ONAME := $(OUTPUT)
$(OUTPUT)%.png : INAME := $(INIFILE)
$(OUTPUT)%.png: $(POVFILE) $(INIFILE)
	povray $(INAME) -D +SF'$*' +EF'$*' +O$(ONAME)

ifeq ($(CLEANFILES),)
clean:
	$(RM) $(CLEANFILES)
endif

CLEANFILES := $(CLEANFILES) $(PNGFILES)

The first part, to just write the makefile so that it would work, was easy. The second bit, write it so that you can include it in the same Makefile several times and have it generate patterns for the files you need, without having them conflict with eachother, was... slightly harder. But not impossible, apparently, with GNU make.

Use like this:

INIFILE=foo.ini
include povanim.mk
INIFILE=bar.ini
OUTPUT=bar
include povanim.mk

with povanim.mk containing the above Makefile

Now just run 'make' or 'make bar.ogv', wait for the rendering and encoding to complete, and you have an animation film. You can even use make's '-j' option to speed up processing by using multiple processors. Which will no longer be useful when povray 3.7 comes out (since that uses multithreading to use all cores with a single povray instance, anyway), but it is for now.

Wed, 04 Aug 2010

Something's very wrong...

I maintain NBD

I have an irrational emotional dislike for python. (I know, I know).

I needed to build nbd in a clean environment. So I set up the environment, install openssh-client (to get the sources across) and then do apt-get build-dep nbd.

That pulls in python.

Something is wrong with this world.

Sat, 31 Jul 2010

Wouter Verhelst, Tourist

So for one day a few days ago, I wasn't Wouter Verhelst, Debian Developer, but rather the above. I'm not usually very much interested in doing touristy things, but then on the other hand I'm of the opinion that you can't really claim to have been somewhere if all you've seen is the inside of a certain specific university campus.

So, well, touristy things. I took the subway to about 10 blocks away from the very south of Manhattan, and then walked. I passed by city hall and what used to be the world trade center, but there wasn't much to see there—construction sites are the same everywhere in the world. I moved on to "the battery", the south tip of Manhattan, and had an... interesting look at the Statue of Liberty in the distance. I thought about going there, but the tickets were sold out, so scratch that.

Wall Street from Trinity Church

Instead, I walked on to the Brooklyn Bridge (passing by Wall Street on the way), spent some time looking for the pedestrian's entrance to that bridge (which was slightly harder than would've thought it to be), and walked partway up the bridge. I wasn't interested in crossing over to Brooklyn, but it's an interesting bridge to walk on, and I had an interesting time.

Brooklyn Bridge

When I left the bridge again, it started raining. I don't mind a few drips on a warm day like that day, but this was more than that, and it started to bother me. So, rather than walking to the Empire State building, as I'd been planning, I decided to take the subway there. This did mean I missed out on the SOHO area, which I would've liked to see, but well, you can't have it all.

dsc_6639

The Empire State building is something you grow up hearing about, and I'd seen pictures of it. It has a somewhat distinctive silhouette, shown on several comparative graphics of high-profile skyscrapers. But none of that is even close to the real thing. Not that it's higher than I expected; on the contrary. But it does look different; its color is much lighter than I thought, and the distinctive silhouette isn't as distinctive once you're standing right next to the building.

But, well, going up the building clearly shows that it is the tallest building of New York. There are other skyscrapers, but most of those seem to be little dwarves in comparison. The view is nice, up there, and I took some interesting pictures. The tickets aren't very cheap ($20), but not insanely expensive either. I don't regret doing this.

Going down...

(in case you were wondering: yes, the above picture is in the point of view of the one above that, and vice versa)

By that time it was around 4 pm already, and I thought about going back to the Columbia campus. As I checked out my map for the most efficient route, I found that it probably would've been easier to walk to Times Square and take the number 1 train there which stops right in front of Columbia (but below the surface, obviously). So since I was going to have to go there, I figured I could just visit Times Square while I was at it.

Times "Square"

I must say I'm not very impressed by it. For starters, Times Square isn't actually a square, at least not as I'm used to that word. Broadway and 7th avenue happen to cross at a, for Manhattan, uncharacteristically sharp angle, which results in more space between buildings than usual. But it's still fairly small as a "square". They've fenced off a part of that space and put a bunch of chairs and tables there. This would be a cosy and inviting, "gezellig" place, if not for the very audible noise of the traffic still going on all around it, and the fact that everywhere you see, there's three layers of brustling and visually noisy adverts. It could have been a relaxing oasis in the middle of the city, but instead it's just as busy as everywhere else in Manhattan.

But then, I guess that's what New York City is all about.

At any rate, after spending about half an hour or so there, I walked over to the subway to get back to the venue—just in time for dinner. The end of a nice, touristy, day.

Tue, 27 Jul 2010

NBD: authentication and named exports

I just did some work on two NBD features: authentication and named exports.

The first was written by Brad Allen back in 2008. I'd been thinking about an authentication scheme back at DebConf 8, and discussed it on the nbd-general mailinglist. Brad picked it up and ran with it, but it never got finished. Basically, what I did today was forward-port the code so that it would compile (and work) with today's version of the NBD utilities.

I tested it and it works, but I'm not sure what to do with it. NBD is not encrypted; so there's no protection against TCP hijacking or some such. Oh well; I might still integrate it into nbd mainline.

The second feature is something way more interesting. It had been on my long-term TODO list for quite a while, but I never sat down to implement it. Until today, that is. This patch has been compile-tested, but I haven't functionally tested it yet; I'll do that tomorrow.

The main reason it took so long to implement, was that initial NBD handshake made that quite hard. Upon connecting, nbd-server as it currently exists will open the file or block device that it needs to export, and—before nbd-client has sent anything—sends information on that export (its size, whether or not it is read-only, etc) to the client. Unfortunately, this does mean that I cannot add new features to nbd-server while retaining full backwards compatibility if these features may involve changing what nbd-server sends during the initial handshake, as is the case here. This could be worked around by having the server first send information on a "default" export to the client, and then variate that if the client informs the server that it actually wants something else. But this would have been rather ugly, since it means that errors in open() or stat() calls for the initial "default" export would have to be non-fatal until the client actually tries to read or write to or from the device, at which point they would suddenly become fatal. This would open a can of worms near which I didn't want to tread.

The way I fixed it in the end, however, is fairly simple. If names are used to specify an export, nbd-server can live with just one port to export all block devices that it supports, rather than needing many. As such, I can "reserve" one port for the new-style named exports. On this port, nbd-server would expect that clients send a name, and would not function correctly with clients that don't understand names. At the same time, nbd-server could still export the same block devices on other ports as well, using the old-style protocol, for clients that do not support named devices.

This would of course require that both the client and the server know perfectly well what the port is, and that it does not change too easily. As such, I've just put in a request for an assigned port number over at IANA, so that I can be sure that the port will not change unexpectedly. This also means I won't make a public release with this change until the port number has been assigned, so that I don't need to support two 'default' nbd-server ports in the future (one "temporary" and one IANA-assigned port).

For now, however, I think I'll go grab some food.

Mon, 26 Jul 2010

Maintainer stupidity

As a buildd admin, you get to see the myriad of ways in which packages can fail to build. Sometimes this is due to interesting technical reasons about the architecture in question; sometimes... not so much.

cc1: unknown option: -mmmx

For reference, I maintain powerpc and m68k buildd hosts.

configure: error: pkg-config: command not found

Checking build-dependencies is hard. Right?

ccache: failed to create /home/buildd/.ccache (No such file or directory)

No, I don't manually install ccache inside the buildd chroot, which must mean some build-dependency pulled it in. Why one would want to do that, I dunno—it's not like a build that takes longer would produce a different package, so it clearly is not required for the build.

(BTW, the invalidity of $HOME is on purpose -- packages are not allowed to write outside their build directory during builds, which includes home directories)

... and more. Sometimes, I wonder how people get the right to upload. But, well.

Sun, 25 Jul 2010

There

Yesterday, I've arrived in New York City for the annual Debconf. Well, that is, today's the first day of Debcamp, and obviously not that many people have arrived yet. Since I arrived a day early, I'd also booked a hotel room for one night. But that's okay, it allowed me to sleep off my jetlag—not that I had much of it, but anyway.

Today, then, I signed in to the dormroom. Turned out I was the first non-organizer to do so, and that there wasn't even anyone in the hacklab yet. Well, that's what you get for being so early, I guess.

Not quite sure yet what to make of the weather. When the plane touched down yesterday, the captain announced over the PA that the outside temperature was 99 degrees Fahrenheit (some 37 degrees Celcius), which is hot, especially when added to the rather high humidity. You walk outside for five minutes, and you're sweating like a pig. Today started off on the same foot, but then about an hour ago or so it started raining, and it hasn't stopped yet; and it doesn't feel like what I would call a regular summer thunderstorm, either. Bit weird.

But then, who cares about rain at a computer conference, right? Right.

Thu, 22 Jul 2010

New toy

Just bought me an external flashlight; a Nikon Speedlight SB-900, which is Nikon's top model. It wasn't as expensive as that sounds, though, since this was their demo model that they got me a good discount on, on top of the already rather low prices that this shop offers; this made it cheaper than the list price of the SB-600, Nikon's second-best model.

I'm afraid it will take a while before I'll be able to fully understand its features, though. I did get a course at photography when I was about 13 years old, which did help me in picking up again how to work with an SLR camera when I bought it. But that course never included anything about using flashlights; and while I do understand how bouncing light off of walls and other things may sometimes help in getting the picture just right, I haven't actually ever done that. So I guess I'll be practicing a bit, now...

Mon, 19 Jul 2010

Stream-of-image video data and cinelerra

Just so I won't forget, but also to make sure others with similar problems to me don't need to search for several hours before finding it's so simple that it's silly:

If you have a bunch of image files (PNG, JPG, whatnot) that you want to treat as a single clip in cinelerra rather than hundreds (if not thousands) of individual files, the trick is to use a "list file": you create a file with some metadata and a list of all the files that make up the video clip, and import that, rather than the individual files.

If said individual files are PNG files with alpha information, doing so also makes it ridiculously easy to create an animation that only covers part of the screen.

The file format is pretty basic; but over at this page on the cinelerra.org website they list two scripts (one python with GUI, one bash and command-line only) that can generate such a file, given a bunch of image files. That makes it even easier.

I'd also like to note, for the record, that cinelerra outperforms kdenlive in everything but 'transcoding flexibility'. Kdenlive also has support for image lists (and you can create them in the gui rather than having to muck about with external programs or editors), but it has the rather nasty misfeature of doing the equivalent of "Oh, look, what's that? We don't need that, let's throw it away" whenever it encounters alpha information in PNG files.

For full reproducability, it's also possible to generate PNG files with alpha information from povray if you use the +UA command-line parameter, and say something like

sky_sphere {
	pigment {
		color rgbt <0, 0, 0, 1>
	}
}

somewhere in your scene file. Yes, I know, povray is non-free, but it works, and—as opposed to blender—I do know how to use it. Hey, I'm not RMS.

Monty at it again...

Apparently Michael Widenius isn't quite about to give up on his quest against Oracle.

The latest news is that he's appealing the EC decision. Wonder what the use of that is, since the merger seems pretty final already. I also don't think it's a very good cause, at any rate. After all, the worst that can happen is that MySQL will fork. Or that Oracle will pour some resources in it, and actually make it a database, rather than the POS toy it currently is. Or that it dies out, and that the world switches over to PostgreSQL or Firebird for Free Software database requirements. Wouldn't be a big loss, would it?

Give up already, Monty!

Wed, 07 Jul 2010

Pauly site: redux

A few years ago, when I was still a member of the Jozef Pauly ensemble from Ekeren, at some point I took over maintaining their website. One of the things I did was converting it to drupal, mainly because that would allow other members of the ensemble to help maintaining it.

Of course, such things do not happen automatically; and had I spent some more time on the project, it might've actually worked. But I didn't, so it didn't. Oh well.

One of the main issues with the site as I set it up, was that I hadn't really done a very good job integrating everything. The standard drupal 5 theme looked pretty good, I thought. Slap on a few modules, and done. Unfortunately, I skipped a bit of testing, and as a result, the site didn't really function the way it should've. When this became apparent, I didn't have the time to properly fix it.

During the last few years that I was a member of the ensemble, someone else stepped up to help maintain it. I told him that one of the things that I wanted to do was to upgrade the site to Drupal 6, so as to make i18n a bit easier. But some of the modules which weren't in drupal core made this somewhat harder than needed, and I didn't have the time to investigate in-depth what the issues were.

In the end, I set up a secondary site on a different vhost on the same server that ran drupal6, and gave that guy admin rights there to help convert things to the new site. I planned to lead the effort to make things work; but when I came back not so much later, it turned out that he'd done a very good job already, and that it was probably a good idea to let him finish.

This took much, much longer than expected; but eventually, he's finalized the setup, and it's now live (since a few weeks) on their official site.

This site has content in both Dutch and English, though there is slightly more in the Dutch version: since they're doing a concert trip again this year, there's a blog for their families. Also, some people individually have decided to blog about the whole thing, too, which is... interesting.

At any rate, I think the site looks very, very cool. Go check it out!

I guess we may have to start thinking about doing an upgrade to Drupal 7 some time soon. But, hey.

Thu, 24 Jun 2010

On LDAP objectClasses

Petter suggests to make the dhcpHost LDAP objectClass an auxiliary one, to make it possible to combine it with the dNSDomain objectClass in one and the same object.

Unfortunately, you can't do that. Well—not if you want Debian-edu to remain compatible with everything else under the sun. You see, one of the features of LDAP is that each and every objectClass is well-defined, and that you cannot change it. As such, once a tool knows about an objectClass, it can make assumptions about objects in that class, for any such object, in any LDAP-server anywhere. Change an objectClass, and some tools will break.

The proper fix is, first, to verify that you are using the proper objectClasses. To me, an objectClass called dhcpHost and one called dNSDomain don't sound like they were meant to be used together; I would suspect that there is another DNS-related objectClass that is meant for hosts rather than domains. If that isn't the case, then one can create a new objectclass—say, auxiliaryDhcpHost or some such—that is the same as dhcpHost in all but name, OID, and the fact that you make it an auxiliary rather than a structural objectClass. Because luckily, what's true for an objectClass is also true for an attributeType: if it is assigned to an LDAP object, tools may assume that their meaning is what they think it is...

Fri, 04 Jun 2010

Re: beid

Sometimes help is just around the corner, and all you have to do is ask.

Not so long ago, I asked for help on the support software for the Belgian electronic ID card. I'd been packaging that since it came out back in 2004, but recently I've had some issues with getting the most recent version of this software to work properly. Since Debian 6.0 "squeeze" is fairly near, and since I don't want a horribly outdated version of beid to be part of that release, I realized that something needed to happen, and rather soon.

My request got quite some response; much more than I'd expected. There have been answers from people with various amounts of experience in Debian packaging; one of the people to reply to my request was Laurent Bigonville, who's also a Debian Developer. So we've now set up a mailinglist, a git repository, and work seems to be proceeding nicely.

I've also asked for the removal of the old belpic source package. However, due to a mistake on my end, the beid source package rather than the belpic one was removed, which means that it'll have to be re-added to the archive now. That should happen sometime during the next few days, after the worst problems have been fixed. However, since I now asked for belpic to be removed, too, this means that for the time being, there is no eID software in unstable. We'll fix that in due time; stay tuned.

Sat, 22 May 2010

Help!

Yes, there is something like an 'RFH', or 'Request For Help', in the WNPP in Debian, but I thought I'd go through this blog, first, since I believe many more people who will feel inclined to help here will read this blog.

I've been maintaining the beid packages in Debian since, eh, quite a while now; and while it's not always been the package that I have spent the most time on, it's not a package that I want to give up.

However, in recent times, I've had issues with the code. I've not really been able to get the 3.5.2 release to compile properly as a package, which means that for the moment, squeeze is still stuck with a 2.x release. This is a problem, since that old release isn't supported anymore upstream, and what's worse, it does not support newer-issued eID cards. So if your card is less than about two or three years old, you can't even use it anymore. For this reason, the beid packages really, really should be updated before squeeze releases.

I've been trying to spend some time doing so, but real life kept intervening. And I haven't even been able to start looking for the 3.5.3 code that I'd heard rumours would exist.

So, this is a request for help. If you want a more recent beid package to appear in Debian (and, by extension, Ubuntu) any time soon, and you can spare some extra time on maintaining a somewhat convoluted package, you'd be an ideal candidate for comaintainer of this package. You don't need to have any experience working on Debian, but you do need experience with build systems and Makefiles. If you don't have any experience in working on Debian, but would like to learn, this might be an interesting opportunity. If you do have experience working on Debian and are as interested as me in getting this to be up-to-date in the next Debian release, your help would be very much appreciated. Even if you only have time for a little while and would like me to take over once everything is going fine again, that's helpful.

At any rate, if you want to help, contact me at wouter@debian.org. We'll work out the specifics then.

Thanks in advance,

Thu, 20 May 2010

Dear lazyweb,

Can I instruct inkscape somehow that I do not want antialiasing to be used when I ask it to export a bitmap? Reason being that for what I'm trying to do, I need to limit the amount of colors used, and anti-aliasing adds quite a number of values that I don't want to be added.

Thanks,

Tue, 18 May 2010

Can I have my Debian back?

So someone thought it might be a good idea to switch the default from the time-honoured Debian style ("booting foo... ok") to the RedHat style ("<left-align>booting foo... <right-align>[ok]"). I don't think the switch adds any value (it's not like it looked bad or anything in the past); in fact, I think it's a bad idea. And I even have a technical reason.

On my 26" 1920x1200 screen (when the i950 driver detects it properly and actually sets the framebuffer to that resolution), the output looks like this:

bootscreen

Now imagine you get to see that screen for about two to five seconds. Please tell me which two initscripts failed. And no, you cannot use a ruler. Bonus points for if you manage to do so while the text is also moving upwards, which tends to happen when systems boot.

Also note that because kernel mode-settings has become the default, a lot more people are going to be using framebuffers.

Am I the only one who thinks this is a bad idea?

Thu, 06 May 2010

0x20

Birthday.

Old.

Presents:

Me in birthday present

Maybe more, haven't seen any yet.

Meanwhile, at $WORK I'm fighting with a mandelbug (first definition). Sucks.

Tue, 04 May 2010

On clue and opinions

How does one define one's "national identity"?

One way is to look at where a person is born. By that definion, I could be called Flemish, Belgian, or European, whatever you think about it.

Another way to look at it is how one feels about one's own identity. This, of course, is a much more accurate way to describe a person; and by that definition, I am either Belgian or European. I do not feel any affinity with much of the so-called "flemish" identity, nor do I wish to be associated with it any more than is strictly necessary. Obviously, some people feel different about that for themselves.

This I can understand.

In fact, the statement to feel more Belgian than Flemish is probably not one that is very common in this general area. I am not stupid; I know that Belgium is not a Nation (it is a state, but that is a different matter). I just do not feel a lot of warm fuzzy feelings about Flanders. Naturally, other people have other feelings about that.

This, too, I can understand.

The logical result of the above is that my personal opinions about the somewhat convoluted politics in this country are not shared by many; that when I state my opinion, I may expect opposition, or at the very least someone stating why they disagree with me.

This, of course, I can also understand.

But what I cannot understand is that every time I state my opinion, someone must come out and insult my intelligence by telling me I "do not have a clue". Please do not mistake my disagreement for misunderstanding.

Martijn asks me to "check the facts". Let's do that, shall we?

  1. There's been a judgement by the constitutional court that the current situation regarding which party may run for election in the BHV region is unconstitutional.
  2. One group of politicians wishes to resolve this issue by splitting the BHV region in two. That would certainly solve the issue.
  3. Another group of politicians dislikes this solution. They may be willing to go along, but they want other concessions before they will do so. This is what I referred to when I said that there were "a huge heap of all kinds of side issues" in my previous post.
  4. The first group does not wish to make such concessions. Some of their numbers have even stated in the press that there is no need to make them, because, given the first point, there's only one solution and that is to split.

That last point is, of course, complete and utter bullshit. It would hold merit if there was only one way to solve a constitutional crisis; but by definition, there are always at least two ways: one is to change the law to comply with the constitution, the other is to change the constitution to make the law no longer be unconstitutional. So a group that feels strongly about one of these two possible solutions should be prepared to negotiate with the other group so as to hammer out an agreement that benefits both parties. In some cases, this will mean doing things that they do not completely like; but if they're not willing to do that, at all, they have no business being politicians. For the longest time during the early negotiations, however, both parties have stubbornly refused to even acknowledge the other position, let alone talk about it.

Now, for clarity, I'm not advocating that the latter of the two options in that previous paragraph is what should happen. Frankly, I don't even care what happens, so long as they manage to resolve the issue at hand in some way. What I do care about, however, is that this country has been in a near-constant state of stalemate over these past few years for an issue that only matters to politicians; I don't care who or what a group of people in a (to me) obscure part of the country can vote for. This country needs a stable government which can act on things that actually matter. Like, say, the international economic crisis of the past two years; I think it matters much more whether the man in the street has a job than whether John Q. Politician will past these next elections.

Mon, 03 May 2010

Yves Leterme, Belgian minister for resignation.

At least that's what it looks like right now. No less than five times did he offer his resignation as prime minister of Belgium to the king. Looks like fifth time is a charm now, too—we get to go elect a new parliament in a month or two. Sigh.

The 'fun' bit is, there's no real reason why this is necessary. The main issue that they've been talking about these past few years is the 'BHV' thing. While the issue is somewhat complex and, I'm sure, involves a huge heap of all kinds of side issues, the crux of the matter is that there's one group of politicians who wants to forbid another group of politicians from running in a region of the country around the capital.

Now I'm sure that's hugely important to politicians—after all, their career depends on it—but beyond a few fanatics in and around that very capital, I'm pretty sure nobody actually cares what the particular names are of the particular groups of people that appear on the list of people they can vote for. Because, you see, this isn't actually about politicians wanting to forbid other politicians from running; it's about politicians wanting to forbid other political parties from running. Which, of course, makes a whole world of difference. Yeah, right.

Now I wouldn't care about this much, except that it interferes with the smooth running of this country. The fact that they've come up with "problem" after "problem" related to this BHV "issue" for these past years has made it hard(er) for the government to actually to any real work. So although I hate the current situation, I'm actually quite relieved that an election is coming up. Perhaps this time we can get the fanaticals out and have a real government.

(no comments allowed on this item; please use your own blog)

Wed, 28 Apr 2010

It was a dark and stormy night.

Onze-Lieve-Vrouwestraat

The moon shone through the clouds. The sun didn't. The lightning did. Or, well, didn't.

The beer flew wildly, and changed the food into something of the past. Discussions arose about lasers, ceramic knifes, and stormy nights. Promises were made that were only kept by some, including me, but not including him.

Much was said that mattered little. Little was said that should've been forgotten. Yet much was.

He would've been proud.

Mon, 26 Apr 2010

Yanina Wickmayer, heroine of the Belgian fed cup team

Last weekend, I went to the Grenslandhallen in Hasselt, to see Belgium compete against Estonia in a Fed Cup tie of the World Group playoffs. The winner of this tie would gain a seat in the top-tier World Group next year, which opens the possibility of winning this competition.

The Belgian team was the strongest possible one, with all four best Belgian female tennis players—Yanina Wickmayer, Kim Clijsters, Justine Henin, and Kirsten Flipkens. On paper, the team should not have had any problems beating the Estonian team.

Unfortunately, Justine fractured her pinky finger during practice on wednesday; and while it did not make it impossible for her to play, it did reduce her fitness somewhat, which meant that on Saturday, Kim and Yanina had to defend the Belgian colors. They did and won, but then Kim injured some muscle in her foot, which made it hard for her to walk on Sunday, let alone play.

With only Justine, Yanina, and Kirsten available, coach Appelmans chose to put Justine on the field. Though she made a valiant effort, she unfortunately did not manage to beat an unleashed Kaia Kanepi, who—it must be said—played a terrific match. As such, it fell on Yanina to bring home the tie in the fourth singles rubber against Maret Ani. Being a bit nervous in the start of the first set, she made some unnecessary errors; but after a few games, she came through and started to play much better. Unfortunately, by that time the score was already at 5-1. Yanina won her first service game of the match to bring it to 5-2, but it wasn't enough, and Ani won the first set somewhat easily.

She couldn't put anything on the table against a storming Wickmayer, however, and after two more sets, the outcome of the match—and, by extension, the tie—was clear: a win for Belgium.

I can't help but note that Wickmayer has been a great player for the Belgian fed cup team these past few years, however. Since her first Fed Cup participation in 2007, she holds what is, given her ranking at the time, a rather impressive 9-4 win-loss record in Fed Cup. If it wasn't for Wickmayer, the Belgian team would not be where it is now. It was Wickmayer who won her three matches against Canada, one as part of a doubles team, to prevent demotion from world group II to the Europe/Africa zone back in 2009, with a 3-2 score. It was Wickmayer who won the crucial third rubber against higher-ranked Radwanska in February to beat Poland, with the latter even holding the home field advantage. And it's now been Wickmayer who won two of the three rubbers against Estonia that were needed to win the tie.

So Congrats, Yanina!

Fri, 23 Apr 2010

Touching up a video with Cinelerra

I found myself with a problem: trying to linearly edit a movie clip with a non-linear editor isn't very simple, nor is it meant to be.

Case at hand: I have about 1 hour and 40 minutes of film material that was recorded with dvswitch, and which is 90% fine; but given what we wish to do with it, we really wish to remove the errors from the recording—things like failed transitions, rogue camera movements, and so on. This is why we recorded the individual video streams on tape too, so that we could indeed do some retouching afterwards.

Cinelerra, however, is not really made for that. If you want to create a transition, you need to have two segments of clips that are stuck together on the timeline, and the transition is then applied to the border between the two. You can create multiple video tracks, but you cannot cut from one track to another; you really have to add a clip to the timeline. Doing that has obvious issues if you have multiple video streams that were recorded on the same time and that can be time-synced on multiple tracks. You would prefer to just select one track or the other on a certain point in time, but cinelerra just doesn't do that.

So the workflow that I found is the following:

Add all video streams to the time line, each on a separate track. Make sure the to-be-touched-up stream is on top; when multiple tracks are in use, and the are not faded to 50% or so, cinelerra will only show the top stream in the final rendition.

Synchronize the streams: first, create a rough alignment by moving them with the mouse. Then, press arrow-down until you can see the streams on a frame-by-frame basis. Now for each of your camera streams, do the following:

  1. In the 'main' stream, search a section that was filmed by the camera which we are trying to align.
  2. Hit 'l' to create a label
  3. Search for the exact same frame in the camera stream. It may help to disable playback for the 'main' stream temporarily to visually verify that the frame is the same in the compositor window.
  4. Move the cursor to that frame, and create another label.
  5. If the streams are indeed desynced, then one of the tracks will lead, and the other will follow. If the leading track is the 'main' track, arm the main track and any tracks that you have already synced before, and make sure to remember the audio tracks. If, on the other hand, this is the camera track, then only arm that camera track. At any rate, make sure to disarm the track(s) that are following.
  6. Use the control and arrow keys to select the first label. Use control, shift, and the arrow keys to select the section up to the second label.
  7. At the bottom right of the program window, you can see three entry boxes with time indexes. The first is the time index to your first label; the third the time index to your second label; an in between those, the second is the length of the interval from the first label to the second label. Set the contents of the first box to all-zeroes, to move the selection to the beginning of the time line; then press tab (to move to the second entry box) and enter (to confirm that you wish to create a selection of that length at the beginning of the timeline).
  8. Press Shift-Space to insert silence at the location of the selection. This will move the armed tracks to the right, and not touch the not armed tracks.
  9. If you did everything right, the two tracks should now be aligned. Move the cursor to the second label, and verify that this is true by disabling 'play' for the main track and any tracks in between the main track and the track you're syncing. The frame in the compositor window should not change if you re-enable the main track. If it does, use 'z' for undo, remove your labels and try again.

Once your video tracks are aligned, you need one final video track that comes all the way on top. This is an empty, 'override' track. Anything you put in this track will override the main track. This way, you do not have to cut from the main track to another camera; instead, you just copy from a camera track and paste on the override track.

It is, of course, possible to paste onto the main track, but that has the disadvantage that you cannot easily undo such edits after a 'save' operation. Using a separate 'override' track does allow that.

To copy from one track to another track without moving in time, use the following method:

  1. Select the region where you wish to select another camera.
  2. Arm the camera track that you wish to copy from, and make sure not to arm any other track.
  3. Hit 'c' to copy the clip at that point.
  4. Disarm the camera track, and arm the 'override' track
  5. Without moving or removing the selection, hit 'v' to paste onto the override track.

All this may be basic knowledge for people who are more flexed in nonlinear editors than me; but I couldn't find this procedure on the Internet, so I thought I'd put it out there so that the next person who tries this doesn't have to try for days on end to come up with this, as I had to do.

Mon, 19 Apr 2010

Re: Kerberos and LDAP

Petter Reinholdsen asks about Kerberos and LDAP.

While I'm not sure about an implementation that does just the ACLs in LDAP, there are several implementations that support having the kerberos principals stored in LDAP (i.e., heimdal has supported it for ages, and MIT Kerberos implements it since fairly recently, too). This allows not only for easy replication of the principals to a secondary KDC; it also allows for using LDAP ACLs to decide who gets to create and maintain users.

In addition, there's supposed to be an OpenLDAP overlay that allows for updating the Samba and/or heimdal hashes in an LDAP directory when the OpenLDAP 'change password' extended operation is used, thereby making it somewhat easier to keep passwords in sync.

I should note that I've never tried any of the above, though.

Fri, 16 Apr 2010

DPL vote

The DPL vote is over. I did not win, apparently. Let me start off by thanking the other candidates for running, and congratulating Stefano for winning.

My own results aren't too bad; I beat 'none of the above' by a comfortable margin of almost 10 to 1, and ended up defeating Charles Plessy by a slightly smaller margin. My margin to NOTA was far better than during the previous DPL election that I participated in, though I did end up defeating more than half of the other candidates back then, which I didn't this time around. All in all, not enough to win, but enough to conclude that I might have a chance some other time. Margarita and Stefano were just better candidates this time around.

My own vote was:

[ 2 ] Stefano Zacchiroli
[ 1 ] Wouter Verhelst
[ 4 ] Charles Plessy
[ 2 ] Margarita Manterola
[ 3 ] NOTA

If you run, you have to be serious about running, and support yourself. So I did. After that, I wasn't sure that Stefano would do a better job than Margarita (or vice versa), so I put them at the same spot. Finally, I became convinced during campaigning that Charles has a lot to learn still about what lives in the Debian community, and I am of the opinion that feeling the community is a vital requirement for a DPL; so that ruled him out.

So why did I not win? Obviously because there were better candidates in the election, but the real question is: why is that the case? What did I do, or what did other candidates do, that meant they fared better than I? One possibility was given on IRC:

< svuorela> ol: and "I'm running because no other runs" is also
not a good way to get votes ...

Which is fair enough; but I did run with the intention of winning, and I did try to make that clear. I'm hoping that worked out okay, which would imply that there could be other reasons. I'd like to know about those. So if you voted, and did not place me on the top spot, I'd very much appreciate learning about your motivations for doing so—especially so if you were one of the 39 people who would rather have redone the vote than see me win. Comments on this blog post are welcome, or by private e-mail if you'd rather not see them made public.

Wed, 14 Apr 2010

Eek.

I like watching movies. So much so, that I have way too many DVDs. Not as much as some other people out there, but still enough.

I used to buy my DVDs mostly at the local Extra Zone shop, but as that company has gone bankrupt, I now need to walk about twice as far, which doesn't happen as often. I guess it's a good thing for my budget, but anyway. I liked the shop, I liked the people, and I hate having to go elsewhere now.

As the Extra Zone shop was located on the Bruul, the major shopping street in Mechelen, the location where they were was obviously rented out to some other parlor very soon. Now, as a result, every time I pass there I cringe. Not because I think back of the old shop—businesses go bankrupt every day, there's nothing special in itself about that—but because of the ads for the new shop.

Spelling is hard

Spelling is hard, apparently.

Mon, 12 Apr 2010

LOAD is over...

...and I think it went well. As someone who does some sysadmin-for-hire work, it does fit me quite well. I did my "Debian Secrets" talk again, which had moderate success: some people had already seen it at FOSDEM--which is normal, considering how the room was crowded back then--so they missed it this time around. Those who had seen it seemed to be fairly interested in what I had to say, so that's good.

Of course, while there, it made sense to pick up a few other talks, which I did; and I learned some interesting things in the process. I mostly liked the GOsa² one, but there were some other interesting ones, too.

Had I not been in Deurne for the concert of the choir on Saturday evening, I would even have won a book. But apparently the rules said that you couldn't win books if you weren't there...

All in all, I think it was a rather successful event; and if there's a repeat next year, I'll certainly attend again.

Thu, 01 Apr 2010

LOAD

No, I'm not reverting to the commodore 64. LOAD stands for 'Linux Open Administration Days' and is a community event targetted at sysadmins.

LOAD, the Linux
system administrator event

This being quite obvious, as I have a talk on the schedule. It'll be a repeat of my 'Debian Secrets' talk that I've also done at FOSDEM, in Essen, and in Buenos Aires. Except it will be better than it was at FOSDEM.

I'll be there the whole of saturday. Not sure yet about Sunday.

Sat, 27 Mar 2010

Annoyed by Marc Wickmayer

In just under a month, Belgium will face Estonia in a Fed Cup World Group Playoff tie. The winning team will participate in the world group next year, which, in theory, opens the possibility of winning. So this is an important encounter. When team captain Sabine Appelmans announced the Belgian selection, it was described by the Belgian press as the 'dream team'—Clijsters, Henin, Wickmayer and Flipkens, aka the four best Belgian female Tennis professionals. That, combined with the possibility of a World Group promotion, seems to excite much of the country, to the extent that 10000 tickets have been sold in no time. Yes, I'll be there too.

But one man seems unhappy. Marc Wickmayer, father of Yanina, will say to everyone who wants to hear it, that 'Appelmans needs to choose'; that he's 'tired of the hypocrisy', and so on. His arguments: Clijsters and Henin have not been part of the Fed Cup selection in two years, and his daughter should not be the fourth wheel on the wagon after having been much of the reason why Belgium is playing these playoffs.

Sigh.

Let's check some facts, shall we?

Curiously, Yanina herself does not share her father's opinion. She's been quoted several times as being excited to have Clijstes and Henin on the team, since 'the team is much better with them'. Indeed. Her relationship with her father, is often described as being 'very close'; apparently that doesn't mean they are of the same opinion on everything. Maybe it is time for the two of them to have a little chat on the whole Fed Cup thing, before this gets out of hand. I'd hate for Appelmans to have to make the wrong choices to appease people...

Mon, 22 Mar 2010

N900 back!

So, a short while ago, the battery of my N900 had run flat. As in, completely, utterly flat. In itself, that's no big deal -- you connect it to a power outlet, wait until it's gone past the low-battery charging bits, then boot and use as usual.

Except that it wouldn't. I'd recently installed a firmware update from Nokia (which contained some bug fix that I really was waiting for), and now the bloody thing wouldn't boot. Rather than do the low-battery charging dance, it thought the battery had enough power that it could just go ahead and boot.

Of course it was wrong, so whenever I powered it on, it would sit there fore 30 seconds, try to boot, fail, power off for about a second, and start over. I left it like that for a night, but it didn't recharge.

Needless to say, that was quite annoying.

So I sent it in for repair, and today there was a package in the mail, containing my (repaired) N900.

They'd reflashed it. A reasonable course of action, I guess, but of course that meant all data was gone. Good thing it has a backup application, and good thing I stored those backups on an external micro-SD card.

Restoring those back-ups was a breeze; they'd also stored the contents of sources.list and have done something akin to "dpkg --get-selections", since now the application manager kindly asks me whether I wish to reinstall the applications that I had installed. Cute.

At any rate, I'm very happy I finally got rid of this awful Samsung "cellphone". It's a SGH-C140 that I had as a replacement until my N900 got back, but there was something very very wrong with it; I don't know whether it's a design flaw or just a wear-and-tear issue (these replacement phones aren't usually handled in the best possible way), but it managed to lose connection to the network every once in a while. So people who would call me would immediately get my voicemail, and then they'd be angry with me later because I was unavailable. Well, duh.

Anyway, that's over now. Whee.

Wed, 17 Mar 2010

Baobab

So, we recorded the performance. As I mentioned in my previous blog post, the sound for sunday was not recorded properly, so while the image looks far better, having a video with no sound is hardly interesting.

But as a 'sneak preview' for the people involved, I uploaded one fragment of the Saturday recording to youtube:

There's a lot of grain in this image, courtesy of the fact that two of our three cameras just weren't very good. But beyond that, it looks quite good, I'd say...

Tue, 16 Mar 2010

Stuff

I'm running again.

No, not running in a bubulle style; I'm running for DPL. It started as a fairly last-minute decision because I would hate to see an election with only one candidate, but then two other people submitted their candidacy right after me.

As I stated in my candidacy email, I had "a concert" this weekend. Actually, there were three two-hour performances; two on saturday, one on sunday. Early on, I also suggested videotaping the performance (using the excellent dvswitch, for which I added a patch to support crossfading transitions) to the organising group within the choir, and they liked that. Apart from dvswitch, we used the theatre's own audio mixing setup (so I wouldn't have to worry about that too much) and the theatre's intercom system. I'd made some tally lights, but in the end we were not entirely able to use them, because there were some issues to be dealt with that meant I couldn't quite get them working properly.

So on saturday, I was in the theatre pretty early to get everything set up, did some explanations to the volunteers who would do the actual recording, drove my dad (who'd done the direction for the video parts) home, went home, and found my bed at around midnight.

On sunday, I got up fairly early, booted my laptop to update the live images with some fixes for some issues we'd encountered on saturday, left for the theatre fairly early again, set up the extra camera position, found out that one of the laptops was actually running at 100Mbit rather than a gigabit and that therefore the extra camera wasn't going to work, learned that one of the volunteers for sunday had done some other camera work for another performance right before that, for which he'd rented some high-end DV-capable cameras. So we broke down the two low-end set-ups, set up the high-end cameras, connected them to the laptops, recalibrated the whitebalance and the diaphragm setting, and restarted the streams. Then one laptop started failing. Since we had had to remove one camera anyway, I just replaced it. By that time, I had about 15 minutes left before sunday's performance would start, so I went to prepare for that.

After the performance had finished, I found out that something had gone wrong with the sound of sunday's performance; rather than music, we only heard crackling all the time. Luckily, the sound had also been separately recorded to a different medium, and that recording is fine, so we only need to resync the audio to the video, which should not be a problem.

All in all, I had an extremely busy weekend. The alert reader will note that I didn't mention 'food' anywhere in the above paragraphs, mostly because I hardly ever found the time to eat. But it was also extremely satisfying. We still have some postprocessing to do, but I expect I'll put some videos online once we've done that. They're truly stunning, at times.

And then yesterday I still had to spend some time writing my DPL platform, and doing some campaigning work. All in all, I didn't find my bed until approximately 4 AM... oh well.

I look forward to the election time, and hope that I will do well. I don't need to win, but I'd hope my result will be at least as good as the last time...

Update: we used the theatre's audio setup, not video setup -- oops :-)

Fri, 05 Mar 2010

Netgear WNDR3700 and OpenWRT

I wanted a machine on which I could easily run OpenWRT. So I'd went to the #openwrt channel on freenode a while back, and just asked for suggestions; people suggested to me that the Netgear WNDR3700 was a good choice, so I ordered that.

I assumed that it would be easy enough to install OpenWRT on this device, but hadn't actually looked into it, planning to wait with that until the device had arrived. Little did I know that the machine actually comes with OpenWRT preinstalled. Now there's an interesting twist.

Now you do need to run some "telnetenable" thingy to be able to get a shell, after which "telnet <device>" gets you a root shell (with no username or password by default). Supposedly you should update that by using "passwd", but they managed to break that in the firmware that comes with the device.

I am missing a few things, though.

root@WNDR3700:/bin# dmesg
/bin/ash: dmesg: not found
root@WNDR3700:~# uname -a
/bin/ash: uname: not found
root@WNDR3700:~# hexdump /bin/config |more
/bin/ash: less: not found

Unh?

root@WNDR3700:~# alias
more='less'
vim='vi'
root@WNDR3700:~# 

Aahh.

And for those who were wondering: no, it does not have any 'vi' installed, either.

Oh well.

The fun thing is, this device has a USB connector, too; so it should be possible to connect a USB storage device, install Debian, and use it as a very potent home server/router/switch/whatever. That'd require me to understand how hostap works, though, which I haven't played with yet. I'm sure I'll figure that bit out -- at some point.

Wed, 03 Mar 2010

dpkg vs RPM

Thomas blogs about some issues he had with his N900's facebook plugin. This post isn't about that, as I don't use facebook.

But as part of his blog post, he mentions the following:

This reminded me of a pet peeve I have with those people who claim Debian’s packaging system to be far superior to rpm – apparently dpkg doesn’t have any equivalent of rpm -qv which allows you to verify that the files that should be installed by a package are indeed on disk

True, probably because the script would be so trivial:

for i in $(cat /var/lib/dpkg/info/nbd-client.list)
do
	[ -f "$i" -o -d "$i" ] || echo "$i missing"
done

There, that wasn't hard, was it?

Now I'm not sure whether rpm's -qv option actually checks the checksum of the files, too. If it does that, then the semantically similar way would be:

(cd / && md5sum -c var/lib/dpkg/info/nbd-client.md5sums)

... except that MD5 is totally and utterly useless these days, and that we should be changing to something else. And that md5sums is an optional feature, provided by some, but not all, packages. And it may also be that maemo packages don't have md5sums (which would make sense). But, anyway.

Wed, 17 Feb 2010

Booked flights

Whee.

As usual, I'll be there the whole time, both for debcamp and debconf. In addition, since I'll be halfway there anyway, I'll be paying my niece a visit after the conference; she lives in Portland, OR.

Should make for a good holiday, I would say.

Local kernels

LC_ALL=C debian/rules debian/control
md5sum --check debian/control.md5sum --status || \
		/usr/bin/make -f debian/rules debian/control-real
make[1]: Entering directory `/home/wouter/debian/other-peoples-source/linux-2.6-2.6.32'
chmod +x debian/bin/gencontrol.py
debian/bin/gencontrol.py
Traceback (most recent call last):
  File "debian/bin/gencontrol.py", line 331, in 
    Gencontrol()()
  File "debian/bin/gencontrol.py", line 14, in __init__
    self.process_changelog()
  File "debian/bin/gencontrol.py", line 305, in process_changelog
    (distribution, version))
RuntimeError: Can't upload to unstable with a version of 2.6.32-8~local1
make[1]: *** [debian/control-real] Error 1
make[1]: Leaving directory `/home/wouter/debian/other-peoples-source/linux-2.6-2.6.32'
make: *** [debian/control] Error 2

The issue at hand was that I'd created a version of '2.6.32-8~local1', to document that I'd locally branched version 2.6.32-7 with that one config option turned on, but that my version should not be deemed larger than 2.6.32-8 (signalled by the ~ and whatever follows that). However, something somewhere in the Debian kernel build system (I was unable to figure out what, exactly) disliked that version number and told me I could not upload to unstable with that version. So it borked, and told me I had to fix my version.

Well, no, I don't want to do that. Instead, I wanted to disable that check somehow. Turns out that isn't too hard; gencontrol.py not only checks the version number, it also checks the target distribution. So if you don't want to upload to unstable, you just need to tell the tool that:

-linux-2.6 (2.6.32-8~local1) unstable; urgency=low
+linux-2.6 (2.6.32-8~local1) local; urgency=low

Simple, but you'd need to know.

Mon, 15 Feb 2010

Hum.

I wonder how these people will react to this.

At least it's going to be somewhat more open, I guess. Which is good.

Fri, 12 Feb 2010

FOSDEM 2010...

... is over (for almost a week now), and it was a blast again.

If you went to one of the distro devrooms, I would appreciate it if you were to reply to this mail. We need feedback to improve stuff for next year.

Thanks.

In related news, I've uploaded the slides of my (unexpectedly horrendously successful) talk here

Sat, 30 Jan 2010

On MySQL and Oracle

I think Monty has well and truly lost it.

The European Commision, after careful consideration, has cleared Oracle's purchase of Sun:

The Commission's investigation showed that another open source database, PostgreSQL, is considered by many database users to be a credible alternative to MySQL and could be expected to replace to some extent the competitive force currently exerted by MySQL on the database market.

I'd go one step further, and would say that MySQL is not a credible alternative to PostgreSQL. But whatever. Hopefully, if MySQL fails, then PostgreSQL will (finally) get the attention that it deserves. I'll have a real database every time over this piece of... anyway.[1]

This is a fair argument, and to be sure it is certainly not a problem for anyone to migrate from MySQL to a MySQL fork, or (with some work) from MySQL to PostgreSQL. But Monty seems to disagree, and now tries to get Russia and China to block the merger.

What's next, Andorra?

[1] comments on this blog item in defense of MySQL will be vigorously moderated away. MySQL is a POS that falls over if data is corrupt, that corrupts its own data (most distributions call 'mysql_recover' in their initscript for a reason), and whose C API does not properly support cursors unless you want to block concurrent access until the cursor is closed (paragraph 3). Every time a customer asks me about MySQL, I vigorously recommend against it, because it's a bad idea.

Tue, 26 Jan 2010

Going, obviously

If you thought otherwise, you're crazy, but just for reference:

I'm going to FOSDEM, the
Free and Open Source Software Developers' European Meeting

This year I volunteered to organize the "distributions" devroom/track, because it seemed to be going nowhere, and the people who where supposed to do so were too busy with other stuff. I'm still not very fond of the idea of mixing all distributions in one room, but at least we managed to avoid complete and utter disaster wherein nearly no talks would have been submitted.

Let's see how it goes, now.

Fri, 22 Jan 2010

Clijsters out?

Whoa.

Kim Clijsters, Belgium's number 1 female tennis player of the moment, just got booted out of the Australian Open by Nadia Petrova. Not what I'd expected—especially not with this kind of score; 6-0 6-1. To call this "unexpected" would be a severe understatement.

Seriously.

That leaves Belgium's hope with Justine Henin or Yanina Wickmayer. I say "or", because they'll next meet eachother in Melbourne. Sounds like an interesting match, indeed.