All projects

7 projects: featured work first, then research and side projects, then work from internships.

Bar chart titled 'The same battles, about 900× faster than Pokémon Showdown'. Showdown 7.69k turns per second (1×); Kanto with the same text output 185–189k (24–25×); Kanto engine without text 6.80–7.04M (884–916×).

Independent project

Kanto & Indigo: fast Pokémon simulator and self-play agents

A Rust simulator that reproduces Pokémon Showdown's Gen 1 battles exactly, ~900× faster. Agents trained on it by self-play beat TaurosV0, Metamon's best standalone Gen 1 OU policy.

2026 Rust · Python / PyO3 · PyTorch

Game AI / search

Othello search engine and pruning ablation

An Othello engine in Java with four search shortcuts stacked together. It searches 15.5× fewer positions than plain alpha-beta search, yet loses to it in timed games; I measured why.

Java 8 · Alpha-beta / PVS · Transposition table

LoRA image of a fern fox in pencil on paper.

Independent project

Style LoRA data ablation on FLUX.2 Klein

Six LoRAs teach FLUX.2 Klein an illustration style I designed, each from a different mix of reference and synthetic images. 252 images scored blind by a VLM judge.

2026 FLUX.2 Klein 4B · LoRA · AI Toolkit

Left: planning success for MAE alone 0.65, MAE to DINO 0.63 and MAE to SigLIP 0.64, with a note that Li et al. reported 0.02 and 0.00. Right: stacked bars over 21 stitches; four coarse capabilities are preserved in all of them, distance to the door is degraded in 8, and alignment with the door is degraded in 13, inconclusive in 4 and preserved in 4.

Independent project

Beyond Latent Alignment: auditing world-model stitching

A paper draft that re-implements DINO-WM model stitching. A reported collapse did not replicate, and a per-capability audit found door skills degrading in stitches that plan normally.

2026 PyTorch · DINO-WM · DINOv2 · SigLIP · MAE

A living room with a grey sofa, glass coffee table, green striped rug, walnut sideboard and shelving, and a white armchair.

Independent project

Haven: room scan to fit-checked furnishing plan

An app that turns an iPhone room scan into a millimetre-accurate floor plan and a furnishing plan, checking every piece against the measured room. A prototype, tested on a sample scan.

2026 TypeScript · Cloudflare Workers + D1 · Apple RoomPlan

Independent project

Digital Terrarium: multi-agent RL survival world

One small neural network, shared by 30 agents, keeps 86.3% of them alive in a simulated survival world, against 62.0% for a hand-written strategy and 0% for random play.

2026 Python · NumPy · PyTorch