Firmware · Protocol · Mobile · Desktop
A bug could start in the UI and end in firmware.
A connected hardware platform
A consumer device with a companion app. Over several years I owned the embedded firmware, the wireless protocol it speaks, the codec library that decodes it, the cross-platform app that drives it, and the desktop tool engineers use to inspect and flash units in the field.
The decision that mattered came early and looked like extra work at the time. The original design sent character commands over the wire, composed wherever they happened to be needed. I replaced that with an actual protocol — a byte-level encoding with framing, a control byte carrying type and command, and a length-prefixed payload — and then wrote it down as a specification rather than leaving it implicit in whichever codebase happened to speak it last.
That is the whole engagement in one choice. Because the protocol was a document and a codec library rather than a habit, the client can commission hardware from someone else and hand them the spec. New devices do not require a new app. And when the wireless transport later moved from Bluetooth Classic to BLE — because Classic needs Apple's accessory program on iOS and BLE does not — the codec needed no change at all. Three of the five layers moved. The one describing what the bytes mean sat still, because it had never been coupled to how they travelled.
The rest was less elegant. The native audio player needed capabilities neither web view gave me, so I wrote a proper Capacitor plugin with iOS and Android implementations behind one interface rather than special-casing per platform in app code. A device-name field computed its length in UTF-16 code units while the payload was UTF-8, so accented names were silently truncated on the wire — and a 256-byte name wrapped to zero, which the protocol defines as leave unchanged, turning a rename into a convincing no-op. Auditing that turned up a use-after-free in the firmware's rename handler that had been there since the first commit.
The one I remember is a test jig that would not talk to one particular USB bridge chip. It was a wiring fault, and it was fixed with a soldering iron rather than a commit — which is why there is no trace of it in the history at all.