Hi! I'm a programmer and (very) part-time neuroscientist from London, UK. I do consultancy and contracting through my firm Archaeopteryx. This is my personal site, which hosts a combination of blogs, personal projects, and articles about interesting things that I've been up to at work.

Amongst other things, I'm currently learning Rust, upskilling my Scala, putting together a 3D browser game with Three.js called 3L337, and launching a Swimming Training webapp called "Swimming Planner" - an Angular.js frontend over a Scala/Play API.

Sleuth (DOS Game from the 80s) reinterpreted in Javascript!

Play SleuthJS.

I'm sure lots of you out there remember the excellent DOS game Sleuth, which was written by Eric N. Miller in the 1980s. I absolutely loved it, and still play it at Christmas with the family. Unfortunately, it requires an emulator to run nowadays, which can be a bit fiddly.

I recently had a little bit of free time, so I coded up a clone of Sleuth that works in Javascript, so anyone with a vaguely decent browser can play it. I emailed Eric Miller, and he very kindly allowed me to release it with the name SleuthJS. It's inspired by Sleuth, but it's written pretty much from memory, so none of the text is the same. Dr. Miller's DOS version still has far superior narrative, so that is definitely worth a look too if you've got a copy of Dosbox.

Check it out here: Sleuth JS.

Finding the Minimum Set of Languages to Learn All Programming Paradigms

Hello World in Piet

Earlier this evening, I was wondering how easy it would be to learn (or experience) *every* programming paradigm out there. I've tried functional programming, object orientation and so on, but what about Array Programming, or Reflective Languages? The first of those two fills me with terror, mainly thanks to APL.

Predicting Eurovision with Country-Level Regression

There seem to be a few people out there attempting to predict the Eurovision this year using this technique or that, from the Guardian's tongue-in-cheek averaging out of past results, to Cold Hard Facts using Bayesian inference. I thought I'd throw my hat in the ring, with yet another equally fuzzy model.

Clock circuit and free run - the COLLIER-1 comes alive!

The COLLIER-1, as is.

So! This morning, I built a clock circuit, and wired it across to the Z80. The breadboard on the left hand side is the clock circuit. All those black leads on the left of the Z80 are the data bus, which I've wired to the ground to set up a NOP, instruction 0.

By constantly providing NOPs each time the processor requests an instruction, the system ought to start at address zero, go all the way to address 65535, and cycle around again. The LEDs are wired to the address bus, to give us an idea of the behaviour of the CPU as it cycles through the address range.

(Read more, and video!....)