
How to Generate the Same Data on Every Run of Your Laravel Seeders
Faker regenerates fresh random data on every seed run — here's a one-line fix to lock it to a consistent dataset so your development workflow stays predictable.
Writing · 5 essays
Technical essays on backend engineering, Laravel, distributed systems, and the art of keeping systems quiet at 2am.

Faker regenerates fresh random data on every seed run — here's a one-line fix to lock it to a consistent dataset so your development workflow stays predictable.

Stream downloads break under millions of rows and a single job runs out of memory. Here's how a self-re-dispatching job solves both problems cleanly.

The stancl/tenancy testing docs didn't work. Here's the base test class pattern that actually does — and how it evolved to handle parallel runs, manual DB transactions, and fixture caching.

In 2017 I launched a tiny WordPress podcast service for my local church. Eight years and tens of thousands of users later, it's still alive — here's the honest journey of scaling it without a rewrite.

Laravel IDE Helper generates model properties from the landlord database — which doesn't have your tenant tables. One Artisan command fixes that.
Faker regenerates fresh random data on every seed run — here's a one-line fix to lock it to a consistent dataset so your development workflow stays predictable.
Stream downloads break under millions of rows and a single job runs out of memory. Here's how a self-re-dispatching job solves both problems cleanly.
The stancl/tenancy testing docs didn't work. Here's the base test class pattern that actually does — and how it evolved to handle parallel runs, manual DB transactions, and fixture caching.
In 2017 I launched a tiny WordPress podcast service for my local church. Eight years and tens of thousands of users later, it's still alive — here's the honest journey of scaling it without a rewrite.
Laravel IDE Helper generates model properties from the landlord database — which doesn't have your tenant tables. One Artisan command fixes that.