I photograph birds around Perth and built BirdUp, a birding app for Australia. On weekdays I write software at Healthengine.
Birds come first on this page. If you're here for the engineering, skip to how BirdUp is built.

BirdUp
A field notebook and field guide for Australian birds that also scouts what's worth looking for nearby. It works without reception, and it hides the locations of threatened species.
App StoreGoogle Playbirdup.com.au
850+ species · free on iOS and Android



From the field
All photosHow BirdUp is built
Rails 8 · PostGIS · React Native · Expo · Next.js · WorkOS
Offline first
Sightings save on the phone and sync when it has signal again.
Photo ID that knows where it is
Suggestions are weighted by the species that occur near you that month.
Threatened species stay hidden
Their locations are obscured automatically, even from the AI.
Writing
- What Is GIS? A Plain-English Explanation for Developers
- The State of Authentication in Rails, March 2026
- Reviving MTree: A Procedural Tree Generator for Blender 5
- Zero-Downtime Rails 8 Deployments on AWS with Kamal: A Complete Guide
- Git Worktrees: Working on Multiple Branches Without the Headache
- HTML to PDF in Ruby on Rails
- Encouraging Code Policies Using Git Hooks
Open source
- Rails Active MCP
Ruby gem that gives AI agents safe, audited access to the Rails console.
- Buildkite Notifier
macOS menu bar app that watches CI builds.
- Flagr OpenFeature Provider
JavaScript OpenFeature provider for OpenFlagr.
- Modular Tree
Procedural tree generator for Blender 5, a fork of MTree.
- GameMaker Server
Python multiplayer server for GameMaker: Studio.
- Frogs and Bee
Date ideas, recipes and calendars for couples.
Work
- 2025 — PRESENTSenior Full Stack EngineerHealthengine
- 2024 — 2025Senior Software EngineerAscend Health
- 2019 — 2024Senior Software EngineerConsent2Go



