Computing (distinction) and Biology (BSc Hons, First-class, Open University). I build scientific software - simulations, data pipelines and closed-loop lab automation.
A local, hardware-agnostic platform for closed-loop experimental optimisation. A proposal is compiled into a protocol, validated, executed, measured and fed back to the optimiser, and every step is stored as a separate versioned record. A protocol only runs while its content, validation policy and hardware capability hashes still match its passing receipt.
V0.5 runs the loop in simulation, with a human-in-the-loop mode and fixture-backed measurements standing in for real sensors. The hardware layer is the next step.
Jersey Outbreak Simulator (JOS)
An attempt at a realistic infectious-disease outbreak simulation for Jersey, Channel Islands. V1.1 was released after independent audits; the 44-replicate validation ensemble reruns with identical hashes. V1.2 is in development.
In 2021 I built a Raspberry Pi weather station, watched the readings drift on day four, concluded the sensor had failed, and threw the data away.
Rebuilding it against ERA5 reanalysis showed I was wrong. The sensor never failed - its sealed, unventilated enclosure cooked it whenever the sun was up and the wind dropped. The bias tracks solar load moderated by wind, vanishes at night, and moves coherently across three measurement channels in exactly the pattern passive heating predicts. A first-order correction recovers about half the data I'd discarded.
Every figure and number regenerates from the committed raw files and a cached reanalysis response. Clone it and check.
SXB390 - British spider guild analysis
Dissertation: does hunting guild predict how often British spiders are recorded, independently of family-level taxonomy? 734 species from the NBN Atlas, World Spider Trait Database and World Spider Catalog. Web-builders looked more recorded at first (p = 0.003), but the effect was small, model-dependent, and no longer significant once family structure was accounted for - removing Linyphiidae alone was enough to lose it. The pipeline reruns end to end from a dated data pull.
A monthly-timestep soil-plant-mycorrhizal carbon simulator: 21k LOC, mypy --strict clean, 234 tests, and a RothC core that reproduces Rothamsted's published 1852 Hoosfield worked example within published precision.
It also carries fail-closed publication gates. I ran them against my own model and six failed, so the downstream benchmarks were never run. It's a well-instrumented negative result - nothing in it supports the claim that mycorrhizal management increases persistent soil carbon, and it says so itself.
- nf-core/taxmarker #60 - read gzipped
--taxonomyand--sequence_weightsinputs, and tighten the input schema patterns (merged October 2026)
Regulate - live on the App Store
React Native / Expo iOS app for nervous-system regulation: 10 short, interactive tools, each matched to the state you're in (anxious, numb, angry or balanced). Solo build, released September 2026, free tier plus subscription.
howclose.to - live
An honest tech tree for civilization: visual progress tracking for humanity's bottleneck technologies - fusion, AGI, xeno-transplants, geothermal. Each problem gets a page covering what's done, what's left, and what it unlocks.
The brand rule is honesty, enforced in the design: no invented single percentages, setbacks rendered in red rather than hidden, projected clearly distinguished from achieved, real sources only. Next.js, React, TypeScript.
Matson Studios - Field Archive - live
Film and digital macro work presented as a natural-history field archive: digital images catalogued as specimens with taxonomy and capture metadata, film organised as a log by stock and year.
Contributing to open-source bioinformatics and lab-automation tooling, building out JOS V1.2, and looking for roles in lab automation, research software and bioinformatics.