← all years

Posts from 2026

28 postsRSS ↗
Sep 23, 2026·4 min read

Owning the output when you use AI agents

Saying 'my agent did it' can make it easier to distance ourselves from the work we submit. I'm looking at ownership of that output and where delegating to agents overlaps with leadership.

AIAgentsLeadership+1 more
Sep 15, 2026·5 min read

Experimenting with automatic memory in Codex and Claude

After rewriting my skills and clearing memory, Codex and Claude felt better to use. My next experiment is to disable automatic memory, informed by research on context and memory poisoning.

AICodexClaude Code+2 more
Sep 04, 2026·3 min read

Getting sudo to use Touch ID on macOS

macOS can authenticate sudo with Touch ID through pam_tid.so. The update-safe setup is one line in /etc/pam.d/sudo_local, with the normal password prompt left as a fallback.

macOSTerminalTouch ID+1 more
Sep 02, 2026·7 min read

Excluding Shunt data from Time Machine backups

How Shunt uses APFS copy-on-write data volumes, how those differ from sparse container disks, and which reproducible data I exclude from Time Machine.

Time MachinemacOSAPFS+3 more
Jul 18, 2026·3 min read

Using banked Codex usage resets

How I redeemed a promotional Codex usage reset in July 2026, what changed in my usage balance, and why the value depended on when I used it.

AICodexOpenAI+3 more
Jun 18, 2026·4 min read

Your experience is a runtime dependency

AI agents are already very capable, but they don't automatically have the judgement that makes you effective in your current role. Skills and agent instructions are how you package that experience so the agent can use it.

AIAgentsAgentic Engineering+3 more
May 20, 2026·3 min read

Getting cmux to hand HTML files back to my real browser

cmux 0.64.5 flipped the default for opening local HTML files: they now preview inside cmux instead of launching your system browser. One settings key flips it back.

cmuxTerminalmacOS+1 more
May 05, 2026·6 min read

How to fix GoHighLevel (GHL) emails going to spam

Checking GoHighLevel sending-domain authentication, restoring a missing DKIM record, and interpreting mail-tester results after the fix.

GoHighLevelEmail DeliverabilityDMARC+4 more
Apr 29, 2026·5 min read

Explaining the engineering work behind AI-generated prototypes

AI can shorten the path to a working prototype. I think developers need to make the remaining work on reliability, security, and maintainability clearer when discussing delivery.

AISoftware DevelopmentOpinion+4 more
Apr 28, 2026·4 min read

Managing OpenClaw From My Mac Without Running It Locally

I edit OpenClaw scripts and configuration on my Mac, then use an SSH wrapper to test and run them on the homebox server that holds the services and runtime state.

OpenClawSSHAutomation+3 more
Apr 24, 2026·3 min read

Migrating from Ghostty to cmux

cmux is built on libghostty and reads my existing ~/.config/ghostty/config, so the move from Ghostty was effectively a relaunch. Here is what it actually got me: workspaces with PR status in the sidebar and an embedded browser for opening plans and PRs next to the terminal that owns them.

TerminalcmuxGhostty+3 more
Apr 09, 2026·9 min read

How copilot_here filters Docker requests through a socket broker

Why I built a brokered Docker socket instead of sharing the raw one, how the two-phase request inspection works, and the limits of those checks.

copilot_hereDockerSecurity+1 more
Apr 09, 2026·6 min read

Setting Up Docker-in-Docker in copilot_here

Step-by-step guide to enabling the brokered Docker socket, configuring image allowlists, and tuning privilege controls per repo.

copilot_hereDockerDevOps+1 more
Apr 07, 2026·8 min read

Making Claude’s research cache an on-demand skill

I kept my research cache and skills, but removed the global trigger that made Claude load them on every task. Here is what worked, what added friction, and why I now invoke research when needed.

Claude CodeAISkills+3 more
Apr 02, 2026·6 min read

Reducing package supply-chain risk with release-age checks and lockfiles

Configuring a delay before adopting new package versions, keeping repeatable installs with lockfiles, and understanding what these controls can and cannot prevent.

SecuritynpmSupply Chain+5 more
Mar 27, 2026·3 min read

Fixing Microsoft Teams tab loading failures (Ocdi error)

How to fix the "There was a problem reaching this app" error and "failed reason: Ocdi" in Microsoft Teams configurable tabs.

Microsoft TeamsTeams SDKCSP+1 more
Mar 22, 2026·5 min read

Building a custom Claude Code status line

Claude Code gives you a JSON blob and a shell script hook. I used it to build a multi-line status line with repo info, GitButler branches, cost tracking, and rate limits in one session.

Claude CodeAITerminal+3 more
Mar 22, 2026·6 min read

Next.js + TinaCMS on GitHub Pages behind a Cloudflare Worker

The gotchas I hit deploying a Next.js static export site with TinaCMS to GitHub Pages, proxied through a Cloudflare Worker — and how I fixed them.

Next.jsTinaCMSGitHub Pages+2 more
Mar 11, 2026·4 min read

Ghostty tab titles from git repo names

Using a zsh hook and Ghostty configuration to show the git repo name in terminal tab titles.

GhosttyTerminalZsh+2 more
Mar 10, 2026·11 min read

My dotfiles setup: how I manage my dev environment

I've been asked about my dotfiles a few times, so here's the full breakdown — GNU Stow for symlinks, multi-identity Git, 1Password SSH, AI agent configs, and a bunch of shell tricks I've picked up along the way.

DotfilesTerminalZsh+3 more
Mar 06, 2026·7 min read

Migrating my terminal setup to Ghostty, Zinit, and Starship with Claude

How I used Claude Code to migrate my terminal and shell configuration, preserve my existing integrations, and check the result.

AITerminalGhostty+3 more
Mar 04, 2026·5 min read

copilot_here: Q1 2026 Updates - Package Managers, Golang, Podman & More

Q1 2026 brings copilot_here to your favorite package managers (Homebrew, WinGet, .NET tool), adds Golang support, enables Podman and OrbStack as container runtimes, and introduces model configuration.

copilot_hereDevOpsPodman+4 more
Jan 23, 2026·6 min read

AI as an abstraction layer: reviewing outcomes and implementation

How AI-assisted development compares with earlier abstractions such as SMTP libraries, and why I expect more of our work to involve specifying and verifying outcomes.

AIDevelopmentMCP+1 more
Jan 14, 2026·2 min read

Fixing iTerm2 Initial Directory: When the UI fails, use the Shell

Using iTerm2’s Send text at start setting to open new terminal sessions in a chosen working directory when the Initial Directory setting does not take effect.

iTerm2macOSZsh+1 more
Jan 12, 2026·2 min read

Resetting Tailscale on Windows after a 503 no-backend error

How to check the Tailscale Windows service and reset local state when the client stays on Starting with a 503 no-backend error, including the re-registration consequences.

TailscaleTroubleshootingDevOps+1 more
Jan 11, 2026·4 min read

Troubleshooting Docker containers starting before an NFS mount

Why a Docker container can use a local directory when its NFS share is not mounted, how to check the backing filesystem, and the limits of create_host_path: false.

DockerNFSHome Assistant+2 more
Jan 07, 2026·3 min read

Fixing Kiota integer properties generated as UntypedNode

How ASP.NET Core JSON number handling affects OpenAPI schemas and Kiota integer properties, and what changing to strict number handling means for existing clients.

KiotaOpenAPIASP.NET Core+2 more
Jan 01, 2026·3 min read

The Day of the Year Fitness Challenge

Starting a new year usually comes with big fitness goals that fizzle out by February. I'm trying something different this year—a challenge that scales with me, starting with just 1 second of effort.

FitnessConsistencyFamily+1 more