Mark Whiskeyman  ·  Data Analyst & Tool Builder

Jack of all trades.
Master of shipping.

21 projects behind seven doors — pick the trade you're hiring for.

Most of what's behind these doors I built on my own initiative, before anyone asked — and I actually use it: Auto Mailer every shift, Pick Counter and Sanity Saver every day, my peer-review tool weekly, and Truck Starter ran in production for two years. Different doors, same habit: find the manual process, kill it, measure the hours saved.

New Haven, CT  |  B.S. Computer Science — Summa Cum Laude
21
projects
5
in production use
2+ yrs
longest production run
Door 1 — Automation & Data
Tools I built to kill manual work
Each solved a real, repetitive task — most built on my own initiative, all in real use. Click through for walkthroughs and live demos.

Auto Mailer

Production
Turns a dense, multi-page OCR inspection report into a ready-to-send customer summary email in four guided steps. I use it every shift.
PythonPDF/OCRDesktop GUI

Peer Review Tool — “Orwell”

Production
My weekly peer-review pass, automated: a SQL backend feeds an interactive per-analyst QA report — linked donut charts over a sortable indication table. Its reports are read up to our CEO.
3 hours → 15 minutes / week
PythonSQLSVG data-viz

Pick Counter

Daily Use
Truck-record pick logging for rail-inspection runs — because Google Sheets didn't have dark mode. 80+ builds and counting.
PythonSQLDesktop GUI

Truck Starter

2 Yrs Production
A ~10-step, multi-drive job setup — folder, template, and every input file — reduced to a single click. Ran in production for two years.
PythonExcel automation

MAGI-OCR

Production
OCR extraction engine — PDF chaos into structured data. (I own the rights.)
PythonOCR

Sanity Saver

Daily Use
A transparent, click-through, always-on-top overlay that masks a strip of the screen during analysis — so on-screen progress can't bias the read.
PythonWin32 layered window

Rail Contacts Phonebook

Built
An 18-tab Excel contact sheet turned into a fast desktop lookup app — every rail contact from one search box instead of hunting across tabs.
HTML/CSS/JSExcel → app
Door 2 — Simulation & Physics
The physics behind the day job, made playable
Interactive recreations of the instruments and track geometry behind ultrasonic rail inspection. All three run live in your browser.

USM 32 — Flaw Detector Simulator

Interactive
A from-scratch JavaScript/canvas recreation of the ultrasonic flaw-detector training unit. Power it on, slide the probe across a steel block, and watch echoes off the drilled holes render live on the A-scan — beam spread, angle beams, gain, couplant and all. Ported from my Python/Pygame simulator.
JavaScriptCanvas 2DUltrasonic NDT

No. 8 Turnout — 3D Walkthrough

Interactive 3D
AI-assisted parametric CAD: AREMA references and catalog drawings turned into STL models of a full No. 8 turnout, explorable first-person. Throw the switch, roll a wheelset — and split-switch it if the points aren't seated.
three.jsSTL / CADAREMA specs

Snell's Law — Wave Refraction

Interactive
The physics behind angle-beam ultrasonic testing: drag the incident angle, swap materials, and watch the incident, reflected, longitudinal, and shear waves update live.
HTML/CSS/JSAcoustic physics
Door 3 — Security Research
Prompt-injection defense for AI agents
Original research — a threat model and containment architecture for AI coding agents, built and tested against the agent's own permission system on this machine. Prompt injection sits at #1 on OWASP's Top 10 for LLM applications; the threat framing builds on Simon Willison's lethal trifecta. A second piece extends the same architecture to the supply chain — the poisoned dependency, not just the poisoned prompt — with an offline detonation box that classifies untrusted code, red-teamed and mechanically adversary-tested. Every discovery behind both, failures included, is in the lab notes.
“There is no skill level that saves you from prompt injection, given enough volume and time. The right architecture and habits mitigate the risk; they never eliminate it.”

Killing the Lethal Trifecta

Complete
The Human Abstraction Layer — prompt-injection protection for the solo developer
A threat model, a working four-layer permission fence, and a disposable-VM isolation design that splits the lethal trifecta so no single mode holds all three legs. Includes original findings on how an agent's own permission enforcement behaves under tampering: the add-on fence fails open the moment its config breaks, the built-in deny-list fails closed, and one channel is all it takes — server-side web tools tunnel through the model API.
PythonPowerShellThreat modelingVM isolationHyper-V / Windows Sandbox
The lethal trifecta drawn as a fire triangle: private data, build and push, and untrusted input, with a flame at the centre. A breach needs all three sides, like a fire.
The trifecta as a fire triangle: a breach needs private data, untrusted input, and a way out at once. The architecture splits them so no single mode ever holds all three sides.

Contain the Blast

Complete
The build container as a supply-chain control
Three disposable rooms matched to trust — a dev box, a network-dark detonation box, a web-facing research box — because a poisoned dependency's code and a prompt injection's text are the same threat wearing two coats. The dev box was red-teamed by an intelligent agent; both offline detonation lanes were proven against a mechanical adversary that attempts every escape vector. The Windows lane grew a triage analyst that reads a bogey's behavior and catches sandbox-evasion probes — the trick built to defeat detonation boxes.
DockerWindows SandboxPowerShellProcmon / behavioral triageSupply-chain security
Door 4 — Games & Creative
Things I build for fun — and finish
A published game, six original fonts, a database a 1993 classic never shipped with, and a tabletop design in playtesting.

Piracy on the New Frontier

Published
A published ASCII-terminal trading & combat game, inspired by the classic Taipan! — shipped, on itch.io, with an original score.
PythonTerminal UI

Privateer Database

Complete
A searchable dataset of the Wing Commander: Privateer (1993) universe — the reference the game never shipped with.
PythonSQL

Space Fantasy Font Pack

New
Six original fonts hand-built brick by brick in FontStruct — space-sim stencil displays, Privateer-era cockpit pixels, a battle-damaged glitch variant, a DOS pixel face, and a draconic rune cipher players can actually decode. TTF, OTF, and web-ready WOFF2.
FontStructType designWOFF2

Dicey!

Active Dev
A tabletop RPG / board game I'm designing and playtesting.
Game designPlaytesting
Door 5 — The Book & Kind85
Could a book teach you to type in a song?
A programming book in beta, the forgiving text encoding I invented for it, and the proof: printed lines a reader hand-types that become real music.

Kind85 — A Forgiving Text Encoding

Free · MIT
“Could we write music in a book — have a reader type it in, and get music out the other end?” The encoding I invented to make the answer yes. Type text, mangle it with typos, watch it self-heal — then watch it rebuild an entire MP3 from 8,525 checksummed lines, live in your browser.
PythonJavaScriptError correction

Combat Theme — the Type-In Song

Book Asset
The payoff of Kind85: 32 printed lines a reader hand-types become a 6.4 KB MIDI, byte-perfect. Hear it, download it, compare it against the reference render.
MIDIKind85

The Programming Book

Beta · Aug 2026
A programming book I'm writing — beta release targeted for August 2026. Home of Kind85 and the type-in engine.
WritingPython
Door 6 — Training & Tutorials
Teaching the tools I use
Documentation is a deliverable too — references built so other people can learn a tool faster than I did.

FontStruct Keyboard Shortcuts

Reference
Every FontStruct shortcut mapped onto an interactive keyboard — hover any key for details, hold Shift for the second layer, filter by category. Built for the FontStruct community while making the font pack; also comes as a printable infographic.
HTML/CSS/JSInfographic design
Door 7 — Oddities & WIP
The weird bench
Reverse engineering and works in progress — the door for things that don't fit doors.

SimCopter 2026

Active Dev
Reverse-engineering & modding the 1996 Maxis classic SimCopter.
Reverse engineering

Walking Buddy

WIP
A wellness desktop companion (work in progress).
PythonDesktop GUI
About
Builder first
Most of what I've shipped came from spotting a manual, error-prone process and quietly automating it — then handing colleagues a one-click tool. I work on top of existing systems rather than rebuilding them, and I care about measurable time saved. Hiring for something specific? I build a custom page for roles I apply to — this is the whole toolbox.
Contact
Hiring?
Recruiters & hiring managers — send a note and it lands in my inbox. It goes through a form, so my address stays off the page. Prefer LinkedIn? That works too.
or message me on LinkedIn ↗