Work.

2026Research

Measuring ice-sheet change from satellite altimetry.

Separating ice-thickness change from firn and ocean signals in satellite altimetry, with an uncertainty on every estimate. MSci dissertation.

  • Infinite-dimensional Bayesian inversion, jointly over ice, firn and ocean signals.
  • Physically motivated priors, with uncertainty propagated through to the results.
  • Geophysics
  • Bayesian inference
  • Scientific computing
Measuring ice-sheet change from satellite altimetry screenshot

2026Personal project

Camdram Connected.

A web app that finds the shortest chain of shared productions connecting two people in Cambridge theatre.

  • Built on public Camdram data.
  • Graph search over people and productions.
  • Caching, rate limiting, shareable views and interactive visualisation.
  • Web app
  • Graph search
  • Cambridge theatre
Camdram Connected screenshot

2026Personal project

git-overview.

A read-only terminal dashboard showing status, history, worktrees and submodules for many Git repositories at once.

  • Background discovery and automatic status refresh across nested repositories.
  • Commit graphs, reflogs, remotes, worktrees and recursive submodule views.
  • Fuzzy project search and persistent pins, without fetching or modifying repositories.
  • Rust
  • Terminal UI
  • Git

2026Coursework

State estimation and forecasting for a chaotic fault model.

Tracking the hidden state of a chaotic frictional fault model from noisy observations, and testing whether forecasts beat a simple baseline.

  • Grid-based Bayesian filter and smoother with exact posterior propagation.
  • Forecast skill checked against a persistence baseline.
  • Julia
  • Data assimilation
  • Bayesian inference
State estimation and forecasting for a chaotic fault model screenshot

2026Personal project

Noise-driven switching between two stable cycles.

A stochastic model with two stable limit cycles, studied both by direct simulation and by solving for its probability density.

  • Itô SDE integration with a tunable potential barrier between the cycles.
  • Parallel Fokker–Planck solver, with transitions detected automatically.
  • Julia
  • Stochastic dynamics
  • Scientific computing
Noise-driven switching between two stable cycles screenshot

2025–nowSociety website

Summer G&S websites.

Websites for Cambridge University Gilbert & Sullivan Society’s summer productions, with programme information and ticket booking.

  • Built and maintained for Ruddigore (2025) and Iolanthe (2026).
  • Programme information and ticket booking.
  • Cast and production data sourced from Camdram.
  • Websites
  • Ticketing
  • Cambridge theatre
Summer G&S websites screenshot

2025–26Volunteer role

Cambridge University Astronomical Society website.

Moved the society’s website from WordPress to Astro and simplified membership administration as webmaster.

  • Migration from WordPress to a static Astro site.
  • Simpler membership administration.
  • Astro
  • WordPress migration
  • Membership

2025Personal project

Seismic wave simulation.

A two-dimensional elastic-wave simulator in Rust for running repeatable seismic modelling experiments.

  • Staggered-grid finite differences with multiple sources.
  • Parallel time stepping with physical diagnostics.
  • Rust
  • Numerical modelling
  • Seismology
Seismic wave simulation screenshot

2025Personal project

Server Users Monitor.

A terminal tool for checking CPU and RAM usage by user on a shared server over SSH.

  • Real-time per-user resource monitoring on remote servers.
  • Interactive configuration and command-line connection options.
  • SSH key authentication and sorting by CPU or RAM.
  • Rust
  • SSH
  • Terminal UI