Skip to content

Mountain View, TAPFS and yet another gallery

Writing from Mountain View again! Landed on Thursday, spent one day at work so far and today I got my bicycle fixed up so I can use it for commuting again. It's nice how year after year, the thing still works for me, all it needs when I come is some extra air in the tires. :-) One thing California is really not doing well this year is the weather, though. It's raining for two days already!

In other news, I should definitely be plugging The Australian Pink Floyd Show in this post. They were in Dublin about a week ago and they're amazingly good. Even a singer that sounds a lot like Roger Waters! The show was great too, with inflatable animals and everything, and the music sounded perfect. This tour they're playing all of The Wall, and for that that means not just a "copy" of the CD, but also many of the little filler pieces that PF used to play during the concerts.

Also working on a bit of OSS these weeks, adding more "diversity" to the already bloated landscape of gallery webapps. I'm making a difference though, SRSLY! I found myself making a lot more pictures since I bought my first dSLR and many of them aren't really part of an album/event or anything like that. I could just put them on Flickr or Picasa and be done with it, but that'd break my time-wasting tradition of hosting everything myself.

I already use F-Spot to manage my pictures, so it'd be nice to have a web gallery that can automatically use tag information from F-Spot. Turns out there are two programs that can do this already. They're not for me though; they automatically export everything, and there are pictures that I'd rather keep for myself. :-P

I then tried to adapt "original" to my wishes, but gave up when I saw it doesn't quite use templates and am rewriting it now using web.py and Cheetah templates. Going well, but TBH I feel homesick to PHP. Not that it's such a great language, it's more that I fail to understand why there are 982397832 different webapp frameworks for Python/WSGI/mod_python/whatever instead of just one that actually works.

This is a work in progress, and the progress is good. :-) Once it's done, I'll be able to post pictures here of my new radio-controlled airplane and other neat stuff. Yaaaay...

Pulling a JournalSpace ... almost

Wednesday, I had this very friendly mail in my INBOX, from mdam:

QUOTE:

This is an automatically generated mail message from mdadm running on tosca

A Fail event had been detected on md device /dev/md1.

Faithfully yours, etc.


There was little reason to panic, since I had a spare disk installed already. A few man- and mdadm commands later, the array was resyncing. I walked away from the screen, confident that there was nothing to worry about.

How wrong could I be! Somewhere at 99% of the recovery process, one of the existing disks threw a read error. This was too much for md, and to punish me it marked two disks as spares, one as failed and only one as still working. RAID5 may be designed to deal with broken disks, but it does have its limits. ;-) This is where it got scary, especially since this machine is, say, 1300km away from me.

With some remote help, I managed to get the machine rebooted in single user mode with an sshd running. The disks were all available again, but the superblocks were sufficiently broken that md didn't want to construct the LVM array anymore. (Fortunately the rootfs array was not a problem!)

Anyway, I spent that night copying the raw partitions over to another machine. Tried to construct an array there, but things were untable, md often tried to resync the partitions (bad idea), or simply didn't want to run it for me. Instead of trying to make this go, I decided to write a little tool to do the dirty work for me. And that, reader, is why I'm writing this. :-)

To my surprise, I couldn't find any tool to do this on FreshMeat. Sure, when I search for "RAID recovery" on Google, I get plenty of ads for "Professional RAID recovery tools", but I don't want to pay $$$$ for a program that XORs a couple of GBs of data for me. :-P

So, behold: raidrec. Comes with no documentation, other than this blog article and the (long) comment at the top of the file. I hope it'll be useful for someone some day... It was for me. I have all my data back, LVM picked up all my volumes perfectly, and a few fscks later I managed to migrate all my VMs to OpenVZ running on a desktop elsewhere in the house. At least ruby (my workstation here in Dublin) isn't the only desktop machine being a part-time gaast.net webserver anymore. :-/

If anyone didn't get the JournalSpace reference (which fortunately isn't very accurate here anyway): http://journalspace.com/

F-Spot "plugin" for printing pictures via PhotoPrintIt

A little while ago I wrote a little Perl script that can be used to upload a bunch of pictures to PhotoPrintIt (Dutch people may know this from the shop Kruidvat). Together with a tiny .dll file this can be used as an F-Spot plugin to get pictures printed. Just select the ones you like in the picture browser, File->Export->Printing Service, wait for a little while, enter your address information and you're done. 2/3 days later you can collect your pictures at a local shop (or they'll be shipped to your home).

I'm not actually using this myself and don't intend to support it or spend a lot more time on improving it (not to mention adding a GUI), but maybe even in the current form it's already useful to someone. Just get the source using bzr: http://wilmer.gaast.net/downloads/printpics/.

Unbricking your Netgear ADSL router without Windows

So for about a year I have a DSL modem and a separate router (running OpenWRT) here. Simply because the average DSL router has crappy software (no decent CLI, connection tracking for nothing more complicated than TCP and for only a few hundred of them, crappy wireless ... well, you get the point). So I decided to buy a Linux-powered DSL router, the Netgear DG834G. I hoped for one with an AR7 board, because that one seems very well supported, but I received a v4 which has a Broadcom board instead. :-(

Anyway, Netgear is still pretty decent. The stock firmware comes with a telnetd (must be activated via the webserver though), and (well, forced by the GPL) they put tools on-line which I can use to rebuild firmware images, which I already abused to remove the multi-lingual web interface and use those precious kilobytes for a tcpdump binary instead. :-) Adding a kernel with IPv6 support is going to be more complicated though.

Anyway, I should first focus on making the thing actually wortk with my IPoA ADSL2+ connection.... sigh

But after bricking the thing once I did manage to write up a tool (based on a half-finished tool written by someone on the OpenWRT forum) to fix that very problem. These routers can be reflashed without any serial cable or whatever these days, using the power of raw Ethernet frames (R). It's a gross hack, but it works and is reasonably convenient. It's up for download for anyone who needs it. Be careful, only use it when things can't get any worse anyway!

mail2trac.pl

Yesterday I finally found an excuse to play with WWW::Mechanize. Wrote a little script that parses an e-mail and posts it as a ticket comment on BitlBee's Trac page. Just posting it here now in case someone else is interested. It works pretty well already, I just have to find something to MIME-decode messages, otherwise things look a bit ugly sometimes and signatures may not be detected and stripped properly.

The script is at: http://wilmer.gaast.net/downloads/mail2trac.pl. Just add it to your procmailrc or /etc/aliases and you're done!

[edit] MIME-decoding is there too now. That was a hell to implement... :-(

rxvt-unicode and ISO 14755 mode

Now that my (and pretty much every other) machine uses UTF-8 by default, I was pretty much forced to ditch rxvt in favour of rxvt-unicode. Unfortunately the rxvt-unicode authors think attaching some keycap picture insert mode to the Ctrl-Shift key combination (which is easy to hit by accident) would be HANDY. Even handier, it can only be disabled at compile time.

Thanks for nothing guys, I really hope there's at least one person on this planet who agrees that this is handy ... I'm afraid most people who accidentally hit Ctrl-Shift every few minutes don't agree.

So, behold:

CODE:
wilmer@ruby:~/bin$ cat fix-rxvt.sh 
#!/bin/sh -ex
cd `mktemp -d /tmp/rxvt.XXXXXX`
apt-get source rxvt-unicode
sudo apt-get build-dep rxvt-unicode
cd rxvt-unicode-*/
perl -pi -e 's/--enable-iso14755/--disable-iso14755/g' debian/rules
dch -n 'ISO 14755/Keycap mode SUCKS!!!'
fakeroot debian/rules binary
sudo dpkg -i ../rxvt-unicode-lite*deb

For all you Debian+rxvt-unicode users out there waiting for this bug to be fixed... :-)

[edit]Added dch command to make sure apt-get doesn't reinstall the original package every time.[/edit]

Intel X.org driver, PAL TV-Out, colours please!

Got a little bit confused by this bug report while trying to get the TV-out on my mainboard working properly. As any European TV, mine wants PAL signals, not NTSC. The bug report gave me the impression that there should be separate PAL/NTSC mode definitions. But in the current driver, this isn't the case anymore.

Instead, they now use RandR properties to maintain this setting. And RandR, at least for properties, seems to be read-only .... soooo, how does it work then???

Well, try something like this:

CODE:
Section "Monitor"
        Identifier      "TV"
        Option          "TV Format" "PAL"
EndSection

Took me a whole weekend to find this, but at least it works now, in full colour! This didn't seem to be very well-documented to me, so I hope this post will help. If it doesn't work for you, maybe your TV doesn't understand S-Video. There's a very simple hack to solve that issue too. All you need is two wires, no need to solder anything. :-)