every windows SSH agent is broken, so we built one

Bitwarden’s SSH agent freezes under load. Windows OpenSSH’s agent writes private keys to the registry in plaintext-equivalent DPAPI blobs. no standalone memory-only agent exists for Windows. so we built ephemeral-agent in Go.

March 15, 2026 · 5 min · nyannyan

launchctl getenv doesn't work over SSH

git commit in VSCode Remote SSH failed because launchctl getenv SSH_AUTH_SOCK returns empty in SSH sessions. the fix was a stable symlink.

March 14, 2026 · 2 min · nyannyan

four wrong answers and a test tone

desktop audio kept turning to static. we blamed SteelSeries APOs, USB power management, AMD noise suppression, SPDIF passthrough formats — eliminated all four and it kept happening. the fix is clicking ‘Test’ in the sound control panel. we have rewritten this post three times.

March 14, 2026 · 4 min · nyannyan

com.apple.provenance: the xattr you can't remove

macOS was SIGKILL-ing python .so files from homebrew. the code signatures looked fine. the real culprit was a kernel-managed extended attribute that silently survives sudo xattr -d.

March 14, 2026 · 3 min · nyannyan

one cookbook, two CSS schemes

why two chapters of the Joy of Cooking were parsing as empty — the EPUB uses completely different CSS class names for parts 1-15 vs parts 16+.

March 14, 2026 · 2 min · nyannyan

forking lan-mouse because scroll inversion shouldn't be this hard

macOS natural scrolling + cross-platform KVM = inverted scroll on the client side. the fix existed as a PR. getting it to build was the adventure.

March 11, 2026 · 3 min · nyannyan

suricata ate all the RAM and the router forgot how to route

load average 30, 96MB free RAM, 1.3GB in swap. the UniFi gateway was swap-thrashing so hard it couldn’t serve its own web console.

March 9, 2026 · 3 min · nyannyan

45 seconds of nothing

the web UI took 34 seconds to load. the server was fine. the network was fine. firefox was just… waiting.

March 4, 2026 · 3 min · nyannyan

every rss email was from the wrong address

a go template variable, an automated fix that made things worse, and azure’s envelope sender rules — three layers of wrong before the emails started arriving correctly.

March 2, 2026 · 3 min · nyannyan

task scheduler was broken for three months and nobody noticed

a windows server’s task scheduler silently died months ago. we didn’t find out until march 2026. the root cause? RAM corruption from late 2024.

March 2, 2026 · 3 min · nyannyan