Skip to content

Projects

Things I've made, run or helped happen.

2026–in progress

Probe Generators

Can you train a metamodel to turn a natural-language description of a concept straight into the weights of a classifier for it?

The pipeline so far: mine 15M FineWeb documents, cache their Qwen3.6-27B activations and cluster them in the model's own activation space. Then augment this dataset with an automatic on-policy behaviour elicitation pipeline.

2026–in progress

Reframe

A tutoring system that runs inside a terminal and an Obsidian vault. You write every note closed-book, from memory. It sources, schedules, generates curriculums backwards and draws a graph representation of the forgetting curves.

2026

Cambridge Battlecode

An international programming competition I founded: 1,500+ participants write Python bots for a Factorio-style game, and the bots fight it out on an online Elo ladder. Inspired by MIT Battlecode.

Everything else

11
  • 2025CamHack & Cambridge Game JamLead organiser of Cambridge's largest hackathon: 300+ students, 30 hours, theme 'Unintended Behaviour'. Highlights included a piano that types and a 'misinterpreter' that compiles up from C to Python to Mindustry. Then had the idea for a game jam open to board games as well as video games (theme: 'Set in Stone'), and ran that too.
  • 2025upstreamedCUDA support for ClangIRInitial CUDA support in ClangIR, LLVM's new Clang IR: three patches merged upstream (device variables, the built-in surface type, texture types), validated by compiling and running every PolyBench kernel. Mentored by Bruno Cardoso Lopes.
  • 2026Towards Automated Mechanistic InterpretabilityMy Cambridge dissertation, three attempts at automating interpretability: a JumpReLU sparse autoencoder on a CLIP vision transformer, a faithfulness audit of activation oracles by position patching and causal tracing, and a first description-to-probe generator (which became the project above). Top-scoring dissertation prize, 2026.
  • 2025–26Research intern, Geodesic ResearchPassword-triggered chain-of-thought poisoning on Llama-3 to test whether a triggered behaviour survives later safety training; and an attempt at a model organism for 'generalisation hacking'.
  • 2025GPU software at ArmIntern on the Mali / Immortalis runtime diagnostics team: built a simulation of a new Mali GPU used as the hardware's correctness reference, and implemented native buffer decompression on the GPU, exposed through Vulkan, OpenCL and OpenGL ES.
  • 2025–QuackA cosy weekly co-working group for passion projects.
  • 2026–in progressA research harnessA research harness to get Claude to make experimental decisions for me overnight (evaluate which decisions are big-if-true and big-if-false) and generate me a tree which I can see in the morning.
  • 2026HyprLeniaA real-time 3D particle Lenia sandbox: continuous-space, continuous-time Game of Life, running entirely on the GPU. Custom OpenGL kernels with tiled shared memory and spatial hashing make it three orders of magnitude faster than Google's Flow Lenia implementation.
  • 2026EmbeddleA word game: guess another person's secret word, and each guess tells you the cosine similarity between its embedding and theirs.
  • 2024Software engineer intern, Cambridge KineticsMade one of their core database lookups 200× faster on average by changing the approach, and added image and audio ingestion into the database via an LLM.
  • 2022–23AlphaZero-style chess engine from scratchMonte Carlo tree search, a self-trained CNN and a self-play training loop, in C++ with no engine libraries. My A-level project; full marks.