Archives
All the articles I've archived.
-
We moved this site from Ghost to Astro — in an afternoon, using an AI agent
Today we migrated millerdatabases.com from Ghost to a static Astro site, with a Claude Code agent doing most of the keystroking. Here's how it went.
-
Build your own C# code analyzer
Code quality analysis is essential as AI transforms development workflows. With developers working faster and trusting AI autocomplete, subtle bugs and…
-
Color-coding folders in VS Code
You can add a little semantic organization to the folders in a large VS Code project directory without nesting them into subfolders. It’s easy to do with a…
-
Auditing data types and column sizes in SQL Server
Adding a few ounces of sanity to your database schema today can save you from a metric ton of trouble and confusion later.
-
Headless software is a growing trend
The first time I saw the term "Headless CMS", I thought of the horseman in The Legend of Sleepy Hollow. Needless to say, the term "headless" means something…
-
How do you build a fast, lightweight solution for CQRS and event sourcing?
CQRS+ES is a software architecture pattern based on the principle of cause and effect, and it guarantees an audit log with perfect fidelity. Commands write…
-
Automate your website content migration with the Ghost Admin API
Recently we migrated over a hundred pages from a custom website content management system into Ghost with a simple homegrown ETL utility — and it took less…
-
The Copilot Delusion
I enjoy watching chess grandmasters who stream their games online. It is especially fascinating when they encounter an opponent who tries to win by cheating…
-
Structuring documentation that scales
This article presents the structure for a consolidated documentation portal to support multiple audiences and promote the long-term maintainability of a…
-
Extract time entry worklogs from Jira and Tempo with .NET API integration
Jira API + Tempo API + .NET 9 = Extract the data you need! Jira and Tempo are incredibly powerful together. Jira gives you customizable workflows and issue…
-
Determine the length of the largest text value in every database table column
Whenever I inherit a database from another developer, I always start by analyzing its size and schema to identify any immediate quick wins to improve its…
-
The 28 principles of attraction
Attraction isn't about luck or charm - it's about alignment. In his book, The Portable Coach, Thomas Leonard lays out a bold, practical framework for…
-
The high cost of low software estimates
When you plan the cost and effort for a new software development project, there is often a lot of motivation (some of it good, some of it bad) to…
-
Code of ethics and professional practice
This code of ethics was developed by the IEEE-CS/ACM joint task force on Software Engineering Ethics and Professional Practices . It was jointly approved by…