Eval Testing LLMs in PHPUnit
– joshhornby.com - submitted by Joshua Hornby
Prompts break silently. Here's how to catch regressions with PHPUnit evals before your users do.
Read more [joshhornby.com]
Posts tagged with best practices
– joshhornby.com - submitted by Joshua Hornby
Prompts break silently. Here's how to catch regressions with PHPUnit evals before your users do.
Read more [joshhornby.com]
The true work is in building complexity into software, then thoughtfully editing and pruning it into something that takes a minute to learn, yet offers a lifetime of mastery for those who want to accomplish complicated things.
Read more [buttondown.com]
Join 9,500+ smart developers
Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.
No spam. Unsubscribe anytime. You can also follow me on X.
"If you are one of the *millions* who have downloaded a Spatie package, then you understand the quality that Freek aims for. The newsletter is of the same quality of any Spatie package you're using."
– frederickvanbrabant.com - submitted by Frederick Vanbrabant
This week I wrote about my experiences with technical and architectural debt. When I was a developer we used to distinguish between code debt (temporary hacks) and architectural debt (structural decisions that bite you later). But in enterprise architecture, it goes way beyond technical implementation.
To me architectural debt is found on all layers.
Application/Infrastructure layer: This is about integration patterns, system overlap, and vendor lock-in. Not the code itself, but how applications interact with each other. Debt here directly hits operations through increased costs and slower delivery.
Business layer: This covers ownership, stewardship, and process documentation. When business processes are outdated or phantom processes exist, people work under wrong assumptions. Projects start on the back foot before they even begin. Issues here multiply operational problems.
Strategy layer: The most damaging level. If your business capability maps are outdated or misaligned, you're basing 3-5 year strategies on wrong assumptions. This blocks transformation and can make bad long-term strategy look appealing.
Read more [frederickvanbrabant.com]
Dynamic method calls can be useful, but they also come with some risks that you should be aware of.
Read more [ashallendesign.co.uk]
Brent reflects on how using Tailwind CSS has led to a loss of proficiency in writing standard CSS.
Read more [stitcher.io]
Brent Roose has written an excellent book. This time on his programming journey and the lessons learned along the way. It's not too long, I personally read it in one sitting, and liked it very much.
Read more [things-i-wish-i-knew.com]
– doeken.org - submitted by Doeke Norg
Learn how a ClockInterface helps you decouple time and write stable, testable code. It's about time!
Read more [doeken.org]
This is a great way of handling config values.
Read more [cosmastech.com]
Some teams require that every TODO comment in a codebase gets logged in the bug tracker. Others automatically delete any “stale” TODO that has been in the codebase for over a year. Don’t do it!
Read more [sophiebits.com]
Every once in a while, someone opens a PR on one of our open source packages adding a down function to the migration. I usually close those PRs fast with a thank you and a message “We don’t use down migrations in our projects”.
While down migrations might seem like a safety net, they're often a false comfort that potentially creates more problems than they solve.
Instead of explaining this in every PR separately, let me share why we don't write down migrations and what we do instead.
– frederickvanbrabant.com - submitted by Frederick Vanbrabant
When someone comes to you with a question to do something, instead of blindly doing the ask, take a step back and try to understand what they actually want to achieve. Often this task might actually not be the best way to achieve the goal they are set out to do.
Read more [frederickvanbrabant.com]
We've converted our PHP and Laravel coding guidelines into AI-friendly instructions so Claude Code and other AI agents can generate code that matches our established programming style.
Read more [spatie.be]
– ryangjchandler.co.uk - submitted by Ryan Chandler
Have you ever been on a website and navigated between pages, only to notice that the layout shifts slightly because the scrollbar suddenly appears on longer pages?
Read more [ryangjchandler.co.uk]
Some interesting thoughts about caching.
Read more [buttondown.com]
The #[\NoDiscard] is a safety feature for PHP developers, making it easier to catch mistakes where ignoring a function’s return value could lead to bugs.
Read more [www.amitmerchant.com]
A deep dive on why projects always take longer and a framework to improve future estimation
Read more [davestewart.co.uk]
say: complexity very, very bad
Read more [grugbrain.dev]
Git notes are a powerful feature for adding metadata to commits, blobs, and trees.
Read more [tylercipriani.com]
A nice touch by Joel Clermont
Read more [masteringlaravel.io]
Brent is doing some interesting stuff here.
Read more [tempestphp.com]