Hi there!
Welcome to the 183rd freek.dev newsletter!
At Spatie, we're working on the next big feature for Flare: performance monitoring. It can monitor the speeds of routes, controllers, job, queries, and much more! This is a feature that will be included in all Flare subscriptions. So if you're already using Flare, you'll get performance monitoring for free. You can now see a small preview and subscribe to our launch mailinglist.

In my personal newsletter I mostly focus on Laravel and PHP content. Of course, there's much more happening on the web. At Spatie we stared a new newsletter called href.email (that's a cool domain, right?), with links to cool content around all things web. Here's a link to read the previous edtion and subscribe.
With that out of the way, here are a couple of links I hope you'll enjoy as much as I did.
PHP version stats, January 2025 edition
Brent is back with an update of the PHP version stats.
Elegant Pipeline Cleanup with Laravel's finally Method
The new finally method simplifies how you handle post-pipeline operations, whether your pipeline succeeds or fails.
Product for Engineers: Helping engineers flex their product muscles (sponsored link)
Product for Engineers is PostHog’s newsletter dedicated to helping engineers improve their product skills. Subscribe for free to get curated advice on building great products, lessons (and mistakes) from building PostHog, and deep dives on top startups.
The email:dns rule might slow down your Laravel app
Here's how a unsuspicious validation rule can wind up making your app slower.
Using Laravel Tinker in Chrome DevTools
Tony Lea created a new Chrome extension that will add a PHP tab in Chrome DevTools. Nice!
Building a micro dependency container, because why not?
Here's why and how we added a mini container in a framework agnostic package.
PHP Fibers: How PHP is Finally Warming Up to Asynchronous Programming
PHP Fibers, introduced in PHP 8.1, enable asynchronous programming by allowing functions to pause and resume execution. Here are some good examples on how to use them.
Download Files Easily with Laravel's HTTP sink Method
Here's another nifty Laravel method
How Geocodio keeps 300M addresses up to date
Using a Laravel pipeline is always nice to structure a process like this.
SQL NULLs are Weird!
Here are some special cases that you should keep in mind when working with NULL.
Manually setting the intended URL for routes in Laravel
Laravel’s redirect response can be manually set to redirect users back to a specific URL after authentication or feedback submission.
SQLite vs. MySQL: What are the differences between MySQL and SQLite?
The choice between the two depends on the specific requirements and use case of the application.
Filament Crash-Course: Create a Customizable Admin Panel in Minutes
Learn to create a customizable admin panel in minutes with our Filament Crash-Course.
Pass by Reference vs Pass by Value in PHP: What’s the REAL Difference?
In this short video, we break down the key differences between Pass by Value and Pass by Reference in PHP. 🚀 Understanding these two concepts is essential for writing efficient and bug-free code. Learn how PHP handles variables when passed to functions, and see how small changes in your code can have a BIG impact on performance and behavior! 🔍
Create a domain using Spatie event sourcing
Laravel event sourcing generator adds a new Artisan command that can generate a full domain directory structure for Spatie event sourcing.
Command Line Interface Guidelines
Good naming, consistency, clear communication, and discoverability. These are things that do not only apply to command line programs, but to general development as well.
Community links
In this section you'll find links submitted by others. Let me know if you did write or stumbled across a blog post, tutorial or video that might be interesting to appear in this section
Monitoring Queues in Laravel Without External Packages (submitted by Nabil Hassen)
Elephants in the Cloud - Serverless PHP with AWS Lambda (submitted by Davor Minchorov)
Laravel Joins Explained: Clear Guide with Practical Examples (submitted by Nabil Hassen)
Laravel 11.37.0: New Query Methods for Missing Relationships (submitted by Nabil Hassen)
New: Install Takeout with Docker (submitted by Kayla Helmick)
What is PSR-6? A Beginner’s Guide to PHP Caching Standards (submitted by Harish Kumar)
Customizing error grouping (submitted by Spatie)
New --except Option for Optimize Artisan Commands in Laravel 11.38 (submitted by Nabil Hassen)
Using a Crawler for Website Error Detection and Cache Warming (submitted by Christian Olear)
Devlog #0: The Profiles Bounded Context RFC (submitted by Andrew Cairns)
Middleware Support for Specific Methods in Laravel 11.38 (submitted by Nabil Hassen)
Understand Laravel Magic: How Eloquent Models Dynamically Retrieves Attributes (submitted by Vincent Bergeron)
Old posts
Here are a couple of links from a while ago!
Generating status badges using PHP
My Favourite Alpine.js Plugins
Generate PDFs in Laravel: A Deep Dive into Laravel PDF Export with Spatie/Browsershot
Using interfaces in third-party packages
Keycode Event Helper
What is a Command Bus?
Making sure Laravel's debug mode is always disabled in production
Hosting Laravel application statically
Running Laravel in a subdirectory (Tricky Nginx config)
FrankenPHP and Laravel Octane with Docker
A mini package to calculate public holidays in a country
Nuxt: Superpowers for your Vue 3 application
Exploring Laravel Login Link
Creating beautiful invoices using Tailwind and Laravel PDF
Exploring the new Laravel 11 middleware configuration
Did you like this newsletter?
I take a lot of time curating the right links for you. You could do me a favor by either spreading the word and letting others know about my newsletter.
Alternatively, you could consider picking up one of the paid products my team and I have worked on:
If you have any questions, remarks or thoughts about this newsletter, simply hit reply!
Thank you so much for reading!
Freek
You are receiving this newsletter because you subscribed at freek.dev
Unsubscribe from this newsletter
This mail was sent using Mailcoach
|