Mich 2005 - Lent 2006 NST/CST IA Mathematical Methods
April 2005 Sudoku
Apparently there's this new puzzle craze called Sudoku sweeping the world. I hadn't heard of it until I went to my parents house for the weekend and saw my mother doing one. It looked a bit tedious to me, the sort of thing which it should be possible to teach a computer how to do it in a couple of hours. My Sudoku solver source code proves this and an apparently very difficult example input file is also online. Compile the source (you might need GNU libc, but only for the file I/O) and pass it the input file on stdin to see it working. It's a quick hack to prove my point so don't expect perfection.
Update: I find solving these puzzles strangely relaxing. I have developed a Sudoku worksheet which is of great help especially on the extra-hard puzzles from newspapers. You can colour in the boxes at the bottom when you eliminate possibilities and this allows you to spot all sorts of clever patterns like the so-called 'X-Wing'. The solver program above can't do them, it just guesses.
Michaelmas 2004 - Lent 2005 CST IA Discrete Maths
Easter 2004 Part III Essay
In Part III Maths we have the option of writing an essay in place of one of our exam papers. I chose to write one entitled Set Theory Without The Axiom of Foundation as suggested by Dr Thomas Forster. Questions and comments are welcome, but please don't send me corrections, as I've already submitted it for assessment!
Update: I was awarded about 85% for that essay. Yay.
Spring 2004 Random Sleeping
My subversive tactics for downloading comic strips from websites without the owners noticing include a sleep for a random amount of time. In a recent clearout I managed to hose the source for this very simple program, so I've rewritten it properly using autotools and can therefore release it into the wild. You may think that 400k of source is a little excessive for this simple task, and you would be right. But here it is anyway.
Winter 2003 Spectrum Analyser
There are lots of pretty spectrum analysers out there. I have yet to find one which is genuinely useful for audio analysis, which involves the following features:
- Input from a soundcard.
- Logarithmic intensity scale, with markings in dB.
- Zoom. We don't often need to see all the way from floor to ceiling.
- Frequency scale divided into 1/3-octave bands, marked in Hz.
- Documentation on exactly what calculations are going on behind the scenes. Visible source will do, explicit correct docs are better, both is best.
- Flat response to pink noise, not white noise (an artefact of the log frequency scale, if done correctly).
- Some degree of control over latency and averaging. If we are dealing with a stationary signal, low-latency is pointless.
There used to be one called X/RTA which, though ugly, did most of this. I think it wasn't open source and didn't document itself particularly thoroughly, so we were never sure it was using the sampling rate it thought it was, but this is a moot point because it seems to have disappeared.
A further problem is that, after a minor accident with the x86 laptop we used to use for sound analysis, every laptop we can get our hands on now runs only Mac OS X. It looks like any spectrum analyser is going to have to be portable to Macs too.
Because of all this, I'm writing my own. Here is freqan v0.21 (MD5) (PGP). It depends on you having already installed the development packages of SDL v1.2 and FFTW v3 and contains code from PortAudio v18. It should compile straightforwardly on Linux and it may compile, with some trouble, on Cygwin and Mac OS X. It has been coaxed into compiling and running natively in Win32 using MS Visual C++, and the necessary project files and instructions for this are included in the tarball.
It seems that the SDL libraries distributed with Fedora Core 2 were compiled without X support. If you get messages like
freqan: setup_graphics(): SDL_Init() (Invalid argument) freqan: Unable to set-up graphics (Invalid argument)
on startup then this is the problem. Install the X11 development header files, recompile SDL, and you will be fine. Alternatively, run it from outside X and use SVGALib or a framebuffer.
Easter/Summer 2002 -- Present Photos
A few photos of Alderley Edge are available. Just got me a new digital camera and some shots of interest (to me at least) are also available. If it's termtime and my computer is switched on then this is a link to my full photo gallery.
Lent 2002 Clare Ents Techies
Organising a team of sound engineers has been likened to trying to herd cats, but I gave it my best shot. The rota for Lent term 2002 is online for posterity. The job has now passed to Isobel Piper (imp24), Tom Carver (trc26) and Rich Smith (rts23) so direct questions that way, but I'm still involved in the Cellars in a non-managerial role.
October 2003 Count the men
Count the men, then wait 10 seconds and count them again. What's going on here?
Summer 2001 Clare RATS Website
I (have been) volunteered to be webmaster for the Clare RATS and have elected to redesign their website. The new version has been released at http://www-rats.clare.cam.ac.uk/. It's my first attempt at web design in a long time (and my first try at graphic design ever) so it has been accomplished largely by plagiarism and guesswork, but it is being actively developed and I will listen to suggestions.
Lent 2001 Maths Notes
I managed to get organised enough to get the notes from Analysis I, Probability, and Vector Calculus typed up from Part 1A of the 2000/2001 Mathematics Tripos, and I've made them available in PDF format.
A piece of advice to anyone who is thinking of using these notes: Go to the lectures too. Some who know me could rightly accuse me of hypocrisy here but I now have the advantage of hindsight, and I definitely fared better on the courses I attended better this year.
November 2000 The Rational Square Theorem
This theorem states: If a rectangle can be tiled with a finite number of squares then the ratio of the lengths of its sides must be rational. It caught my attention so I tried to prove it. My proof is here. This is not a complete proof: there is a tiny hole buried deep inside it but the way to fill it eludes me still.