Writing

Blog

Just some thoughts.

Compounding Two Weeks of Infrastructure

Two weeks where the knowledge system, the financial platform, and the Atlassian integration all grew up at once. The capstone: every Claude Code session now writes its own journal entry.

buildstoolsmeta

Debugging NSTextView Inside SwiftUI

NSRulerView breaks NSTextView when hosted in SwiftUI. Fifteen attempts to add line numbers. The fix was to stop using the ruler entirely.

buildstools

Tracking What Claude Code Actually Does

Two bash hooks, a REST API, and JSONL files in the vault. Activity telemetry for AI coding sessions, so you know what happened after the context window closes.

buildstools

Building a Knowledge System That Compounds

An Obsidian vault, a CLI, 40 skills, and a feedback loop that turns debugging sessions into reusable knowledge. None of it was planned.

buildstools

Debugging Claude Code's Bypass Permissions Regression

bypassPermissions configured correctly in both places. Blue dialogs on every command anyway. The fix requires a third key the docs don't mention.

tools

Replacing Dia's New Tab With a Bookmark Grid

A Chrome extension that gives Dia browser the new tab page it should have had: pinned bookmarks, sections, drag-to-reorder, and a workaround for a quirk nobody documented.

buildstools

vaultctl: Config and Frontmatter

v0.4.0 adds config and meta commands: one line to set up your vault path, one line to read or write any frontmatter field. Also: gray-matter will silently corrupt your dates.

buildstools

Debugging LazyLibrarian's Silent Config System

LazyLibrarian's config silently ignores your settings: no errors, no warnings. Found it by reading Python inside the Docker container.

toolsbuilds

Building a D&D Dungeon Master Skill for Claude Code

305 JSON files, campaign state management, ElevenLabs narration. Session 1: Selena fell 30 feet in the first ten minutes.

buildstools

Scheduling Jobs With Gemini CLI and Cron

Cron, bash, and Gemini CLI headless mode. No orchestrator, no SaaS, no daemon. Just crontab and a free API key.

buildstools

Testing Umami for Privacy-Friendly Analytics

Umami on the site. Open-source, privacy-first, zero cookies, no consent banner. Setup notes.

metatools

Replacing the Obsidian MCP Server With a CLI

MCP servers for Obsidian keep breaking in Claude Code. vaultctl is what replaced it, stateless, filesystem-only, no server to crash.

buildstoolsthoughts

Building a Full Analytics Platform Inside NetSuite (in ES5)

A multi-tab professional services analytics dashboard with AI analysis inside a 20-year-old ERP. One giant ES5 file at a time. Notes on what worked.

buildsrevopstools

Building This Site

The stack and architecture behind testinginproduction.co.

buildsnext.jsmeta

Glossary

Every technical term on this site, defined. Hover any teal term in a blog post to see its definition; this page collects them all in one place.

meta