Projects

Most of my work doesn't end up in a paper: observatory software, telescope hardware, data pipelines, simulations and tactile models. This page is a running list of it. Most of the code is on GitHub.

Telescopes & instrumentation · Automation, ML & tools · Simulations & interactive tools · Accessible astronomy

Telescopes & instrumentation

ROTSE-IIIc observatory control system (2024 – present, SAAO)

Bringing a 20-year-old robotic telescope in Namibia back online. I designed a new observatory control system on the pyobs framework to replace the defunct legacy C software, with asynchronous interfaces that let the original hardware and modern components work together.

All-sky camera & environmental monitoring (2024 – present, SAAO)

A low-cost custom all-sky camera and environmental monitoring suite. Its real-time telemetry feeds into the telescope’s autonomous decision-making.

A 3D-printed grey sensor node with the SAAO IO logo on its lid

Dome weather sensor network (2026, SAAO Intelligent Observatory)

Power-over-Ethernet sensor nodes that measure temperature, humidity and pressure inside SAAO’s telescope domes. I wrote the ESP32 firmware, which serves each reading as JSON on the observatory network, and designed the 3D-printed housing in Fusion 360.

Automation, ML & tools

Real-time cloud detection with machine learning (2024 – present, SAAO Intelligent Observatory)

A computer-vision pipeline that automatically detects cloud in all-sky camera images in real time, so observatory software knows what the sky is doing without someone looking up.

Lesedi calibration scheduling (2024 – present, SAAO Intelligent Observatory)

Automated daily flat-field and spectrophotometric standard scheduling for the 1-metre Lesedi telescope, cutting down the manual work in each night’s “pre-flight” routine.

SALTshaker (2025 – present)

A Python package for planning astronomical observations with the Southern African Large Telescope (SALT).

sthweather (2026)

A lightweight, zero-dependency terminal monitor for the weather at the Sutherland observing site.

Simulations & interactive tools

Simulated cold-gas tidal tails coloured by line-of-sight velocity

Fornax A: a merger simulation (2026)

A 1.1-million-particle N-body model of the merger thought to have formed NGC 1316, run on a Barnes–Hut tree code I wrote in C with OpenMP. The galaxies are calibrated against the observed kinematics, and the remnant’s shells, tidal tails and velocity profiles are compared with NGC 1316.

A star and a spherical-harmonic oscillation pattern rendered in the simulator

Asteroseismology simulator (2026)

An interactive 3D model of stellar oscillations. Choose a star by spectral type or by Teff and log g, then explore how pulsation modes of different degree (l) and order (m) ripple across its surface.

Video thumbnail for Detecting Pandora: an exomoon transit

Detecting Pandora: an exomoon transit

A model of how we might detect a habitable moon orbiting a gas giant around another star, using Pandora from Avatar as the test case.

Video thumbnail for GW170817: real vs simulated

GW170817: real vs simulated

Visualising the gravitational waves from the GW170817 neutron-star merger, comparing LIGO/Virgo data with a theoretical model.

Accessible astronomy

A 3D-printed tactile relief of Jupiter made from JWST data

AstroTouch (2025 – present)

Open-source software that turns astronomical FITS images into 3D-printable tactile models, so blind and visually impaired people can explore real telescope data. Also available as a web app, no install needed.