Skip to content
All writing

$ blog / engineering

Engineering

Lessons from what I run into at work, learned from and written down.

Series
Series · 12 parts Aug 2026

From 19 Goroutines to Exit 137

19 goroutines, one shared browser, exit 137. A postmortem tracing Go concurrency, GMP scheduling, memory layers, and the semaphore fix that stopped the bleeding.

Series · 10 parts Aug 2026

A Golang Upgrade's Chain Reaction

An automated dependency update bumped the Golang version and cascaded through Docker, Alpine, and libvips, teaching nine lessons about version coupling, contaminated test oracles, and silent security gaps.

Series · 10 parts Jul 2026

Reaching a Remote DB From Your Laptop

One mental model for reaching a remote database from your laptop: the five coordinates, the tunnel, docker packaging, and one-shot vs REPL queries.

Series · 7 parts Jul 2026

PKI & TLS Behind a Migration Ticket

A one-line migration ticket hid two opposite-facing TLS setups. Untangling the PKI behind it — the certificates, keys, and CAs — from inbound one-way TLS to outbound mTLS to Kafka.

Series · 8 parts Jul 2026

Crop, Resize, Fill: Image Processing

A GIF crop bug that rendered garbage taught how images and animation really work — format trade-offs, libvips page-strips, and one load path for stills and animation.

Series · 10 parts Jul 2026

One Operation, Many Engines

One operation, three engines: query ClickHouse, Spark, and MongoDB by thinking in intent instead of memorizing three sets of syntax.

Series · 5 parts Jul 2026

Thread-Safe Login, the Hard Way

A production race condition taught four lessons about locks, atomicity, and safe publication.

// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Life RecordYoutube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration