Edit: turns out I'd left it unpublished for a reason, the sample code
was actually broken. Just go and read Gabor's article instead - and thank
him for testing my broken code!
I've removed the broken code from the article below.