… has too many hobbies.

All Blog Posts

Date Title
Birds of Sanibel Island
"Why Does Test-Driven Development Work So Well In 'AI'-assisted Programming?"
A pipeline for getting bird videos from an IP webcam
What software engineers bring to AI-assisted software development
Never use Apple gift cards
"Your job is to deliver code you have proven to work"
Why tech companies encourage their software engineers to use LLMs
Introducing two tools for working with Plex media libraries
Letter of Recommendation: Simon Willison's Weblog
noclobber breaks JetBrains IDEs’ ability to read your shell environment
Streamlining my user-level CLAUDE.md
Linux server migration planning
Neat Image noise profiles for the Ricoh WG6
Neat Image noise profiles for the Leica X1
Beavers at work in West Lake Nature Preserve
Using systemd to keep an SMB share mounted
Using systemd to run a Docker container only when an SMB mount is mounted
Beavers in Dexter, MI
Automatically sort trail camera images with trailcamai
pdate.dzdz.cz: A website for pdate
Not everything in your todo list needs to be a proper GTD Next Action
pdate: Date/Time Parsing for Programmers, DevOps, and SRE
AlfredSwitchWindows now supports Ghostty tabs
#latergram: Wild Birds at the Detroit Zoo, April 2024
#latergram: Bird Photos from Kensington Metropark, July 2025
A Tool for Working with Git Worktrees
Setting Up & Testing Spotlight + Samba + Elasticsearch
Getting Good Results from Claude Code: Writing Good Prompts
New Derivative of my Ubiquiti Cloud Key 3.5" HDD Adapter
LLM + MCP Use Case: GitHub Actions Workflow Updates
Celebrating 250(+) Public GitHub Repositories
LLM Q&A Technique: Context Priming
Ask Claude Code to fix CI
Give your LLM Coding Tools Their Own Tools
Teaser for upcoming Claude Code posts
Getting Good Results from Claude Code
Navigating and Rewriting Legacy Systems
An improved nginx_ensite script
Quick Devops Tool: gha-secrets-setup
How I share Bird Buddy photos online
A Lychee photo library tool for titling photos
Avoid unbounded inboxes; avoid stress
Recommendation: Microphone Setup for BirdNET-Pi
feedfilter: an RSS feed postprocessing tool
I vibe-coded an AI photo organizer for Lychee
Use Your Type System
CO2 Monitoring and Alerting with Aranet4 + an4mon
Announcing the DzSolarized VS Code theme
Functional Documentation
Neat Image noise profiles for the Sigma sd Quattro H
birdbath.tube
Trying to remind myself that I don't have to do everything today.
Setting up a dev env for Lychee
🙄
A rule of thumb, that I need to keep in mind, is that it will take about the same amount of time to edit photos as I spent shooting them.
for no particular reason other than I think it's fun,
flickr-rss
I've long been worried that Apple will drop support for AppleScript automation in macOS updates, or at least allow it to decay into a horrible broken state.
A new feature, completed —
A new feature, continued —
A new feature appears —
How to rsync with sudo on both sides
Updated instructions for installing my Debian package repositories
Host Inventory for a (not-) Homelab
Tips on Brazing Copper and Stainless Steel
Someone please Photoshop a “Phantom of the Opera” mask onto this grackle for me
RIP: Aircraft Radar Skill for Amazon Alexa
Some TODOs for the new site
Great Moments in Modern Apple User Experience Design
Know Your Birds: Red-Headed Woodpecker
My eBird Profile
More Severance Michigan Connections
A Selection of Complex CSS Selectors
Sunset over Canyonlands National Park, viewed from BLM's Needles Overlook in Utah.
Birds in Moab and Arches & Canyonlands National Parks
Brief Review: Tamron 28-300mm F/3.5-6.3 Di VC PZD
My (Only) Two Complaints about the Canon 10x42 L IS WP Binoculars
Automating Ghost Routes & Redirects Deployment
Dust Caps for Oxygen/Acetylene Hoses
Solar Water Preheater Goals & Design Considerations
A migration to Ghost from Jekyll
Some new DNS-related tools
Everything I know about the YK-1000H NTP Server
Cloning Raspberry Pi SD cards
Faking the fan rotor lock signal in a Tripp Lite SU1000RTXLCD2U UPS
Letter of Recommendation: Quality Binoculars
Freeing disk space on GitHub Actions runners
Improved low-battery shutoff for my DIY Ego-powered 12V supply
Fixing Ego batteries in a low-voltage "defective" state
Making a Docker container depend on a disk being mounted
Moving fake-hwclock to a separate partition on a read-only Raspberry Pi
Raspberry Pi Use Cases
Letter of Recommendation: Where to start with Alastair Reynolds
Keeping a SMB share mounted on macOS (version 2)
Monitoring for NAS data corruption on ext4 with cshatag
Photographing an unusual aurora in southeastern Michigan
Linux: start an mdraid check even though bash's noclobber is set
Alfred workflows for searching Bear notes and Docker Hub images
Some recent bird photos
Pi Reliability: Reduce writes to your SD card