QoTD: Nathan Willis

“I can’t heap enough praise on the interface. Simplicity is the watchword, and Thoggen gets it just right, presenting the user with the appropriate choices and working out the necessary details itself. Transcoding video is complicated, but Thoggen manages to make it simple. A lot of other apps could learn a lot from its design decisions.” — Nathan Willis, Get Thoggen, and leave your DVDs at home

Children and Cake

It has been suggested that the parodies of Bill Gates in recent posts are unfair. I have been asked to imagine my face on such images. Why imagine, when we have The GIMP?

Jeff Waugh Loves Dumb Jokes

It has also been suggested that I go and “do something to make opensource competitive”. So, stay tuned for an interesting announcement from the GNOME Foundation in the coming weeks. :-)

Rocket Powered Cheerios

Metacity is a “boring window manager for the adult in you. Many window managers are like Marshmallow Froot Loops; Metacity is like Cheerios.”


But adding tools like Brightside and Devilspie to the mix is like strapping a rocket to your Cheerios box. They turn metacity from a lean, mean window managing machine into a lean, mean, fully programmable, bling-to-the-max window managing powerhouse!

Cheerios Blastoff

Seriously Belgium

Source21 @ FOSDEM 2006

During FOSDEM I was interviewed about GNOME and Ubuntu by a Dutch online video magazine called Source21.nl. Not only was I wearing a collared shirt and jacket, but for some reason I had a very serious expression on my face for most of the interview. It might have been something to do with the very cold temperatures and the fact that I was wearing sandals. Not a good combination. But… the serious face disappeared quickly when I had the opportunity to pimp Gimmie. :-)

Watch the interview, sadly only in Windows Media and Quicktime formats.

Foxy Feline

I have enjoyed watching for a particular point in the time-based release cycles that I’ve been involved in over the past few years — the moment at which the community starts to talk about The Next Release. It generally pops up when developers discuss changes that have to be punted to The Next Release, due to the lock-down freezes imposed in the lead up to a release.

An upstream project like GNOME will reach this point later than a distribution such as Ubuntu. This was a surprise to me, but it makes a lot of sense. An major upstream project like GNOME defines the software landscape, and has relatively few external technology dependencies. When interesting infrastructure technologies such as Avahi or Xgl become ready for use late in the release cycle, that’s a catalyst for talking about The Next Release, but most of the time the focus is on right now.

Distros face a different issue — the entire gamut of Free Software projects, more or less, are dependencies. It’s like lining up ducks on buttery ice. So if a new gcc is barfed out of the buildchain soup kitchen, you have to think very hard about whether it’s worth the pain to make the switch. Ideally, your buildchain goals will be defined before you even start a new release tree. You get to know the level of difficulty other project updates pose after doing it for a while. GNOME is easy. OpenOffice.org is hard. That kind of thing.

So while GNOME developers have really only been mentioning 2.15 for about two or three months, the “dapper+1″ release has been a hot topic in the Ubuntu community for almost the entire dapper cycle. I imagine that has quite a lot to do with dapper being a pretty conservative release in Ubuntu terms, with its long-term support commitment high on everyone’s minds.

We don’t know what the “dapper+1″ release name will be until it’s announced, but given that we’ve started tracking the alphabet, I’ve been pushing for “edgy”. That fits very nicely with our major goal for The Next Release, which roughly translates to “OKAY PEOPLE, IT’S TIME TO LIGHT THE CRACKPIPE AGAIN!” We’ve been so focused on making dapper rock solid for massive adoption that we haven’t done a huge amount of exciting, bleeding-edge stuff. Well sure, Matthew Garrett has, but he really enjoys the taste — and texture — of blood.

Anyway, to get to my point, I’m going to totally abuse the conventions of talking about The Next Release: I can’t wait for edgy+1. I want it to be called Foxy Feline. Not just because it’s going to be waaaay foxy, but because we get to sing…

We built this kitty!
We built this kitty!
We built this kitty on rock and roll!

There. I said it.

pyblosxom to WordPress revisited

I migrated to WordPress a while back, and posted a pretty lame redirection setup for Apache. Since that initial migration, I’ve migrated Pia to WordPress as well, watched my web stats, and tweaked the redirection rules. Of course, everyone’s pyblosxom install is a bit different, but these rules will get you 80% of the way, should you decide to migrate yours. This recipe is for an in-place conversion, using the same base URL. Similar rules will work in other situations.

We’re going to be using mod_rewrite, and it’s often very helpful to watch the rewrite logs to make sure you’re doing the right thing, so I always put commented out rewrite log settings in my configurations.

RewriteEngine On
#RewriteLog /srv/example.com/log/rewrite.log
#RewriteLogLevel 5

Jaq directed me to mod_rewrite’s very cute RewriteMap feature, when I was trying to translate pyblosxom’s three-letter month strings to numeric months.

RewriteMap monthmap txt:/srv/wordpress/monthmap
RewriteRule  ^/blog/([0-9]{4})/([A-Z][a-z]{2})(/?.*)$  /blog/$1/${monthmap:$2}$3 [R=permanent]

The monthmap file looks like this:

Jan             01
Feb             02
Mar             03

… and so on.

Then we get into the meat of each post’s URL redirection. My pyblosxom posts were given UNIX timestamp names, so this ends up being very simple. I tweaked the WordPress RSS importer to make sure that each post slug (or ‘post_name’ in the database) was set to the UNIX timestamp filename I had used in pyblosxom. That means I can pretty well rely on any 10 digit string to be the name of one of my posts, so figuring out the redirects is just a matter of handling all the strange pyblosxom URL forms, and passing the 10 digit string to WordPress.

RedirectMatch permanent  /([0-9]{10})$  /blog/index.php?name=$1
RedirectMatch permanent  /([0-9]{10})\.html$  /blog/index.php?name=$1
RedirectMatch permanent  ^/blog/category/.*?/([0-9]{10}).*$  /blog/index.php?name=$1

If you didn’t use easily machine readable post names, you will probably have to change the URL base of your blog, especially if you’d used pyblosxom categories. I found it quite difficult to handle my categories, so I had to do some ugly custom redirects for each base category name:

RedirectMatch permanent  ^/blog/((issues|people|projects).*?)/index.html$  /blog/category/$1/
RedirectMatch permanent  ^/blog/((issues|people|projects).*?)/?$  /blog/category/$1/

Hopefully, like Pia, you didn’t use categories in pyblosxom at all, so you don’t have to worry about this crap. :-)

Finally, we have to handle the RSS feed. pyblosxom (by default) uses a query string to indicate the ‘flavour’, so we have to do some funky mod_rewrite foo:

RewriteCond  %{REQUEST_URI}  ^/blog
RewriteCond  %{QUERY_STRING}  flav=rss
RewriteRule  ^(.*?)/?$  $1/feed/? [R=permanent]

(Very astute readers will understand the semantic difference between what that means in pyblosxom, and what you’d get in WordPress. I wasn’t too concerned about such a tiny edge case, myself.)

I had to use some tricks to get everything imported into WordPress in a useful way. Firstly, I modified rss2renderer.py to spit out my entire blog history. Then I modified the RSS importer to set ‘post_name’ from the imported <guid> element, allowing me to redirect based on the pyblosxom entry name.

Why bother? Because cool URIs don’t change. :-)

Bill Gates Hates Children

Bill Gates Hates Children

“If you are going to go have people share the computer, get a broadband connection and have somebody there who can help support the user, geez, get a decent computer where you can actually read the text and you’re not sitting there cranking the thing while you’re trying to type.” — Bill Gates

Eat Yourself

From a recent article on Heise, very cleverly translated by Google:

“The driving – and above all financing – strength behind Ubuntu is Mark of Shuttleworth, which a name as a space tourist on EAT YOURSELF made.”

I can assure Heise readers that Mark has better taste than to be an autophagist. Well, marginally better taste. But hey, if Heise reckons it’ll pay, I’ll give it a run. <homer>Mmm, me.</homer>