18 posts since 2022
Writing
Notes on backend architecture, developer tools, infrastructure, and working with AI.
2026 , 12 posts
-
TinyDash: a tiny dashboard behind a shortcut
TinyDash is a keyboard-first launcher for macOS, Windows, and Linux. Version 0.6 adds aliases, calculator history, and Homebrew and Linux packages.
-
Meet Jerd: Local PHP Development, Native on macOS
Jerd is a native macOS app that serves your .test sites over HTTPS, gives each project its own PHP version, and runs databases, mail, and S3 storage.
-
Herdr Bar: agent status in the macOS menu bar
Herdr Bar shows which coding agents are running, need input, or have finished, and opens their terminal panes from the macOS menu bar.
-
A performance review of how I use AI
What I do well with AI coding agents, where my habits cause problems, and what I want to change. A personal review based on two assessments of my chat history.
-
Full Page: capture a complete page in Brave
A Brave extension that captures a complete web page as one PNG, with a local preview and no image uploads.
-
Uppa: A Small Uptime Monitor at the Edge
A self-hosted uptime monitor and public status page built for Cloudflare Workers.
-
Bopop: press, type, go
I built Bopop, a keyboard-first launcher for macOS. Local-first, no Accessibility permission, zero dependencies. Free and open source.
-
Claude Meter 2.0: Your Claude Usage, Now With Energy
Claude Meter 2.0 shows your Claude usage as the energy you have left, with a card per account and settings to make it yours. Free and open source for macOS.
-
Claude Code Tips: 10 Settings and Habits I Use Daily
Ten Claude Code tips I use every day: auto mode setup, a global CLAUDE.md working agreement, critic agents, effort per model, and settings that cut noise.
-
Meet Claude Meter: Know Your Claude Usage at a Glance
I wanted to see my Claude Code usage before hitting the wall, so I built a macOS menu bar app. Picking the data source mattered more than the parser.
-
The Eight Levels of AI Adoption
Most people who say they use AI mean they ask ChatGPT questions. A practical guide to the eight levels, from answering questions to running systems.
2025 , 1 posts
-
TypeID PHP: Type-Safe, Sortable IDs for PHP
A PHP library for TypeIDs: UUIDv7 with a type prefix, like user_01h455vb4pex5vsknk084sn02q. Sortable, URL-safe, and one composer require away.
2023 , 3 posts
-
The Spectrum of Software Makers
From no-code to Python to assembly language. As a software maker aspiring to build a business, what's your game plan?
-
They said PHP is dead
Is PHP dead? Why PHP earned its bad reputation, how PHP 7 and 8 made it fast and modern, and why Laravel keeps it the workhorse of the web.
-
Laravel Skeleton
The Laravel Skeleton offers a rapid and efficient way to start a new project by scaffolding a Laravel app with minimal setup.
2022 , 2 posts
-
How to Scale a System to Millions of Users
From one server to millions of users: stateless web servers, load balancers, read replicas, caching, and a CDN, plus why DigitalOcean is usually enough.
-
Database Primary Key: Integer vs UUID vs NanoID
Integer, UUID, ULID, or NanoID as a primary key? My default: an auto-increment integer for joins plus a UUID or ULID for public URLs, with a comparison table.