You may remember this post from a while back. I’d got myself a Wii Motion Plus and was playing about with getting reading from it onto my PC.

Well, the reason I was doing that was that I wanted to build a quadrotor.
Continue reading

Posted in Uncategorized | 7 Comments


After a particularly frustrating marathon debugging session on Sunday, I was inspired to write a poem.
Continue reading

Posted in Uncategorized | Comments Off

Automatically downloading Orange bills

I’ve been getting annoyed recently with Orange’s policy of deleting user accounts from their website after relatively short periods of inactivity. I don’t want to have to log into their website just to avoid having to register for a new account the next time I want to use it.

So I wrote a script to log in on my behalf. While it’s logged in, it may as well do something useful, so it downloads the PDF versions of my bills, skipping bills which it has already downloaded.

It’s in perl and uses WWW::Mechanize to do most of the work.

You can pull the source code using monotone from mtn.coolfactor.org (branch org.coolfactor.scraping.orange) or you can browse it here.

Posted in Uncategorized | Comments Off

Laser Interferometry

This weekend saw the Space Expansion Party at London Hackspace. I brought along a laser pointer, and set myself the task of building a laser interferometer out of whatever I could find lying around.
Continue reading

Posted in Uncategorized | Comments Off

Vision and chessboards

One of my goals for Lightscript is to be able to perform automatic calibration of moving lights. A concept central to Lightscript’s handling of moving lights is that they should all use the same co-ordinate system, but that requires knowledge of the position and orientation of the lights. I’ve been through several attempts at coming up with an automated way of estimating the pose of the lights, but so far all of the attempts have been met with accuracy issues or other fundamental problems.

My latest approach has been to use a digital camera and apply computer vision techniques. To this end, I’ve been been playing with OpenCV.
Continue reading

Posted in Lightscript | Comments Off

Hardware compatiblility

I’ve spent a substantial chunk of this weekend upgrading a server which was somewhat lacking in discspace.

It’s a fairly old machine and as such doesn’t have SATA, but that’s not a showstopper. One PCI SATA card later, and a couple of 2TB SATA hard drives, and it’s good to go. In theory.

Except the SATA card was failing to recognise the hard drives.
Continue reading

Posted in Uncategorized | Comments Off

New photo gallery

For years, I’ve had a simple public photo gallery hidden away with a semi-private URL, built with swiggle, which is a very simple gallery program which generates static indexes and thumbnails. It’s quite efficient, but not especially pretty. It’s time to change that.
Continue reading

Posted in Uncategorized | Comments Off

Hacking the Wii Motion Plus

I’ve been looking for a 3-axis gyroscope recently, and I came across the Wii Motion Plus. Fortunately, other people have done the hard work of reverse engineering the protocol and written this up elsewhere. In short, it’s a nice simple I2C interface.

So I bought one.
Continue reading

Posted in Electronics | 7 Comments

Dead slug

My slug died. No, not the sort that shrivels up when it comes across salt, but my Linksys NSLU2.

As it turns out, the power supply is known to be a bit flaky. Again, dodgy electrolytic capacitors. Who’d have thought it, eh?
Continue reading

Posted in Electronics | Comments Off

Haskell, I/O and Monads

I wanted to revisit writing code in Haskell, and in doing so try to understand the I/O model a bit better. I spent quite some time reading texts and tutorials on monads, and discovered that most of them are utterly inaccessible unless you already understand monads.

Fortunately for me, I came across this blog post which gave a very good introduction to the concepts involved, while being down to earth enough that it didn’t require prior comprehension of monads.

Armed with this new level of understanding, I thought the best way to apply it would be to attempt an implementation of the UNIX sort program.
Continue reading

Posted in Uncategorized | Comments Off