PHP
Partial function application in PHP 8.6
PHP 8.6 will introduce partial function application, allowing you to pre-fill some arguments while leaving others for later. Brent explains this new language feature with practical examples. Read more
PHP 8.6 will introduce partial function application, allowing you to pre-fill some arguments while leaving others for later. Brent explains this new language feature with practical examples. Read more
[AdSense-A]
At Laracon India, I launched a major update of Ray. For that talk, I needed a little demo project to showcase Ray. I built a simple website about a then-fictional mobile app to play a Scrabble-like word game called WordStockt.
But then I got curious: how far could I push AI-assisted development? Could I actually just create the whole game? After about 10 days, WordStockt is a fully functional word game that's 98% vibe-coded. It's available for iOS and Android. In this post, I'd like to tell you more about it.

Brent continues his optimization journey processing 11 million database events. Starting from 50k events per second, he implements combined inserts, skips unnecessary deserialization, and reaches 400k events per second. A great deep dive into PHP Read more…
Martin Fowler on how technical terms lose their meaning as they spread. When a useful concept becomes popular, it passes through a “telephone game” of explanations until the original definition gets diluted or even inverted. Read more…
The final part of Oh Dear’s series on SQL performance. Mattias introduces phpunit-query-count-assertions, a package that catches N+1 queries, duplicate queries, and missing indexes in your test suite. Since implementing this at Oh Dear, they’ve Read more…
If you’re using AI tools like Claude Code to help write code, you’ve probably noticed they don’t automatically know your team’s coding conventions. The AI might write perfectly valid PHP, but it won’t follow your Read more…
[AdSense-A]
For years, my git history contains "wip" commit messages. I don't really often use git history myself, but my colleagues do. And when they're trying to understand a change I made six months ago, "wip" tells them absolutely nothing. Might as well not have commit messages at all.
I knew I should write better commit messages, but the friction was real. Stopping to think about how to summarize my changes felt like it broke my flow. So I kept typing "wip".
Now, I have a bash function in my dotfiles that uses Claude to generate commit messages for me.
We released version v1.5.0 of Parental, our package that adds support for Single Table Inheritance (STI) in Laravel. This new version allows types to become other types and use numeric type columns instead of strings. Read more…
A quick but essential fix for anyone pushing the edges of the Laravel ecosystem. The default FrankenPHP binary provided by artisan octane:install is static and locked to PHP 8.4, which causes major headaches if your Read more…
Evolving from dd() to Ray for a smoother workflow. Explore how Ray can boost your debugging game without stopping your code! Read more