I build across six domains that rarely turn up in one engineer: embedded firmware, PCB design, backend services, database architecture, full-stack web, and AI tooling.
I own a commercial fuel and fleet management product line end to end — the circuit board, the firmware on it, the protocol it speaks, the database behind it, and the reporting layer people use. Several hundred sites across Australia run on it.
📍 Sydney, Australia · me.carlk.org · LinkedIn
WebFMS — a ground-up Go and PostgreSQL replacement for a platform that has run on Microsoft Access and VB6 for three decades. A device comms server speaking a binary protocol to field hardware, a REST API, a web frontend, and the tooling that migrates thirty years of production data intact.
The hard part isn't the greenfield work. It's that hundreds of sites keep dispensing fuel throughout, and the field hardware is fixed. The new system accommodates the old protocol, never the reverse.
luckfox-ui (source release pending) — a config-driven touchscreen dashboard for
the Luckfox Pico (Rockchip RV1103, ARM Cortex-A7). Pure Go, CGO_ENABLED=0, standard
library only, driving the Linux framebuffer and evdev touchscreen through raw ioctls.
Most of the work was in the ABI details that only surface on the target hardware:
scanline stride from FBIOGET_FSCREENINFO, and a 16-byte input_event on ARM32
guarded by a compile-time assertion.
Legacy meets AI
| Repo | What it does |
|---|---|
| mcp-accessdb-go | MCP server in Go giving AI assistants access to legacy Access97 databases. Bridges 30-year-old data infrastructure with modern LLM tooling. |
| mcp-server-access-mdb-with-access97 | Python MCP server supporting both modern Access/SQLite and legacy Access97 formats. |
Hardware
| Repo | What it does |
|---|---|
| NZ_Proto_PMod | KiCad design for a protocol personality module — schematic, PCB, master and slave boards. Adapts a fuel console to New Zealand pump protocols without changing the console. |
| esphome-custom-adc | Custom ADC component for ESPHome, in C++. |
| Arduino-Custom-Streams | Enhanced version of the Arduino Streams class. |
Languages Go · Python · TypeScript · C++ · Embedded C · SQL Data PostgreSQL (schema design, row-level security, multi-tenancy) · SQL Server · Access/Jet · SQLite Embedded KiCad · ESP32 · ESPHome · Arduino · I²C · serial protocols · TCP/IP AI MCP server development · Claude API · autonomous agent systems Infra Docker · Linux · Proxmox · Unraid
Still maintained in production: VB6, Crystal Reports, Access/Jet, Dynamic C, 8051 and 68HC08 assembler. Someone has to.
I started this career installing and commissioning these systems on customer sites. That's still the most useful thing on my CV — it's hard to design a good industrial product if you've never had to service one in the rain.
Full CV at me.carlk.org/cv · carl@carlk.org
