Projects

Things I've built recently. Each one links to a live site or a full write‑up.

ThruTrack

2026 · Local-first desktop app · Solo project

A desktop app for thru-hikers. After 2,600+ miles on the Continental Divide Trail, my GPS tracks, phone photos and satellite check-ins were in different places, on different clocks, with no single view of what actually happened on a given day. ThruTrack brings them together: import a day's GPX track, drop in the photos, and everything lands on a shared map and timeline automatically.

Everything is stored in a local SQLite database. There's no account and no cloud, so every trip, photo and journal entry stays on your own machine.

  • Reconciles camera and GPS clocks with custom EXIF and time-zone logic, and catches photos imported onto the wrong day and suggests the right one
  • Interpolates a photo's position from the GPS track when the photo has no location of its own
  • Groups multi-day trips by state automatically, and treats a hike that follows a state line for a week as one stretch instead of flipping between groups day to day
  • Clusters busy days on the timeline, and migrated 114 real trail days from an earlier personal project into ThruTrack's own schema
  • Electron
  • React
  • TypeScript
  • better-sqlite3

instaGallery

2026 · Self-hosted web app · Personal project

A private, self-hosted archive for my 1000+ saved Instagram posts. It copies the images, video and captions onto my own computer and gives me a fast, searchable gallery for sorting them. It's a private tool with no public URL, so the write-up is here instead.

  • Ingest pipeline that downloads the real media and captions, which Instagram's official export leaves out
  • Two-level categories with an editable keyword auto-tagger that won't re-add tags I've removed by hand
  • Runs entirely on my Mac. My iPad reaches it over a private Tailscale network.
  • Python
  • FastAPI
  • SQLite
  • instaloader
  • Tailscale

CDT Data Vis

2025-2026 · full-stack web app · solo project

This was essentially ThruTrack v1

The journal I kept on my 2024 Continental Divide Trail thru-hike was spread across a notebook app, CalTopo track exports, Garmin check-ins and thousands of phone photos. CDT Journal brings them together in one password-protected app. Each day on trail links its journal entry, GPS segment, campsite, messages and photos, and you can browse by map, calendar, list or photo album.

  • An interactive D3.js map of all five CDT states. It shows each day's trail segment, campsites, Garmin message pins and geotagged photos, and you can zoom in on any day straight from the map.
  • Elevation contour lines built from DEM raster data by a Python script, drawn under the trail as a topographic layer.
  • Photo clusters on the map with leader lines that stay anchored when you pan, plus keyboard navigation that steps through photos and moves the map to follow.
  • Daily entry pages with a mini-map of that day's route, full create and edit, and a searchable, paginated list view.
  • Raw SQL against Postgres with no ORM, Server Actions validated with Zod, and NextAuth for login.
  • Next.js 15
  • TypeScript
  • PostgreSQL (Neon)
  • D3.js
  • Tailwind CSS + DaisyUI
  • NextAuth

Earlier work

The first three were built while I was an astrophysicist and data technician at the Center for Astrophysics in Cambridge, MA, from 2011 to 2015. Pack Weight and Developer's Toolbox were class projects in 2015.

More on GitHub.