Most of the time, enum cases are sorted alphabetically and the order doesn't matter. But when it does matter, a well-placed comment can save your team from a subtle mistake. masteringlaravel.io/daily/2026-0...
Posts by Joel Clermont
I still enjoy writing code, but it just doesn't compare with the frustration + satisfaction of fixing physical hardware. I just reconstructed shoulder buttons and replaced an LCD on this Nintendo DSi. It feels like defusing a bomb, such a thrill ๐
Workarounds are sometimes unavoidable. But a little extra care when you implement them can keep your codebase from turning into a pile of technical debt. masteringlaravel.io/daily/2026-0...
When your new Laravel app has to read from legacy databases you can't change, it's tempting to let the weirdness spread everywhere. Here's a better approach. masteringlaravel.io/daily/2026-0...
What happens when your code does something weird on purpose? In this week's podcast, Aaron and I talk about how to communicate non-obvious decisions so your whole team stays on the same page. masteringlaravel.io/daily/2026-0...
In today's video, I tracked down a double encoding bug in a Blade component. A lot of online advice was wrong, which leads to the deeper lesson on understanding any solution you adopt before blindly accepting it. masteringlaravel.io/daily/2026-0...
Claude extracted a query into its own method in a simple Livewire component. The code was fine. The decision was wrong for my app. Here's why that kind of review still matters. masteringlaravel.io/daily/2026-0...
Sometimes you need a join for performance or sorting by relations. Here's a package that lets you do that without giving up Eloquent. masteringlaravel.io/daily/2026-0...
Laravel does not provide one no. You just need to satisfy the contract and it's fine. Easy enough to workaround, but when things work accidentally (like with a string), I like to call it out so others don't get bit :)
That habit of documenting why you ignored a CVE in composer.json? The EU Cyber Resilience Act is about to make it a legal requirement for anyone selling software in Europe. masteringlaravel.io/daily/2026-0...
Laravel makes it easy to fake UUIDs in tests with Str::createUuidsUsing, but returning a plain string instead of a proper UUID object can break in ways you might not anticipate. masteringlaravel.io/daily/2026-0...
In today's video, I look at a few different ways to test UUIDs in Laravel and talk about why the approach you pick matters. masteringlaravel.io/daily/2026-0...
When composer audit flags a CVE that doesn't apply to your app, don't just make the warning go away. The way you handle it communicates a lot to your future self and your team. masteringlaravel.io/daily/2026-0...
When you're already in the code, small improvements add up. Here's how to spot those opportunities without derailing your main task. masteringlaravel.io/daily/2026-0...
If you use DB::beginTransaction() and DB::commit() instead of the DB::transaction() closure, you might be leaving your database in a weird state when things go wrong. masteringlaravel.io/daily/2026-0...
How do you know if a test is actually useful? In this week's podcast, Aaron and I share a simple rule for spotting tests that only prove the framework works, not your application. masteringlaravel.io/daily/2026-0...
In today's video, I wade into the classic fillable vs guarded debate with a reason you might not have heard before: guarded triggers a hidden database query. masteringlaravel.io/daily/2026-0...
If you use Eloquent's date cast on a DATETIME column, you might be silently persisting time data that Eloquent hides from you. Here's how it happens. masteringlaravel.io/daily/2026-0...
Events and observers each have their strengths, but sometimes the best approach is to use them together. Here's a real-world scenario where pairing them keeps your app fast and your logic reusable. masteringlaravel.io/daily/2026-0...
I once shared a static variable trick for avoiding repeated lookups within a request. Laravel now has a first-party helper that's cleaner and more robust. masteringlaravel.io/daily/2026-0...
Using loadMissing() to avoid duplicate queries? If the relationship was previously loaded with a filter, you might silently get incomplete data. Here's when the extra query is actually worth it. masteringlaravel.io/daily/2026-0...
In today's video, I show you how PHPStorm's PR review tools give you better file tracking than GitHub's own interface. masteringlaravel.io/daily/2026-0...
If your Laravel app runs on Amazon RDS, switching from gp2 to gp3 storage can save money and improve performance. Here's how to do it safely. masteringlaravel.io/daily/2026-0...
We all want fast code, but how do you find the slow spots in production? Here are two approaches that have worked well for us. masteringlaravel.io/daily/2026-0...
MySQL ships with conservative defaults meant for minimal hardware. Here's a quick read that highlights the InnoDB settings most likely to matter for your Laravel app. masteringlaravel.io/daily/2026-0...
Does everyone need to have an immediate opinion on AI? In this week's podcast, Aaron and I discuss why waiting to build deeper knowledge before sharing opinions is not the same as being against new technology. masteringlaravel.io/daily/2026-0...
In today's video, I show you a one-word change that can eliminate duplicate eager loading queries in your Laravel app. masteringlaravel.io/daily/2026-0...
Deleted code lives on in git history, and AI agents like Claude Code can search through it for you. Here's an example of finding old code when you're not even quite sure what to search for. masteringlaravel.io/daily/2026-0...