Projects
Image Gallery
A simple website to exhibit the photos I take
Phase one · Go + HTMX
My first web app: a Go backend with an HTMX frontend. Hard to fix and update.
Phase two · React
Rebuilt the frontend in React after learning it at CRISiSLab, and refactored the backend.
Phase three · Spring Boot
Moved the backend to Spring Boot and JPA to store film photography data. No login needed to view images.
Bandform
Making it simple to find a band, find band members, or start a band
Find a band
Match with bands that share your taste and apply for open positions.
Find members
Search for people with similar taste and invite them to join.
Start a band
Invite people yourself, or let the generator add people who opt in.
Backend · Spring Boot + GraphQL
Built by hand, and where I first learned Spring Boot. Data lives in PostgreSQL.
Frontend · React
Built on top of the GraphQL API, with help from Claude.
Now · Live
Running on my home server. Mobile versions are in development.
CRISiSLab Mesh Network
Disaster-resilient LoRa communications for remote sensors when earthquakes take out the grid
Field testing · LoRa
Field-tested devices at Mākara Beach, Cuba Street and Island Bay.
Deployment · ~60 nodes
Deployed around 60 devices with community hosts I recruited through an expression of interest campaign.
Monitoring · React + Rust
Gateways relay telemetry via Mosquitto to an API server. I built the React frontend (telemetry, locations, and route updates that stop flood routing) and a Rust (Rocket) auth server.
Firmware · Memory fix
Fixed a route-update task that silently failed after 6–7 runs: fragmented memory left no 4096-byte block, so I allocate it once at startup and reuse it.
Paper · Published 2026
Wrote and presented a paper on the work so far, published in early 2026.