Jonathan Putney — builder, vp/tech, husband, dad, gamer
About
jonathan@:~$whoamiUptime
jonathan@:~$uptimeNow
jonathan@:~$cat ~/now▸ shipping the agentic ai platform that powers our llm features (rag, multi-judge eval, websocket streaming, governance)
▸ shipped ratchet v0.5.0 — a cluster-safe job scheduler for jakarta ee — and finished rebuilding its core on spring boot
▸ recalibrating weekly on what ai can and can't do in real work. every time i pin down the ceiling it moves, then it finds a new way to be confidently wrong about something i'd already trusted it with
Open Source Projects
jonathan@:~$ls -l ~/projects/modern javascript runtime for scorm 1.2 / 2004. v3.4 — full sequencing engine, 95%+ coverage, 6,000+ conformance tests.
pure-java mjml renderer. zero runtime dependencies. 31 components, 1,116 tests, golden-file parity with the official cli.
cdi-native distributed job scheduler. pull-based, cluster-safe via for update skip locked, no redis required. v0.5.0 on maven central.
parses every major elearning standard: scorm 1.2 · scorm 2004 · aicc · cmi5 · xapi. on maven central.
two ai perspectives catch more issues than one — claude code plugin that uses openai codex as a peer reviewer.
Work
jonathan@:~$ls ~/work/we build a 21 cfr part 11 compliant lms for some of the most regulated buyers on the planet — pharma, life sciences, government, hospital systems, airports. i architect the platform, run engineering, lead compliance, and still ship production code most days. ~250k annual users. 40+ tenants. 6 eks clusters.
noverant laid me off in the 2008 recession. i stayed on good terms with the ceo anyway, and years later i came back for the room to grow and the autonomy to actually use it.
"player-coach" usually means the exec shows up to standup. here it means i argue a pricing position on an rfp in the morning and debug a schema migration after lunch.
a real one from this month: a migration that passed every test locally and would have taken down the production deploy. it dropped an index before creating its replacement, and innodb still needed that index to check a foreign key. we found it by running it against a throwaway mysql container instead of reasoning about it, which is the only reason we found it at all.
i've hired every technical person here for ten years. i still read the diffs, and i'm still the one who says no to the feature that would only ever help one client.
# full experience: cv.putney.io · linkedin/in/jonathanputneyjonathan@:~$ ls ~/play/
Hobbies
- rpgs & action-adventure // story-driven everything
- analogue fpga consoles // fpga, not emulation
- retro gaming // crts deserve respect
- security now podcast // 15+ years deep
- two kids
jonathan@:~$ cat ~/reading
Currently Reading, Playing & Listening
jonathan@:~$ history | tail
Highlights & Fun Facts
Contact
jonathan@:~$contact --meHidden Easter Egg
▸ hidden command foundwelcome, careful tab-presser. you found the secret. enjoy a fun fact: there's a mass of steel and spinning rust in my crawlspace running ~70 docker containers: plex and jellyfin, the *arr stack, immich for photos, paperless for documents, and n8n gluing it together. it runs its own dns and its own auth provider.
↑ back to top