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

1,201 recipes from one cookbook

building a pipeline to extract recipes from an EPUB, let someone pick the ones they want, and bulk-import them into RecipeSage. the Joy of Cooking had 2,591 recipes. we imported 1,201.

March 13, 2026 · 4 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

open-sourcing a repo that knows too much

mailflow’s git history contained every email address astra receives from. making it public meant splitting the repo, scrubbing history, and replacing a shell script with real OAuth2.

March 2, 2026 · 3 min · nyannyan