Profile
I care deeply about correctness and quality,
and building software that's a delight to use.
Under the hood: testability, readability, maintainability.
In what users see: the look and feel each product
deserves, polished until it shines.
I've worked closely with designers and product teams for most of my
career, comfortable giving feedback and proposing ideas of my own.
Semi-pro beach tennis. Training is as satisfying as
competing: physical conditioning, drilling the same shots until
they're automatic, then refining the details.
Music composition and production. The engineering
side of music: recording, mixing, mastering tracks. Taking a raw
idea and refining it until the output is exactly right.
Projects
Flight controller and physics sim, in Rust
Built from first principles, following aerospace conventions (NED/FRD
frames, cascaded PID architecture). A deep-dive learning project written
in idiomatic Rust, exploring quaternion kinematics, real-time control,
and a type system that enforces physics units at compile time.
Written by hand. No AI access to the source.
Stack: cascaded PID · compile-time unit types · egui
Solo product: iOS, Android, backend, design
A companion app for players and fans of beach tennis: tournaments, draws,
results, player profiles, and rankings. Free for the community. I built
it because I love the sport, there was no usable way to search ITF
tournaments and rankings, and I wanted to try Swift on the server. Beyond
the iOS work, the project took me deep into Vapor on the backend, Jetpack
Compose on Android, CI/CD (GitHub Actions, Xcode Cloud, Docker), and ops
on Fly.io with managed PostgreSQL and Redis.
Android version currently in beta.
Stack:
iOS (UIKit, SwiftUI, SPM) · Android (Kotlin, beta) ·
Backend (Swift Vapor, PostgreSQL) · Design (Sketch)
1v1 multiplayer Minesweeper, in Rust
1v1 real-time multiplayer Minesweeper, built entirely in Rust across three
crates: a core engine (rules and board, also playable solo), a multiplayer
layer (1v1 logic, offline), and the online layer (Axum server, WebSocket
matchmaking). The egui frontend compiles to WebAssembly with no
JavaScript, and the same UI runs as a native desktop client. Deployed on
Fly.io with Docker.
Stack: egui · WASM · Axum · WebSockets · Docker · Fly.io