|
Hi there!
Welcome to the 207th freek.dev newsletter! I didn't send an edition during the annual summer break, but I kept collecting useful links, so this one is packed.
Just a month ago, I started building Bloom, a native macOS agent orchestrator. Several of my colleagues and I now use it as our primary development app. I haven't written a blog post about it yet, but you can find more info in this short thread on X.
Longtime readers know I'm also working on There There, a modern helpdesk that uses AI to help you answer tickets fast. Over the summer, our talented in-house designer Jimi created a beautiful new design for the entire marketing site and app. This is our first product of the AI age, and I'm very proud of it. We polished it carefully to keep it far away from AI slop territory. Our first paying customers are on board and are helping us shape the product further.
What's especially cool is that There There is now being developed using Bloom. A couple of months ago, I could never have imagined we'd be building a brand new SaaS with a tool of our own. We truly live in remarkable times.
To give you some inspiration during said remarkable times, here are a few links I hope you'll enjoy as much as I did. Maybe they'll spark your next idea or help you along your journey in our fast changing developer landscape.
⭐ Detecting spam and auto-replies with Jev and the Laravel AI SDK
We started usingJev for spam detection in There There. Let's take a look at what Jev is and how you can use it.
⭐ More Jev in There There: smart conditions and AI assignment
Here are some more places where we use Jev to power features we could only dream of before.
Introducing: Dark mode for Flare
Flare now has a dark mode, and this post walks through the design work needed to make it feel right and stay accessible. Nice details on semantic color tokens, fixing gradients and shadows, and using screenshot comparisons to keep the light theme intact.
What's new in PHP 8.6
Brent surveys the most notable additions coming in PHP 8.6, including partial function application, the new polling API, readonly property defaults, and several smaller improvements and deprecations.
Using AI as a deterministic translation tool in Laravel
Split a task into reasoning and execution to get deterministic behaviour out of a non-deterministic model.
exit() may silently break your parallel tests
Michael explains why exit() can make parallel test workers crash without useful diagnostics, and why verbose flags do not help when the process dies outside PHPUnit's control. The fix is simple: throw an exception instead, so the failure is reported normally with a stack trace.
Amped up
Sebastian explains why Amp became his default coding harness, and why user experience now matters more to him than model churn. He also shares the AGENTS.md tweaks that reduced overzealous verification during day-to-day coding.
Run AI in the Browser: A Practical Guide to Transformers.js
Transformers.js lets you run AI models directly in the browser without a backend, API keys, or an internet connection after the model is cached. The article explores how it works, which models are available, and the trade-offs of client-side AI compared to traditional AI providers.
Ruthless prioritization while the dog pees on the floor
Jason Cohen shares a blunt framework for separating the rare 10x opportunities from the many 0.1x tasks that quietly consume time. It is a strong piece on ruthless prioritization, delegation, and why most backlogs should be archived instead of endlessly maintained.
Can we make default Tailwind a more accessible choice?
A sharp look at Tailwind's default rem-based breakpoints, and the accessibility tradeoff they make. It explains how browser font-size preferences can shift layouts, why that can help some users, and why px breakpoints are still a defensible choice.
Web Workers: A Second Thread for Your JavaScript
Large photo uploads can be slow, but resizing and compressing images in the browser can freeze the page if the work runs on the main thread. This article shows how to use a Web Worker to process images before uploading them without interrupting the app.
Agent Experience Engineering: Designing Software Agents Can Work With
What Agent Experience engineering means in practice: discoverable code paths, scoped agent instructions, useful feedback, and human ownership of risky decisions.
Logarithmic auto-scaling for Laravel Horizon
A thoughtful write-up on adding logarithmic auto-scaling to Laravel Horizon. It shows how log-based weighting keeps huge queue spikes from starving smaller realtime queues while still giving large backlogs enough workers.
Eloquent Performance and Database Design: Evidence Before Eager Loading
A deep dive into Eloquent performance, from detecting N+1 queries to choosing aggregates, indexes, query plans, pagination, chunking, and transaction boundaries for a growing team dashboard.
A Series of Unfortunate Jobs
Laravel queues are great out of the box, until they bite. Over the years I’ve collected a few gotchas the hard way. Let me save you the headache.
Modular Monoliths: Creating Real Boundaries Before Reaching for Microservices
A deep dive into modular monoliths, from module APIs and database ownership to cross-module communication, architecture tests, incremental migration, and the signals that justify microservices.
Why we removed AI solutions from Flare
We explain why Flare's old AI-generated solutions no longer fit the way developers debug with modern coding agents. The replacement is a better workflow built around the MCP server, CLI, Copy for AI prompts, and agent-friendly docs.
Digital Sovereignty Is Written in PHP
An interesting article on how PHP is used by the government.
Build Your Own AI-Powered Slack Bot with the Laravel AI SDK
In this article, we’ll build an AI-powered Slack bot with the Laravel AI SDK. Unlike tools such as Claude Tag, it can switch AI providers, answer questions, execute tasks, and retrieve information from a knowledge base you control.
Immutability in PHP Beyond readonly
A deep dive into immutability in PHP, from readonly properties and interior mutability to immutable value objects, collections, dates, cloning, boundaries, and testing.
Is AI going to steal my job as a design engineer?
Tom Wilson reflects on what AI is changing for design engineers, and where human judgment still matters. He argues that agents can take over more of the scaffolding work, while product taste, restraint, and polished visual craft remain the real edge.
Prevent cognitive debt by manually retyping LLM-generated code
Ankur Sethi argues that manually retyping LLM-generated code is a practical way to avoid cognitive debt. It slows you down, but helps you understand the code, catch bad suggestions, and keep a strong mental model of your codebase.
Community links
In this section you'll find links submitted by others. Let me know if you wrote or stumbled across a blog post, tutorial or video that might be interesting to appear in this section.
Authorization is more than a group ID (submitted by Tom Witkowski)
Why we need cross-CMS conferences? (submitted by Maciek Palmowski)
LaraPlugins.io July update: 3,700 Developers, 4.5 Million Agent Requests, and a Silly Data Drift (submitted by Andrei-Daniel Petrica)
Context Engineering: The Discipline That Keeps AI From Writing Slop (submitted by Alberto Arena)
Leaf 5: a PHP framework designed for building alongside AI (submitted by Mychi Darko)
The bug that only showed up once strangers could paste a schema (submitted by Alberto Arena)
Fuzz Testing for PestPHP (submitted by Jon Purvis)
You only need one source of truth for all your AI coding agents (submitted by Mazen Touati)
Your Laravel Agent Re-Sends Every Tool Result It Ever Saw (submitted by Muhammad Mujahid Abbas)
Reduce AWS SDK Bundle Size in PHP with Composer (submitted by Paul Conroy)
Laravel chunk vs lazy vs cursor: lazy() Is as Slow as chunk() (submitted by Mozex)
upsert(): The Unsung Hero of Inserting Thousands of Rows in Laravel (submitted by Luka Peharda)
Old posts
Here are a couple of links from a while ago!
Things I wish I knew when I started programming
npm ci vs npm install
No more down migrations
Laravel Notifications: dynamic channels, priority, and delayed sending
PSR-20 Clocks: Testable Time in PHP
Enjoy this newsletter? Help it grow!
If you found this edition useful, here are two quick ways to support the newsletter:
👉 Write a short recommendation. Approved recommendations appear on the newsletter page for others to see.
👉 Forward this email to a colleague or friend who might be interested.
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
P.S. Know someone who'd enjoy this newsletter? Send them here to subscribe.
You are receiving this newsletter because you subscribed at freek.dev
Unsubscribe from this newsletter
This mail was sent using Mailcoach
|