My year-long quest to debug a single TCP connection

After my year-long quest to debug a mysterious and faulty TCP connection, I created go-tcpinfo. It’s a Go library for safely getting TCP_INFO metrics from the Linux kernel, built to provide the deep observability needed to solve such issues.

Posted on

Extracting a rotten Bluetooth

I remove the unreliable Bluetooth module from my cheap ELM327 (clone) OBD-II scan tool and add good-old wired USB.

Posted on

Waking up a 23-year old GPS module

The adventure of bringing an early consumer GPS module (23 years old!) to life and connecting it to a Raspberry Pi to make a stratum-1 NTP server. Bonus: some reflections on tech that was built to last.

Posted on

Adventures in abstraction with Rust's embedded-hal

An experiment with Rust’s embedded-hal abstraction: I have a common implementation of Game Of Life rendering to an OLED display on three different platforms: an SDL simulator on my desktop, and via I2C on Raspberry Pi running Linux, and bare metal on an STM32 ARM Cortex-M.

Posted on

Fixing a reject mains voltage sensor

I tell a story (mostly with photos) about replacing my incorrectly assembled ZMPT101B mains voltage sensor module by replacing an incorrect op-amp after figuring out what the correct part is (through some internet sleuthing).

Posted on