Browse category Blog
Neovim PHP Development Setup
If you’ve ever watched a colleague fly through code in NeoVim and thought “that looks fast but I’d never figure out the config,” the barrier to entry has dropped significantly. LazyVim — a NeoVim distribution that ships with sensible defaults and a plugin manager — gives you a fully functional IDE experience within minutes, with […]
PHP 8.5 Pipe Operator
PHP 8.5 shipped with a feature that functional programming enthusiasts have been requesting for years: the pipe operator (|>). If you’ve used pipes in Unix shells, Elixir, F#, or even JavaScript proposals, the concept will feel immediately familiar. If you haven’t, you’re about to discover one of the cleanest ways to express data transformations in […]
Why skipping Eloquent doesn’t mean skipping SQL injection protection
Video version at: https://youtu.be/gAVfQhPw8Do A few weeks ago, I posted something on LinkedIn that ruffled some feathers. Here’s what I said: “Defaulting to the ORM for everything isn’t a best practice. It’s just the path of least resistance.” The replies came in fast, and a good chunk of them said the same thing: “That’s unsafe! […]
How to use git rebase without breaking your team’s history
Video version: https://youtu.be/5n2VZS_YPv0 Let’s say you’re working on a feature branch called add-discount-codes. You’ve been at it for a couple of days, and you’ve got five commits with all of your work done. A team member mentions that git rebase can make sure you have the most recent changes from the “main” branch. So you […]
Token-Oriented Object Notation (TOON) For PHP Developers
See the video version at https://youtu.be/Nk9ayWxkJ1M It’s an unfortunate piece of our current developer reality that a lot of our day is spent worrying about how many tokens we’re spending. Every time you send structured data to an LLM API, you’re paying for tokens. And if you’re sending arrays of similar objects as JSON, you’re […]
Ubuntu Firewall Setup in Less Than 5 Minutes (Plus One Step That Will Lock You Out)
Setting up a Virtual Private Server (VPS) without a firewall is asking for trouble. Ideally, you’d have a dedicated security person to handle all of this, but that’s rarely the case. One thing I always do on a fresh Linux server is configure a firewall. It used to be a real headache, but […]
Advanced Unique Index Patterns for Soft Deletes (MySQL and PostgreSQL)
Tell me if this has ever happened to you: a user contacts support because they’re randomly seeing different order histories every time they log in. Sometimes they see their recent purchases, sometimes they see orders from years ago, and sometimes they see nothing at all. After several hours of debugging, you discover that […]
Here’s Why FrankenPHP Worker Mode Saves Your Sanity
A lot of developers spend little to no time thinking about how our code gets from being code to something that can be interacted with by the consumers of our code. There are several large components that we can affect to improve the performance of this interaction. One of them that doesn’t get much […]
Database Views: The PHP Feature Nobody Uses (But SHOULD)
One of the more challenging pieces of maintaining applications that uses an SQL database is the fact that queries only every get more complex as the application grows. It never ever gets simpler so you start having to copy and past the same complex join into multiple places and good luck if you have […]
Why Your PHP Dates Keep Breaking (And How to Fix It)
If you’ve ever spent hours debugging a date-related bug only to discover that some code somewhere modified a DateTime object you thought was safe, you know the pain. DateTime in PHP is mutable, which means any code that touches your date object can silently change it, leading to bugs that are incredibly challenging to […]


