Interfaces
React and TypeScript. Component systems, state that doesn't fight back, and screens that stay usable on a bad connection.
Eight years shipping products end to end: React and TypeScript on the front, Python and Node.js behind them, on Azure and AWS. I also take the messy edges — the third-party APIs and integrations that decide whether any of it actually works.
typed end to end · retried and rate-limited at every external edge · every write audited
/focus
I'm most useful when one person carries a feature the whole way — designing the API, building the screen it lives in, shipping it, and being the one who gets paged when it breaks. Eight years of that, across five teams.
React and TypeScript. Component systems, state that doesn't fight back, and screens that stay usable on a bad connection.
Python with FastAPI, SQLAlchemy and Pydantic; Node.js where it fits. REST, GraphQL, webhooks and message queues.
Azure and AWS, Docker, Postgres and Redis, CI/CD that deploys on merge. Getting it to production is part of building it.
SIS ↔ LMS connectors, payment gateways and third-party APIs — the part of the stack that fails on someone else's schedule.
A native OneRoster service in Python, with a React console on top. Rostering that speaks the standard directly instead of translating into it — and a UI that lets you watch it run instead of guessing.
/guarantees
Any feature is only as good as its worst day. Whichever layer it lives in, these five go in before it ships.
/stack
Grouped by where it sits, not by how well I know it.
Frontend
Backend & APIs
Cloud & delivery
Data
/timeline
Education
/writing
Notes from the job, published on DEV. Pulled live from their API.
Loading posts from dev.to…
/code
Public repositories and Stack Overflow activity, read from the GitHub and Stack Exchange APIs when the page loads.
Loading repositories from GitHub…
/contact
Open to full-stack and backend roles, React work, integration and API challenges, AI developer tooling and open source. Remote is fine.