Back to blog

Dev Diary #15

Replaced matrix screensaver with meditative commit watcher using 180-second breath cycles.

May 6, 2026

Dev Diary #15

Spent yesterday rebuilding what lives in my terminal when I'm watching commits come in. The old matrix effect was noise—literally, just characters falling down the screen. I wanted something that actually breathes with the repository's pulse instead of treating every commit like an emergency alert.

Ripped out matrix.py entirely and wrote watch.py from scratch. The new renderer uses glyphs that fade in and out on a cycle, timed to meditation rather than machine urgency. Started at 12 seconds per breath, which felt frenetic. Jumped to 60 seconds. Still wrong. Then 180 seconds, and yeah—that's the cadence. The glyph gradient brightens at the inhale, dims at the exhale. It's subtle enough that you don't consciously watch it, but your brain syncs to it anyway.

Hit a wall with curses.COLORS. The function returns -1 if you call it before start_color, which I did. Spent forty minutes chasing a logic error that didn't exist—the bug was in the call order, not the math. That's the kind of thing that makes you feel stupid until you realize curses is just ancient and has opinions about initialization order that aren't documented anywhere obvious.

Also made commit-watcher.py respect the current working directory instead of hardcoding a repo path. Sounds trivial, but it means I can use the same script in multiple repos without symlink gymnastics. The $PWD lookup lives in the zsh hook now, passed as an argument on startup.

Separately, added a verification layer for Claude—a pre-flight check that sources any code claims against actual files before acting on them. Lives in verify-before-act.sh. The settings file documents the policy. I don't trust external systems making changes to my environment without at least asking what they're operating on.

The watch renderer isn't done. The glyph selection is still random, and I want each commit to have its own glyph that persists for a few cycles. Right now they're just noise that happens to be slow. Still working on making the visual language match the repository's actual heartbeat.

Home
About
Resume
Projects
Blog
Press
Search