My projects

I don’t create much new software these days, but I still find it a rewarding thing to do when I have the time.


BrachioGraph is the world’s simplest, cheapest drawing robot.

With a Raspberry Pi, three very cheap servo motors and some household materials, you can build a working pen-plotter in an hour or so. It turns out to be an excellent thing to do with children on a rainy weekend.

C is for Camera

I’ve spent a lot of time repairing with old film cameras, sometimes even successfully. They contain intricate interlocking mechanisms that implement complex sequential logic in very ingenious ways.

C is for Camera uses pure object-oriented Python to simulate one of my favourite cameras, the 1972 Canon 35mm rangefinder Canonet GIII QL17.

>>> from camera import Camera
>>> c = Camera()
>>> c.film_advance_lever.wind()
On frame 0 (of 24)
Advancing film
On frame 1 (of 24)
Cocking shutter
Applying aperture value ƒ/1.7 to iris
Light meter reading: ƒ1/16
Applying aperture value ƒ/16 to iris
Shutter opening for 1/128 seconds
Shutter closes
Shutter uncocked