Industrial PC RS-232 Garbled Data: Software Correct, Hardware Fine — Ground Loop Postmortem

An industrial PC (TI AM64x heterogeneous SoC, A53 Linux + R5F RTOS, 24V supply) garbles continuously on a 3-wire RS-232 port at correct 115200 8N1 settings. Via SSH, the tx/rx/fe counters in /proc/tty/driver/serial verified both directions of the channel, ruling out software and unit defects; garbling persisted with only GND connected and vanished the moment the laptop’s power adapter was unplugged — a ground loop between the 24V industrial supply and mains. Dual-isolation converter verified in practice: no interference with the laptop plugged in.

2026-09-02 · 9 min · 1824 words · Intent

Windows Docker Ghost Port Mapping: EMQX 1883 Silently Reserved by WinNAT Postmortem

Docker Desktop on Windows with a full stack (backend + EMQX 5.8.9 + TimescaleDB + Valkey). Backend ping/pong works, but mosquitto_pub keeps returning Connection refused. Other ports in docker ps map fine; only 1883 lacks the 0.0.0.0:1883-> prefix and Docker reports no error. Root cause: Hyper-V/WinNAT dynamic port reservation holds 1883 (in the 1802–1901 range). Four remediation options: swap port, temporary reclaim, admin allowlist, fix the dynamic port range.

2026-08-25 · 4 min · 645 words · Intent

Rootless Container Inbound Source IP Preservation: Hybrid Host-Bridge Topology and Tradeoff Analysis

Architecture analysis and implementation of inbound source IP preservation under Rootless Podman. Uses a Hybrid Host-Bridge topology to retain real client IPs at edge services while preserving network isolation for internal services, with tradeoff analysis, implementation details, and verification methodology.

2026-07-11 · 9 min · 1854 words · Intent

IIoT Ingress Postmortem: Troubleshooting EMQX 5.8 Under Podman Rootless

A postmortem of an IIoT ingress deployment failure: under Podman Rootless, EMQX 5.8 exposed unstable Erlang IPC, HOCON schema validation failures, a blocked security-group port, and M2M requests rejected by CSRF middleware. This post covers the confirmed causes, fixes, and validation path.

2026-05-28 · 9 min · 1806 words · Intent

TrafficMonitor CPU Optimization Postmortem: An Engineering Simplification from 4% to 0.6%

A postmortem on CPU optimization under a high-frequency polling workload: by shrinking the UI logging path, removing high-frequency state machines, and fixing the wait model, CPU usage dropped from 3.6%~4.2% to 0.1%~0.6%.

2026-04-26 · 5 min · 974 words · Intent

Rootless Podman + Systemd Supervision Failure Postmortem: Diagnosing and Repairing a Broken Recovery Path

A postmortem on a failed recovery path under Rootless Podman + Systemd user units, covering confirmed contributing factors, concrete remediation work, validation steps, and remaining risks.

2026-04-03 · 16 min · 3344 words · Intent

JWT Dual-Token Hardening Postmortem: From Stateless Refresh to Revocable Redis Sessions

A security hardening postmortem for JWT AT/RT architecture: treating Redis reservation as completed and implementing RT rotation, replay detection, and revocable sessions.

2026-03-23 · 4 min · 740 words · Intent

HTTPS Upgrade Triggered 403: A Deep Postmortem from Security Middleware to Container Isolation

A postmortem on a persistent 403 after HTTPS migration, traced to both missing CSRF allowlist updates and Podman Rootless image namespace isolation.

2026-03-17 · 3 min · 517 words · Intent