Principal engineer · Charlotte, NC

Big systems.
Small details.

I design and ship software end to end — the architecture, the backend underneath it, and the operations that keep it honest.

15+ years Java / Spring PostgreSQL Google Cloud

Scroll

01 / Expertise

Three layers, one system.

Not a project list — the three layers I spend most of my time in, and the seams between them.

01

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
02

Platform

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.

  • Java
  • Spring Boot
  • PostgreSQL
03

Operations

Google Cloud, Kubernetes, CI/CD, observability and security — the layer you only notice when it is missing. Boring in production is the goal.

  • GCP
  • Kubernetes
  • Terraform

02 / About

A short spec sheet.

About me v15.0

Justin Baker

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.

Role
Principal Engineer
Company
Reason Consulting
Experience
15+ years
Based
Charlotte, NC
Cloud
Google Cloud · Professional Cloud Architect
Stack
Java · Spring · React

03 / Projects

Things I built for the fun of it.

Twelve live experiments, each its own repository and its own subpath on this domain.

/jerlang/

An Erlang runtime for the JVM

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.

  • Java 21
  • BEAM
  • OTP 29

/clt-almanac/

The Charlotte 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.

  • Forecast model
  • Backtest
  • Charlotte

/buffy/

A desk pet for your coding agent

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.

  • Electron
  • Node CLI
  • Local daemon

/yahtzee/

Exact-probability 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.

  • Game
  • Exact EV

/blackjack/

Blackjack Lab

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.

  • Solver
  • Simulation

/murmur/

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.

  • Live feeds
  • Character

/motobuzz/

MotoBuzz

Reads public motocross news, subreddits and rider and brand channels once an hour, then ranks what the sport is actually talking about.

  • Ranking
  • Hourly

/orders-service/

A three-repo reference system

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.

  • Spring Boot 4
  • Postgres 16
  • Terraform

/what-changed/

What Changed Today

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.

  • Daily diff
  • Charlotte 311
  • Federal Register

/word-chomp/

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.

  • Word game
  • Vanilla JS
  • No build step

/saf-explorer/

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.

  • Python
  • .saf format
  • Desktop

/mx-lab/

MX Lab: seven seasons, measured

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.

  • Node
  • Dataset
  • Static site

04 / Contact

Let’s make something solid.

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