All blog posts, organized by year and month.
2026
February
-
Excessive Bold Feb 6
-
Introducing Ray 3.0 Feb 5
January
-
Semantic Diffusion Jan 29
-
Behind the Terminal Jan 15
-
Symfony 20 year! Jan 12
2025
December
-
Keeping feature creep at bay Dec 29
-
How do arrays work? Dec 5
-
The $1,000 AWS mistake Dec 4
November
-
What's new in PHP 8.5 Nov 18
October
-
The State of PHP in 2025 Oct 22
-
What’s New in PHP 8.5? Oct 20
-
Vendor locked Oct 13
September
-
npm ci vs npm install Sep 24
-
No more down migrations Sep 19
August
-
The Story of Valkey Aug 25
-
6 Weeks of Claude Code Aug 20
-
On full-breadth developers Aug 19
-
If you're remote, ramble Aug 18
-
TODOs aren’t for doing Aug 5
July
-
The Real Ask Jul 30
-
Pipe Operator |> PHP 8.5 Jul 25
-
Exploring Coroutines in PHP Jul 17
June
-
How to Build an Agent Jun 13
-
React, visualized Jun 10
May
-
It's never just that simple May 21
-
Unorthodox decoration May 1
April
-
Think of an Elephpant - Apr 30
-
Type Preferences Apr 29
-
Impact, agency, and taste Apr 23
March
-
Build UI's that don't suck Mar 10
February
January
-
Stop Using Pseudo-Types Jan 28
-
SQL NULLs are Weird! Jan 22
2024
December
November
-
What's new in PHP 8.4 Nov 25
-
Playtime with PHP Attributes Nov 21
-
IPC in Electron Nov 19
October
September
-
This was Laracon US 2024 Sep 2
August
-
An argument for logging off Aug 29
-
PHP 8.4 Property Hooks Aug 21
-
A case for Mastodon Aug 8
-
Plain Vanilla Websites Aug 6
July
June
-
Building Laravel Error Share Jun 26
-
Mastering Programming Jun 26
-
Tagged Singletons Jun 14
-
spatie/pdf-to-image v3.0 Jun 12
-
Using Models as Flags Jun 11
May
-
Fun with Blade directives May 31
-
Some cool SQLite things May 30
-
Assigning a user to an error May 29
-
How to build a writing habit May 13
-
Clearing Ray output May 9
April
March
February
-
Retry mechanisms in Laravel Feb 25
-
Composition over Inheritance Feb 23
-
The Business of Bisecting Feb 21
January
-
Exploring Laravel Login Link Jan 23
-
Keycode Event Helper Jan 22
-
What is a Command Bus? Jan 22
-
Flare ❤️ GitLab Jan 10
2023
December
-
A recap of 2023 Dec 30
-
Examples of Great URL Design Dec 13
-
Git gud at communication Dec 12
-
API Versioning in Laravel Dec 11
-
Hands-on decoration Dec 8
November
-
Spatie's Black Friday Deals Nov 17
-
Unorthodox Eloquent II Nov 17
October
-
Single-use tests Oct 13
September
-
Solving PHP Scaling Issues Sep 25
-
Creating my new album "Kind" Sep 21
-
Unorthodox Eloquent Sep 18
-
Workbench App for Packages Sep 13
-
Character Development Sep 11
August
-
Livewire Real-time Presence! Aug 21
July
-
Laravel Folio deep dive Jul 27
-
Handling Signals in Laravel Jul 27
-
State Of Laravel Survey 2023 Jul 27
-
A first look at Filamentphp Jul 10
-
Read-only web apps Jul 6
June
-
Rust for PHP developers Jun 30
-
Fibonacci Agile Estimation Jun 29
-
Locality of Behaviour Jun 20
-
Hooks for Alpine.js Jun 7
May
-
Encapsulating Polymorphism May 15
-
Introducing DropBlockEditor May 15
-
Advanced Git Magic May 2
April
-
On fixed price projects Apr 21
-
Load Balancing explained Apr 20
March
-
Avoiding one-liners in PHP Mar 30
-
MySQL for Developers Mar 28
-
Optimising Flare Mar 27
-
Make more things the same Mar 17
-
Valet 4.0 is released Mar 16
-
Behind The Scenes Of Oh Dear Mar 13
February
-
Request Level Validation Feb 15
-
Locality of Behavior Feb 2
January
-
Refactoring ugly JavaScript Jan 13
2022
December
-
A recap of 2022 Dec 16
-
SDKs, The Laravel Way Dec 8
-
Writing declarative PHP Dec 2
November
-
Spatie WWSD 2022 Nov 17
-
Vanilla Rails is plenty Nov 11
-
What's new in PHP 8.2? Nov 11
-
Local or session storage? Nov 11
-
I'm out of a job Nov 7
October
-
What are contract tests? Oct 20
-
Laravel's Safety Mechanisms Oct 20
-
What's new in Laravel 10? Oct 11
September
-
Writing Wordle In JavaScript Sep 30
-
Introducing LiteFS Sep 29
-
Exploring Laravel Stubs Sep 19
-
Using CLion with php-src Sep 18
-
Named arguments Sep 18
-
Granular interfaces Sep 16
-
The Forty-Year Programmer Sep 14
August
-
Catching Up Laravel Aug 16
-
Is COUNT(*) slow in MySQL? Aug 12
-
PHP Core Roundup #4 Aug 2
July
-
A Lot Less Node with Airdrop Jul 20
June
-
Variadic arguments in PHP Jun 16
-
New UUID formats Jun 16
May
-
35 Laravel Eloquent tips May 26
-
Extensible Blade Components May 17
-
Laravels Command Bus May 17
-
Adapter Pattern in PHP May 16
April
-
From PHPUnit To Pest Apr 25
-
PHP isn't dead Apr 19
-
Naming constructors Apr 3
March
-
Avoid using else Mar 16
-
Use a message envelope Mar 9
-
Code that breathes Mar 9
February
-
Exploring Termwind Internals Feb 22
-
DevToys for Mac Feb 11
-
What's new in Laravel 9 Feb 8
-
Modelling Tetris in PHP Feb 4
-
Geeking Out Over PHP Feb 3
January
-
Using Importmaps in Laravel Jan 27
-
How to Train Your Keyboard Jan 12
-
Exceptional Naming Jan 12
-
Overriding vendor classes Jan 11
-
No code reviews by default Jan 11
2021
December
-
A recap of 2021 Dec 23
-
Send Spatie a Christmas card Dec 23
-
Heaps explained in PHP Dec 18
-
20 years of Bram.us Dec 17
-
Laravel Pseudo-Daemons Dec 16
November
-
Modern PHP Cheat Sheet Nov 26
-
Beg Bounties Nov 18
-
The Visitor Pattern in PHP Nov 12
October
-
We Analyzed 425,909 Favicons Oct 26
-
Exploring Blade internals Oct 25
-
Three types of mocks Oct 21
September
-
A Project Manager’s Top Tips Sep 29
-
What happens when we clone? Sep 24
-
Announcing x-ray for Ray Sep 17
-
Mistakes I've made in AWS Sep 15
August
-
On using PSR abstractions Aug 26
-
Traits are not inherited Aug 25
-
Don't use Mocking libraries Aug 13
-
Laravel Seeders on Steroids Aug 13
-
Immutable dates in Laravel Aug 10
-
Git Rebase: a love story Aug 9
-
Exploring Pest internals Aug 4
July
-
PHP 8.1: before and after Jul 23
-
Generators vs arrays Jul 22
-
Introducing Dinero.js Jul 22
-
The State of Laravel survey Jul 18
-
Opinion-driven design Jul 8
June
-
Saying Goodbye To Typo CI Jun 25
-
Clever vs insightful code Jun 24
-
What about config builders? Jun 23
-
Don't test constructors Jun 15
-
Alpine 3.x Tips and Tricks Jun 14
May
-
Working Through A Pandemic May 17
-
Double Dispatch May 10
-
PHP's bus factor May 4
April
-
File watching with chokidar Apr 29
-
Modelling time Apr 29
-
Refactoring to Inertia Forms Apr 27
-
Queuing up in meetings Apr 26
-
Self hosting Google Fonts Apr 15
-
Exploring event sourcing Apr 14
-
Starting with Event sourcing Apr 13
March
-
Vite with Laravel Mar 26
-
Composer Security Hardening Mar 24
-
Before You memo() Mar 1
February
-
When Objects Aren't Enough Feb 24
-
Creating a Ruby Gem for Ray Feb 11
-
Never Good Enough Feb 11
-
Live coding new Ray features Feb 11
-
PHP-Doc in Blade-Views Feb 8
-
Dealing with failed jobs Feb 8
-
Using composer patches Feb 3
-
What's new in PHP 8.1 Feb 1
January
-
Contract Tests Jan 27
-
A storm in a glass of water Jan 22
-
CORS Visualized Jan 21
-
Hide Artisan commands Jan 5
2020
December
-
A recap of 2020 Dec 21
-
Emphpathy Dec 2
November
-
What's new in PHP 8 Nov 27
-
Custom attributes in PHP 8 Nov 20
-
Modern PHP cheat sheet Nov 20
-
Dealing with null Nov 19
-
Sunsetting PHP Faker Nov 16
October
-
Exploring PHP 8 features Oct 28
-
Going deep Oct 20
-
PHP8's Weak maps explained Oct 19
-
On Issue Bumping Oct 19
-
Never miss a webhook Oct 6
September
-
Don't trust default timeouts Sep 17
-
Invert, always, invert Sep 8
-
Dialects in Code Sep 1
August
-
Collision v5.0 released Aug 25
July
June
-
25 Years Of PHP Jun 24
-
Time to upgrade your monitor Jun 23
-
How We Work (at Tailwind) Jun 23
-
Find your match with regex Jun 22
-
Introducing Blade UI Kit Jun 13
May
-
The Miracle Sudoku May 24
-
Laravel Pseudo-Daemons May 22
-
Attributes in PHP 8 May 14
-
Grandfathering in legacy May 14
-
Composer 2: Platform Check May 13
-
New in PHP 8 May 12
April
-
Static Constructors in PHP Apr 29
-
Anonymous Alpine Components Apr 23
-
My First Golang Apr 15
-
Using PEST in Laravel Apr 15
-
6 Eloquent Secrets Apr 14
-
Testing Cashier Apr 8
-
Date Ranges in Laravel Apr 2
-
Blade Heroicons Apr 1
March
-
PHP reimagined Mar 25
-
Event driven server in PHP Mar 17
February
-
Migrating to PHPUnit 9 Feb 13
-
Introducing Yarn 2 Feb 5
-
PHP: Past and Future Feb 4
-
I hate regex Feb 3
January
-
Building Mailcoach Jan 30
-
Laravel Mixins Tips Jan 29
-
Memoizing stuff in PHP 7.4 Jan 23
-
New in PHP 8 Jan 22
-
ES6 modules made simple Jan 21
-
Lost in transaction Jan 7
-
How tracking pixels work Jan 7
2019
December
-
Using view models Dec 13
-
PHP Performance Trivia Dec 13
-
Streamlining Laravel Dec 9
-
A recap of 2019 Dec 8
November
-
Name the Date Nov 28
-
freek.dev turns five! Nov 26
-
What's new in PHP 7.4 Nov 25
-
Extreme Object-Oriented Ruby Nov 25
-
My Alfred workflows Nov 22
-
Build your own React Nov 14
October
-
Namespaced functions in PHP Oct 17
-
The mixin PHP DocBlock Oct 14
-
Don't add an API too fast Oct 11
-
Client Side PHP Oct 10
September
-
You can group by anything Sep 30
-
Lazy leadership Sep 27
-
Use human-readable intervals Sep 23
-
Small Wins Sep 9
August
-
Watch the Flare reveal live Aug 27
-
JAMstack as a beginner Aug 9
-
Laravel and Murphy’s Law Aug 5
-
Some Shifty Bits Aug 5
July
-
Avoiding booleans Jul 24
-
Keep the MacOS desktop empty Jul 20
-
A Shifty Email Bug Jul 16
-
Understanding Eloquent Jul 3
June
-
Laravel Blade Helpers Jun 24
-
Vue's Darkest Day Jun 24
-
A Look At PHP’s isset() Jun 18
-
Timelapse of the future Jun 17
-
Typed properties in PHP Jun 17
-
Tests and types Jun 10
-
Refactoring to actions Jun 10
-
Internal classes in PHP Jun 7
-
A project at Spatie Jun 5
May
-
Using Eloquent's firstOr May 29
-
Exceptional Exceptions May 29
-
Improving title tags May 29
-
Plucking multiple attributes May 21
-
React for Vue developers May 21
-
PHP in 2019 May 17
-
React for Vue developers May 8
-
Short closures in PHP May 1
-
New in PHP 7.4 May 1
April
-
Why I prefer React over Vue Apr 30
-
Rethinking reactivity Apr 25
-
Simplifying controllers Apr 23
March
-
Name it, and they will come Mar 28
-
Easy chunking in Laravel Mar 28
-
Fake PHP version in composer Mar 21
-
Introducing Interia.js Mar 19
-
React as a UI Runtime Mar 19
-
Queueable actions in Laravel Mar 19
-
HTTP Toolbox Mar 4
February
-
A package to handle enums Feb 18
-
Mission impossible in PHP Feb 18
-
JavaScript’s two zeros Feb 5
January
-
Analytics for developers Jan 24
-
Hexagonal architecture Jan 15
-
New in PHP 7.4 Jan 9
-
Laravel Core Adventures Jan 3
2018
December
-
A recap of 2018 Dec 29
-
Handcrafting mocks Dec 12
-
How To Install PHP 7.3 Dec 10
November
-
? Four years of murze.be ? Nov 27
-
Introducing Scout Extended Nov 26
-
Failing gracefully on stage Nov 19
-
Other people's setup Nov 6
-
Why geeks should speak Nov 5
October
-
Unslacking Tideways Company Oct 30
-
Building something new Oct 25
-
Array merge vs. + Oct 25
-
Resisting complexity Oct 23
-
Laravel domains Oct 16
-
Programming Sucks Oct 11
-
Honeybadger for Laravel Nova Oct 11
September
-
APP_KEY And You Sep 25
-
A better written data method Sep 25
-
Babel under the hood Sep 25
-
Test Contra-variance Sep 19
-
Introducing Phoenix.LiveView Sep 18
-
A tags field for Nova apps Sep 17
-
OCR in your terminal Sep 10
-
Reusing domain code Sep 10
-
What’s New in PHP 7.3 Sep 1
August
-
Eloquent MySQL views Aug 27
-
Mo' models mo' problems Aug 27
-
The Everybody Poops Rule Aug 27
July
-
Laravel by the numbers Jul 31
-
Introducing Laravel Nova Jul 27
June
-
Thoughts on PHP 8 Jun 25
-
Using EditorConfig Jun 24
-
Eloquent's `is()` method Jun 24
-
Process control in PHP Jun 14
-
Redecentralising the web Jun 12
-
What's next for JavaScript? Jun 12
-
Building a PHP Framework Jun 11
-
Serverless Laravel Jun 1
-
Vue templates in JSX Jun 1
May
-
When empty is not empty May 19
-
Practicing symmetry May 15
-
Event sourcing made simple May 14
-
A good issue May 2
April
-
FP vs. OO Apr 19
-
Fortrabbit is GDPR ready Apr 16
-
What PHP can be Apr 16
-
Building Blocks Apr 4
March
-
Doing less Mar 28
-
Project from Hell Mar 27
-
Nothing is Something Mar 17
-
Take the power back Mar 2
-
Beyond React 16 Mar 1
-
Value objects like a pro Mar 1
February
-
Laravel Design Patterns Feb 5
January
2017
December
-
An async map function Dec 18
-
My VS Code Setup Dec 13
-
Installing PHP 7.2 Dec 12
-
Symfony 4: New Hope Dec 5
November
-
murze.be turns three Nov 29
-
Anatomy of a PHP Hack Nov 23
-
The Cost Of JavaScript Nov 21
-
Shorthand comparisons in PHP Nov 19
-
Redesigning Laravel.io Nov 17
-
Airplanes and Ashtrays Nov 10
-
Writing clean code Nov 8
-
Don't design your emails Nov 6
October
-
Writing code that speaks Oct 30
-
Introducing Clockwork 2.0 Oct 24
-
Laravel's rescue helper Oct 7
September
-
New features in our packages Sep 26
-
The json Blade directive Sep 21
-
Derping with Kotlin Sep 17
-
Extending models in Eloquent Sep 12
August
-
A recap of Laracon EU 2017 Aug 31
-
Open-sourcing our guidelines Aug 20
-
What's in our .babelrc? Aug 16
-
Cruddy by design Aug 8
July
-
Diving into Laravel Horizon Jul 31
-
A recap of Laracon US 2017 Jul 30
-
Load balancing with Nginx Jul 25
-
Webpack Academy Jul 20
-
Typehint all the things Jul 7
-
HTTP Tools Roundup Jul 5
-
A list of podcasts Jul 4
-
Made With ARKit Jul 1
June
-
Comparing model collections Jun 22
-
Using request()->query() Jun 21
-
Performant Laravel Jun 19
-
The status antipattern Jun 15
-
Bootable Model Traits Jun 8
-
Diving Laravel Jun 7
May
-
TypeScript With Laravel Mix May 24
-
Master the Chrome DevTools May 16
-
Linux Server Families May 1
April
-
$PHP = ????; Apr 20
March
-
Visualizing PHPUnit Tests Mar 22
February
-
Our postcard collection Feb 27
-
How to organize a meetup Feb 23
January
-
The Magic Tricks of Testing Jan 20
-
Why I close PRs Jan 16
-
Pragmatic coding Jan 8
2016
December
-
Looking back on the year Dec 30
-
No Time for a Taxicab Dec 1
November
-
What's new in PHP 7.1 Nov 24
-
murze.be is two years old Nov 24
-
PHP 7 is gaining ground fast Nov 18
-
An unofficial Forge API Nov 17
-
PHP 7 at Tumblr Nov 15
-
On Being Explicit Nov 10
-
Stupid ES6 tricks Nov 7
October
-
Structuring PHP exceptions Oct 31
-
Varnish explained Oct 23
-
Top 5 programming fonts Oct 21
-
Taking PHP Seriously Oct 17
-
Some nice PhpStorm secrets Oct 11
-
A better dd() for your TDD Oct 10
September
-
Computer Vision Syndrome Sep 26
-
How to design words Sep 12
-
Solidify Fragile Tests Sep 8
-
Hacking a PHP site Sep 1
August
-
Laracon EU recap day 2 Aug 26
-
Debugging collection chains Aug 26
-
Laravel LTS is a Trap Aug 26
-
Laracon EU recap day 1 Aug 24
-
Joind.In Needs Help Aug 15
-
moment().endOf(‘term’) Aug 10
-
Practicing YAGNI Aug 9
-
The Churn Aug 8
July
-
Facebook's mobile device lab Jul 15
-
How we talk about tech Jul 3
June
-
DNS for developers Jun 23
-
Make Everything The Same Jun 16
-
Debugging collections Jun 16
-
Splitting controllers Jun 6
May
-
The pipe collection macro May 27
-
CSI: PHP May 20
-
Upcoming changes in PHP 7.1 May 14
-
Why I Play Video Games May 11
-
Linux systems performace May 7
-
Type Wars May 3
April
-
Being A Developer After 40 Apr 30
-
The website obesity crisis Apr 24
-
Common files in PHP packages Apr 21
-
Laravel now has a changelog Apr 20
-
A great evening at PHPGent Apr 15
-
Laravel medialibrary hits v4 Apr 13
-
What Are Laravel Facades Apr 13
-
Recovering from a rm -rf Apr 12
-
HTTP/2 for developers Apr 12
March
-
Dropping the public keyword Mar 27
-
A technical guide to SEO Mar 12
-
Styling broken images Mar 10
-
Coming up in Laravel 5.2.23 Mar 10
-
Type safety and money Mar 2
February
-
ES6 In Depth: Symbols Feb 29
-
A beautiful PHPStorm theme Feb 28
-
Heroes of PHP Feb 23
-
Code Golf Feb 23
-
Messages in PHP Feb 17
-
Typed arrays in PHP Feb 15
-
Using emoji in PHP Feb 7
January
-
Getting rid of null Jan 30
-
The wrong abstraction Jan 21
-
Some awesome composer tricks Jan 20
-
Some Laravel Homestead tips Jan 14
-
Reducing complexity Jan 11
-
The innovation slider Jan 7
-
Starting a newsletter Jan 2
-
Vim for beginners Jan 2
2015
December
-
The Road to Monolog 2.0 Dec 28
-
Semantic method naming Dec 22
-
Hello, PSR-7 Dec 18
November
-
The Art of Command Line Nov 30
-
This blog is one year old Nov 24
-
50 Laravel tricks Nov 21
-
The future of PHP Nov 20
-
Using threads in PHP Nov 13
-
Continuous learning Nov 13
-
The Anti-Turing Test Nov 10
October
-
On open sourcing Blender Oct 27
-
All the little things Oct 27
-
Webpack your bags Oct 18
-
From idea to impact Oct 2
-
A cartoon guide to Flux Oct 2
September
-
Introducing Laravel Spark Sep 17
-
Hacking the flow state Sep 9
-
A drunk ElePHPant Sep 7
August
-
Immutable objects in PHP Aug 27
-
Building a basic router Aug 17
-
Let the magic die Aug 16
-
URL signing in Laravel Aug 15
-
DRY is about knowledge Aug 6
-
Using Algolia in Laravel Aug 5
-
Awesome PHP Aug 4
July
-
Some excellent advice Jul 24
-
Laravel Daily Jul 24
-
Our open source software Jul 21
-
10 Reasons To Use HTTPS Jul 11
-
Voodoo PHP Jul 4
June
-
Git from the inside out Jun 29
-
Developer spotlight Jun 29
-
Extract till your drop Jun 26
-
PHP7's throwable interface Jun 25
-
Tiny two way data binding Jun 24
-
Recursion and Generators Jun 24
-
Common string functions Jun 6
May
-
Creating packages May 14
-
Go by example May 11
-
Fetch: the new AJAX API May 11
-
Modern PHP hosting May 5
-
Short Closures in PHP May 3
-
Tesla Energy May 1
April
-
Private npm modules Apr 14
-
PHPeople Apr 12
-
ES6 snippets Apr 6
-
A million lines of code Apr 1
March
-
Test framework in a tweet Mar 20
-
The power of yield Mar 16
-
Why I support the league Mar 10
-
Semantic versioning Mar 5
February
-
PHP at the speed of C Feb 24
-
Run tasks locally with Envoy Feb 23
-
Building Gistlog Feb 17
-
Introducing Spot Feb 12
-
Running Symfony2 on PHP7 Feb 12
-
HTTP/2 explained Feb 11
-
Goodbye SPDY Feb 9
-
Trees vs facets vs tags Feb 9
-
Laravel 5 Feb 4
January
-
Everything new in Laravel 5 Jan 30
-
PSR-7 By Example Jan 27
-
Higher order programming Jan 25
-
Packagist statistics Jan 24
-
The Zend Framework 3 roadmap Jan 22
-
The spaceship operator Jan 21
-
How Twitter uses Ansible Jan 21
-
Equality in JavaScript Jan 19
-
The 2014 CSS Report Jan 14
-
Text input effects Jan 14
-
The repository pattern Jan 14
-
Writing software Jan 12
-
The economy of tests Jan 5
-
Perceptual image hashes Jan 5
2014
December
-
Markdown parser for PHP Dec 27
-
Symfony's VarDumper Dec 23
-
Black Mirror Dec 18
-
A HTML5 rich text editor Dec 17
-
Create a global .gitignore Dec 16
-
Vagrant push Dec 14
-
Marking http as non secure Dec 14
-
A Laravel webshop Dec 12
-
SPDY is speedy Dec 11
-
Excel exports Dec 9
-
Anti-spam packages Dec 8
-
Select boxes on steroids Dec 4
-
The No CAPTCHA reCAPTCHA Dec 3
-
HTTPS Everywhere Dec 3
-
Reveal.js Dec 3
-
Quaternion Monkeys Dec 2
-
Paw Dec 2
-
Perfmap Dec 2
-
How instagram.com works Dec 2
-
Trucker Dec 2
November
-
DDD Ultra-Lite Nov 30
-
Mousetrap Nov 30