Thework
Everything here is public and unfinished in the way personal projects always are. Nothing on this page is a mock-up — each card links to the repository it describes.
Craybond OS
A bare-metal AArch64 kernel that boots on QEMU’s virt machine. Assembly-level CPU bring-up and exception handling, an MMU with real page tables, the GIC interrupt controller, PCI enumeration and Device Tree parsing — then a scheduler with context switching and syscalls on top. It draws to a screen too, via a RAM framebuffer or virtio-gpu.
CapeOS
The same itch, scratched again in Rust. Where Craybond taught me how the hardware actually behaves, CapeOS is about whether the type system can carry that knowledge for me instead of my memory doing it.
Escape Room Server TUI
A terminal UI that wraps a bare server.py running a real escape room. It surfaces puzzle state and IPs, server uptime, and a readable log stream, so the person at the desk can see what the room is doing without reading raw stdout.
Mapping & 3D Viewer
The other half of the drone work: a browser viewer for what comes back from a flight. Leaflet handles orthophotos, elevation models and GeoJSON with per-layer opacity; Three.js handles the reconstructed mesh, with distance, area and height measurement, clipping planes, and switchable perspective or orthographic cameras. Built so an operations lead can measure something on a laptop without installing GIS software.
Travel Radius Map
A search-planning map for DLRG operations. Drop a point, pick a movement mode, speed and a time budget, and it draws how far a missing person could plausibly have got. Real isochrones come from the OpenRouteService API, with a plain radius as fallback when the API has nothing useful to say. Circles persist between visits, POIs list out, and search areas export to KML for the crews and the drone flight plan.
Drone
The capture end: flight planning and imagery handling for the drone work, feeding the photogrammetry pipeline that the mapping viewer reads. This is the area I spend most of my volunteer time in, and the repository is public mostly so I stay honest about finishing it.
DLRG Club App
Excerpts from a Flutter app built for association use — the parts I can show publicly. Member-facing screens, training coordination, the everyday admin that otherwise lives in a group chat.
Battleship Client
A Tkinter client for a given Python battleship server, written for school. Drag-and-drop ship placement with rotation, hits and misses highlighted as they land. It also ships a deliberately unhinged “special mode” with pygame sound and OpenCV video — which I asked to be graded on the normal mode instead.
Projects in C
A workbench rather than a product: small C programs written to understand pointers, memory layout and the standard library properly, before trusting myself with any of it in a kernel.
OOP Talk
Teaching material for a class talk on object-oriented programming, written with Linus. An airport domain — gates, runways, passenger and cargo aircraft — modelled as a PlantUML class diagram, plus exercises that build up to writing a scheduler.
Plus the archive
Older school exercises, calculators and half-finished experiments are still up. They are not good, but deleting them would be pretending I started here.