Projects
Things I’ve built, and why
Most of these started as curiosities and got hooked into something larger. Each entry below is the story behind the build, not just what it does.
GB Grid Scenario Tool
I was drawn to reinforcement learning through the demos of agents learning to drive cars and play games. Weather and climate systems do not map cleanly to the same RL framing. Energy grids, where weather is a core input, were a much better fit. So I started building an RL environment for GB electricity dispatch. The scope grew quickly. What began as ‘can an agent learn merit order?’ turned into a serious exercise in data assimilation from public sources, and a test of how far you can get with human-led architecture and AI execution.
What I ended up with is a browser-based DC power flow model of the GB transmission network, built entirely from public NESO data, validated to within 2% of published boundary transfer capabilities. The RL agents trained on top of it went from spending around £30 billion a year on dispatch to operating within 6% of real grid costs. The interesting finding was that spatial CNN observations could not improve on MLPs without topology-aware action spaces. The action space was the bottleneck, not the observation space. The full build story, including 16 validation configurations and the demand baseline mistake that cost me days, is on the Writing page.
- JavaScript
- React
- Leaflet
- WebAssembly (HiGHS)
- Python
- Stable-Baselines3
- SLURM
- ERA5
Quantum ML for atmospheric regression
Quantum computing is interesting to me precisely because nobody yet knows exactly what it will be good for or what its limits are. I’m experimenting with variational quantum circuits on real atmospheric data using PennyLane, testing whether they can achieve meaningful regression results on ERA5 temperature fields. Very interesting; posts to come.
- Python
- PennyLane
- ERA5
Climate Data Quickstart
Climate data is fragmented. Every dataset has its own access pattern: a CDS API for ERA5, an ESGF queue for CMIP6, raw FTP for HadCET, a separate Earthdata account for NASA products, and so on. Getting a working environment for any one of them is solvable in an afternoon. Getting working environments for all of them, with credentials configured and credentials documented and a stable place to put the files, is a quietly large amount of plumbing. For most early-career researchers, that plumbing is what stands between them and the actual science.
Climate Data Quickstart is a local desktop app and script library covering 19 datasets including ERA5 variants, CMIP6, HadCET, HadCRUT5, UKCP18, GloFAS, and ECMWF Open Data. It bundles setup scripts for Windows, macOS, Linux, and conda, exposes a Streamlit interface for downloading and exploring data, and supports lazy loading via Earth Data Hub for the larger products. Built using a three-stage agentic pipeline: dataset schema extraction, code generation, then validation against each provider’s actual API.
- Python
- Streamlit
- xarray
- cdsapi
- NetCDF/GRIB/Zarr
City Climate Stripes
Ed Hawkins’ warming stripes are one of the most effective single climate visualisations ever made. I wanted to extend the idea to individual cities, with a few extras: switching between annual and seasonal anomalies (DJF, MAM, JJA, SON), toggling bars versus stripes, adjustable baseline periods (1850 to 1900, or 1961 to 2010), and a fixed-versus-auto colour scaling. Built on Berkeley Earth gridded temperatures with GeoNames city coordinates, runs entirely client-side, exports PNGs. A small exploratory thing, not a scientific dataset.
- HTML
- JavaScript
- D3
- Berkeley Earth
- GeoNames
Climate Playbook
Interactive visualisations and hands-on exercises were what made concepts stick during my own degree, and I wished more of that had been accessible earlier. From research and an email exchange with Andrew Charlton-Perez, the main pain points sit with teachers: limited time, fragmented resources, and a curriculum that touches climate across geography, physics, biology, and citizenship without a unified framework. The National Climate Education Action Plan (NCEAP) is working on this nationally, which reinforced that the gap is real and being taken seriously.
Climate Playbook is my attempt at a demo of what interactive climate education could look like: modular lessons for UK schools, Key Stage 3 through 5 (Key Stage 1–2 planned), with interactive figures showing the actual mechanisms rather than static diagrams. A unified framework across all the subjects where climate naturally sits, rather than treating it as geography-only.
This is a slow project and not yet publicly visible. Designing content that works across an 11-year-old to an eighteen-year-old alongside an MSc workload is a lot of work.
- Astro
- MDX
- D3
- vanilla JavaScript
Electricity demand forecasting (India)
An MSc module sub-project. State-level electricity demand prediction for India using ERA5 weather variables, with linear regression, XGBoost, and LSTM models as a progression in capacity. I used temporal cross-validation throughout and mapped per-state R-squared as a choropleth, which made the geography of the problem obvious. Weather-driven prediction works well in the southern states where demand is dominated by cooling load, and badly in the industrial north where demand is dominated by non-weather factors. A short exercise in building the whole pipeline end to end on a non-UK grid.
- Python
- scikit-learn
- XGBoost
- PyTorch
- ERA5