Architecture
Service boundaries, schemas and migrations built to survive real users, real audits and the people who maintain them next. The diagram is the easy part.
- System design
- Data modeling
- APIs
Principal engineer · Charlotte, NC
I design and ship software end to end — the architecture, the backend underneath it, and the operations that keep it honest.
01 / Expertise
Not a project list — the three layers I spend most of my time in, and the seams between them.
Service boundaries, schemas and migrations built to survive real users, real audits and the people who maintain them next. The diagram is the easy part.
The APIs, services and data behind the glass: GraphQL endpoints, event-driven jobs, ETL and the shared libraries other teams build on. The part nobody sees.
Google Cloud, Kubernetes, CI/CD, observability and security — the layer you only notice when it is missing. Boring in production is the goal.
02 / About
Principal Engineer
Charlotte, North Carolina
I am a principal engineer with fifteen years of building software for people who need it to work. Most of that time has been spent on public-sector systems — the kind where a migration has to be right the first time and a release has to be boring.
I like the whole arc: the whiteboard, the schema, the API, the migration, the pipeline, the pager. And yes, I still care about the details — usually the ones nobody sees.
03 / Projects
Twelve live experiments, each its own repository and its own subpath on this domain.
/jerlang/
Reads the BEAM files the Erlang compiler produces and interprets them on the JVM — processes, message passing, links, monitors and distribution written in Java, one reflective call away from Java code. OTP’s own gen_server and supervisor run unmodified, and the artifact is published on Maven Central.
/clt-almanac/
A daily weather note for Charlotte built on the station record back to 1939: ridge and logistic regressions retrained every morning, a backtest that only ever sees what was known that day, and a writer handed the finished numbers with orders not to invent any of them.
/buffy/
A tiny always-on-top companion for long coding sessions: Claude Code hooks, a repo watcher and a buffy CLI send thinking, working, needs-you and done to a daemon on 127.0.0.1, and an Electron overlay draws the pet. The daemon binds to loopback only, collects no telemetry and keeps its state in ~/.buffy; buffy hatch draws new sprites through the OpenAI Images API, and the Windows installer ships the app and its daemon together.
/yahtzee/
Play against a CPU that solves every roll with exact probabilities and keeps an exact table for the rest of the game, endgame included.
/blackjack/
An exact solver and the lab around it: a strategy chart that re-derives itself whenever a rule changes, plus card counting and a simulation target to prove the number.
/murmur/
A small animated face in Charlotte that reacts to weather, air quality, official alerts, river levels and earthquakes. A simulated mood, not a real one.
/motobuzz/
Reads public motocross news, subreddits and rider and brand channels once an hour, then ranks what the sport is actually talking about.
/orders-service/
One orders domain across three repositories: a Spring Boot 4 and Java 21 API with REST and GraphQL over Postgres 16, an RFC 9457 error model and a transactional outbox, recorded by CI rather than run as a live demo; six zero-downtime migrations measured against a busy writer; and Terraform verified against a mock provider, never applied.
/what-changed/
A daily field-level diff of public records — Charlotte 311 service requests and the Federal Register — showing only what moved, with records labelled new, backfilled or aged out and a failed fetch published as no snapshot rather than a reassuring zero. Actions diffs, Pages serves: no server, database or keys.
/word-chomp/
A garden word dig: unscramble six- or seven-letter racks, find the three-to-seven-letter words and clear every garden word before the 2:20 timer runs out. Vanilla HTML, CSS and JavaScript in one folder — no build step, no network request, original art and sound.
/saf-explorer/
Opens MX Simulator .saf archives to list and extract what is inside, or packs a folder back into one. Pure Python standard library with an 11.5 MB standalone exe; extraction cannot escape the target folder, and a build writes to a temporary file before replacing the archive.
/mx-lab/
One committed dataset of AMA Pro Motocross and Supercross results — seven seasons, 195 events, 17,434 result rows and 250,699 lap times — with six analyses published on top of it: lap chart, fade, lap one, qualifying, titles and an Elo rating per class. Rebuilds are byte-identical, and the gate fails the build on contradictions while recording source quirks as warnings that each name their sheet. Unofficial, derived statistics only: no source PDFs are stored or served.
04 / Contact
If you are building something that has to last, I would like to hear about it. Email is best; GitHub is a good place to see what I am tinkering with.
jbakerdev199@gmail.com