Blog


Tabs vs. Spaces: Who Cares

June 26, 2026

Tabs vs. Spaces: Who Cares

I once had a pull request sit open for three days. Not because the logic was wrong, not because the tests were failing, but because two developers could not stop arguing about whether I should be...

Read

Stop Passing File Paths as Strings: A Quick Introduction to SplFileInfo

June 19, 2026

Stop Passing File Paths as Strings: A Quick Introduction to SplFileInfo

A while back, I was building a small file processing script. It took an upload directory, looped through the files, and did different things depending on the file type. It's most likely something...

Read

Weekly Digest - June 15, 2026

June 15, 2026

Weekly Digest - June 15, 2026

Three posts this week about PHP's SPL, git workflows, and podcasting. PHP has shipped SplQueue, SplStack, SplMinHeap, and friends since version 5.1, and most of us have been writing the same...

Read

Stop Reinventing Data Structures: PHP's SPL Already Has What You Need

June 12, 2026

Stop Reinventing Data Structures: PHP's SPL Already Has What You Need

A few years ago, I needed a queue. Nothing fancy, just a list of tasks that my script would process one at a time in the order they came in. First in, first out. Classic queue behavior, so I knew I...

Read

Weekly Digest - June 8, 2026

June 8, 2026

Weekly Digest - June 8, 2026

Two posts this week. One for the podcasters, one for the PHP developers (and if you're both, it's your lucky week). If your episodes keep falling apart, I'd bet it's not a motivation problem. It's...

Read

Stop Writing Recursive Directory Functions Use RecursiveDirectoryIterator Instead

June 5, 2026

Stop Writing Recursive Directory Functions Use RecursiveDirectoryIterator Instead

A few years back, I spent an entire afternoon debugging a recursive function that was supposed to scan a project directory and list every PHP file. It worked great on small folders. Then I pointed it...

Read

Weekly Digest - June 1, 2026

June 1, 2026

Weekly Digest - June 1, 2026

Happy Monday all! Three posts this week covering podfade, AI-assisted development, and Git workflows. Most podcasters who quit tell themselves they lost their passion, but I think the real issue...

Read

Stop Letting Claude Search Your Codebase

May 29, 2026

Stop Letting Claude Search Your Codebase

I kept burning tokens watching Claude search through my repository for information it already could have had. The pattern was always the same. I'd ask Claude to add a feature, and before it wrote a...

Read

Weekly Digest - May 25, 2026

May 25, 2026

Weekly Digest - May 25, 2026

It was a big week last week because PHP/JS Tek 2026 happened, which meant conference talks, post-conference sausage, and apparently a five-act musical. Here's everything I published this week. If...

Read

Claude Code Commands That Get Smarter Every Time You Use Them

May 22, 2026

Claude Code Commands That Get Smarter Every Time You Use Them

I fell into an embarrassing pattern with Claude Code. I'd run a command, Claude would do something slightly off, I'd correct it, Claude would fix it, and we'd move on. Then, less than an hour later,...

Read