Writing about the work
Notes on the engineering behind the products on this site: shared API contracts, offline-first architecture, OpenStreetMap pipelines and rate limiting.
- 4 min read
Typed contracts between a mobile client and its backend
Locava's API shapes live in a versioned package that the backend and both clients import. Here is why that package exists, what it cost, and what it caught.
- TypeScript
- Zod
- API design
- React Native
- Monorepo
- 4 min read
Building offline-first trail maps from OpenStreetMap data
OpenStreetMap names trail segments, not hikes. Turning one into the other took a second data model, a routing engine, and a build pipeline that has to be reproducible.
- OpenStreetMap
- Geospatial
- PMTiles
- Offline-first
- Valhalla
- React Native
- 4 min read
Three rate limiters, and the millisecond where each one changes its mind
Fixed window, sliding window log and token bucket, implemented from scratch and benchmarked. The interesting part is the boundary, and the bug I got wrong first.
- TypeScript
- Rate limiting
- Algorithms
- Benchmarking
- Open source
- 3 min read
Instrument before you launch
Locava had logging, crash tracking, traces and a warehouse before it had a launch date. It is the most useful ordering decision I made, and here is what it actually bought.
- Observability
- OpenTelemetry
- BigQuery
- Product engineering
- 3 min read
One kernel, three clients, and a script that enforces the boundary
RidgeSync's web planner, iPhone app and Apple Watch companion share one platform-agnostic package. The boundary only held because a build step fails when it is crossed.
- Architecture
- TypeScript
- React Native
- watchOS
- Monorepo
Follow along
New pieces go out on the feed. The projects they are about are on the work pages.