Embedded / IoT / Industrial data
Jack Hall
Firmware that stays connected, and the systems that read it.
C/C++ · Python · ESP32 · LTE · MQTT · Azure IoT
What I do
I build and support firmware for devices that live in the field. My current work is an ESP32 gateway that reads RFID tags over Ethernet, reaches the cloud over LTE or Wi‑Fi, takes its configuration from an Azure IoT device twin, and updates itself over the air. Most of my time goes to the parts that decide whether a unit in a customer's back room keeps working: TLS on a small memory budget, recovery when a modem or a link goes quiet, and diagnostics that tell a support desk what broke without a site visit.
Outside client work I build open tools for industrial data, from Sparkplug B conformance testing to statistical process control. I also write the release plans, test gates and support models that keep a fleet running. I'm based in the United States.
Selected projects
-
twinflow
A digital twin of a warehouse receiving and putaway operation. A discrete-event model runs against a simulated device fleet over MQTT, and a Lean Six Sigma engine judges both the live telemetry and the model's own predictions. The first build phase is closed, and the roadmap and its evidence rules are public.
-
spbconform
The Eclipse Sparkplug B 3.0.0 assertion table, and a runner that checks an edge node against it. It carries all 299 assertions the specification marks as testable, with an executable check for the 143 an in-process harness can observe and a recorded reason for each of the other 156.
-
secom-spc
Statistical process control on the UCI SECOM semiconductor manufacturing dataset, with a fail-prediction study that reports what the data can and cannot support.
-
sparkplug-pipeline
Industrial telemetry from a Sparkplug B edge node, over MQTT, into TimescaleDB, from one
docker compose up. The simulator reorders, duplicates, corrupts and replays messages late on purpose, and an integration test checks that each case lands where it should. Ingest measured at a median of about 4,200 messages per second on a laptop.
Engineering tools
-
performance-ladder-review
A measure-first performance skill for AI coding agents: delete before you tune, no claim without a number, and a
PERF:marker on every decision. Results from three of my projects are charted in the README. -
git-quality-gates
Git hooks and CI gates for conventional commits, a regression-test rule on fixes, comment and prose standards, and a copyleft license allowlist, with every bypass logged.
-
claude-code-setup
A template Claude Code configuration: layered context, generated routing, guard and nudge hooks with a self-test, and validators in CI.
-
rfid-reader-emulator
An HTTP/XML RFID reader emulator with seeded tag populations and fault injection, for bench-testing firmware without hardware.
Code samples
Small, tested pieces of code, published as gists.
-
Recovery ladder
Escalating self-recovery for unattended embedded devices, with boot-loop detection.
-
Cellular backoff
Exponential backoff with full jitter, a deadline and a circuit breaker for flaky cellular links.
-
Nelson rules checker
Nelson rules 1 to 8 for individuals control charts.
Case studies
Four write-ups. Three come from client work: two from a firmware engagement with an enterprise client, one from a computer vision proof of concept. I have left out names, sites and figures that could identify the clients. The fourth covers my open-source work on a radar sensor.
-
Gateway or device: placing an upload failure
Every unit on a test channel reported failed uploads. Laptop replays, failure timing and one TLS detail split the symptom into a gateway stall and a firmware bug, each with its own owner.
-
Checking pick accuracy with a camera model
A camera model trained to count seven look-alike items lifted order accuracy from a 72.0% hand-picking baseline to 94.1%, and its remaining errors pointed back at the packing process.
-
Shipping firmware fixes to a fleet with no rollback
A change catalogue, a release menu the client could reorder, bench and QA gates ahead of production, and release notes that describe only the release.
-
A phone app and a TV display for a radar sensor
An open-source radar sensor for sports ball tracking got a phone app that receives shots over Bluetooth LE when there is no Wi-Fi, a TV display driven by the TV's own remote, and a security review of its LAN server.
Contact
Email is the fastest way to reach me.
- johnragonhall@gmail.com
- GitHub
- github.com/ragonxdragon
- linkedin.com/in/johnragonhall