Projects

← Back to overview

US Rail Performance Archiver

Personal Project

  • Built a real-time GTFS-RT ingest and archival pipeline in Python polling live transit feeds from 97 agencies (252 individual feed endpoints) across the US, with S3-backed content-addressed landing storage and request-level deduplication.
  • Designed and deployed cloud-native infrastructure on AWS (EC2, S3, Fargate) with Terraform, including a decoupled poll/rollup architecture that isolates lightweight ingestion pollers from CPU-heavy batch processing.
  • Ported a performance-critical GTFS-RT decoder from Python to Rust using PyO3 bindings to reduce processing time on high-volume feeds, integrated into the existing Docker build.
  • Built a curated analytics layer computing on-time-performance and schedule-adherence metrics, and a REST API (FastAPI) serving delay, alert, and route/segment-speed data.
  • Shipped a Next.js/TypeScript dashboard visualizing real-time delays, service alerts, and segment-level speed data for public transit riders.
  • Python
  • AWS (EC2, S3, Fargate)
  • Terraform
  • Rust (PyO3)
  • FastAPI
  • Next.js/TypeScript
  • Docker

TransitMatters

Interim Labs Co-Lead & Software Developer (Volunteer)

  • Co-led TransitMatters Labs, the org's volunteer engineering program, as interim co-lead: reviewed and approved contributor PRs, ran intake for new volunteers, and took point on meetings with the other Labs lead and the Executive Director.
  • Ran recurring ~3-week all-hands meetings; re-engaged inactive volunteers through direct outreach and recruited Labs-adjacent contributors to present their work, growing meeting participation.
  • Delivered full-stack features across the GTFS ingestion → backend processing → dashboard pipeline (gobble, mbta-performance, data-ingestion, t-performance-dash): Silver Line and 50+ bus route support, vehicle occupancy data, and full ferry service support — preparing and cleaning MBTA ferry data for Data Dashboard ingestion.
  • Added the Mattapan Trolley to New Train Tracker, including enriched vehicle pop-up information.
  • Designed, built, and published transitmattr, an R client package wrapping the TransitMatters Data Dashboard API — test suite, vignettes, a pkgdown documentation site, and CI via GitHub Actions — accepted to CRAN.
  • Added test coverage and resolved production reliability issues (OOM memory tuning on scheduled data jobs) across the mbta-performance and t-performance-dash backends; migrated multiple repos' tooling to UV and Ruff with pre-commit hooks.
  • Contributed maps to the Modernizing the Framingham/Worcester Line report.
  • JavaScript/Next.js/TypeScript/React
  • Python (Chalice Framework)
  • AWS Services

GTFS-RT Rater

Personal Project

  • Built a Rust CLI that parses GTFS-Realtime feeds and scores field-coverage/completeness (bearing, speed, occupancy, and more) for vehicle positions, trip updates, and alerts.
  • Integrated the MobilityData Catalog API to auto-discover and batch-analyze every public GTFS-RT feed concurrently, with configurable sampling intervals for monitoring feed health over time.
  • Shipped a companion TypeScript frontend for browsing feed-quality results.
  • Rust
  • TypeScript
  • MobilityData API

Bikeshare Trip Explorer

Personal Project

  • Built a React 19/TypeScript app visualizing station-to-station bikeshare trip flows across four systems (Bluebikes, Citi Bike, Divvy, Bay Wheels) with directional arc layers.
  • Used Deck.gl and MapLibre GL for WebGL-powered map rendering, with interactive filtering by bike type, membership status, and trip-frequency threshold.
  • React
  • TypeScript
  • Deck.gl
  • MapLibre

Amtrak / VIA Rail / Brightline Ingestion

Personal Project

  • Built a serverless AWS Chalice pipeline ingesting real-time multi-provider intercity rail data (Amtrak, VIA Rail, Brightline) from the Amtraker API every 5 minutes.
  • Enriched raw positions with static GTFS schedule data via Polars to compute scheduled headway and travel time, generating arrival/departure events validated with Pydantic.
  • Deployed as scheduled AWS Lambda functions, storing gzip-compressed events to S3 with daily collation into per-route/stop CSVs.
  • Python
  • AWS Chalice/Lambda
  • Polars
  • Pydantic