A greasemonky script for squadlist.co.uk

One of my hobbies is rowing, a sport that requires lots of organisation- you need one rower per seat in the boat plus one cox (most of the time) and often a bank party and/or coach to all turn up at the same time. At my club this problem is tackled using a website where each member enters their availability; this data is then used by outing cordinators to schedule sessions when the correct people can make it. On the whole this works well, but the website does some things that make it more awkward than it needs to be when I come to filling in my availabilty:

  1. Closed outings are still displayed; they clutter up the list without providing any useful information (simply being available doesn’t mean that I’m actually rowing)
  2. There are a series of options that are redundant for our club (for some reason the creator of the software thinks that coaches want specific excuses for unavailability)
  3. There are constant suggestions of going rowing at silly o’clock in the morning. This is more of a problem with the outing co-ordinators, but still something that can be fixed by software
    What squadlist used to look like
    Continue reading

Adding a current limiter to my MOT welder

Last year I built myself a welder using microwave oven transformers; I used it for a variety of things, but it was far from finished. Recently I’ve done some work to finish off the main transformers and to add a current limiting feature.
Improved welder Continue reading

Baking a Hello World Cake

I have a soft spot for esoteric programming languages. They are (usually) perfectly functional languages, in the rather loose sense that they are Turing complete and thus capable of solving all the same problems as any other language; they do, however, function in an intentionally roundabout way. They include several types: those that minimise the instructions possible such that everything must be spelt out in the simplest possible terms, those that intentionally obfuscate in a parody of ‘real’ languages, and those that aim to represent the program as some other set of instructions; this is the class into which a language called chef falls.

The full specifications are here, however the general idea is to make the program look as much like a recipe as possible. Variables are ingredients, stacks are mixing bowls, input comes via the fridge, output goes via baking dishes and so on. The specification explicitly requires that “Program recipes should not only generate valid output, but be easy to prepare and delicious.”. Continue reading

A teapot stand that reminds me to pour the tea

I like drinking tea, however it’s not unusual for me to make the tea then get distracted and forget until 20 minutes later; this results in warm, stewed cup of disappointment instead of the tea I’d intended. To help prevent such tragedies, I’ve made myself a teapot stand that reminds me to pour the tea once it’s sufficiently brewed:
A teapot stand constructed from a HDD platter with a lead snaking out of the back and the edge of a circuit board just about peeking out from underneath Continue reading

Brother-proofing a christmas card

When we were younger, my brother and I had a game of ‘brother-proofing’ each others cards; this consisted of covering the envelope with as much tape as we could before we were told off for wasting it. This year I decided to revive this game; on Christmas day I presented my brother with his card:
A cuboid shape covered in parcel tape Continue reading

RoboNucleicAcid: Genetically Generated Robocode Bots

Genetic algorithms is the name given to a branch of computing that uses a similar process to biological evolution to discover good solutions to problems that have many possible solutions, some better than others. GAs are generally used where the fitness function (that is to say, the function that defines how good a solution is) is far too complex to even begin to work backwards to a good/best solution. Robocode is a Java teaching game that is played by programming the behaviour of simple fighting robots; it provides a good place to experiment with GAs as there are an essentially infinite number of possible bots which are only capable of having their fitness measured by pitting them in battles. Continue reading

Adding wi-fi to a Raspberry Pi without a powered hub

It is a commonly known problem that the Raspberry Pi cannot provide enough power for most USB wi-fi adapters. This can be solved with the use of a powered hub, however I have plans to integrate the Raspberry Pi into other devices; due to space constraints I decided that it would be better to convert a dongle to draw power separately to its data connection, also taking the opportunity to reduce the distance that it projects past the end of the board.
The modified dongle plugged into the top USB port of a Raspberry pi Continue reading

A script to download 4oD

Anyone living in the UK will be familiar with the superb video on demand service run by Channel4; while it does have years worth of programmes, it doesn’t have an option to view the content without an internet connection. This is particularly frustrating as my TV doesn’t have an internet connection, although it does have support for USB mass storage devices. To work around this, I’ve written a ruby script that downloads 4oD videos to local MPEG-4 files. Continue reading

Adding OTG functionality to a multi USB lead

I recently got my hands on a Nexus 7 tablet; while it is capable of supporting USB peripherals, like most tablets it lacks a USB A socket. Instead, the micro USB socket must be used with a USB OTG (On-The-Go) cable; this utilises the otherwise unused fifth pin in the micro USB plug to switch the tablet into host mode. To avoid having to carry around an extra, I’ve added a switch to allow a lead to function both in standard and OTG mode.
A multi USB cable with a switch added to enable OTG functionality Continue reading