Sign in

Freek Van der Herten

@freek.bsky.social
3.1K followers 118 following 636 posts

PHP developer at Spatie, built Mailcoach, ‪myray.app‬, ohdear.app and flareapp.io, blogging at ‪freek.dev‬, organising fullstackeurope.com

PostsRepliesMedia
Freek Van der Herten @freek.bsky.social · 14h
I just sent out a new edition of my newsletter. Since I skipped the summer, it's packed with links to good content on Laravel, PHP and AI. Read it and subscribe for the next editor here: freek.dev/newsletter/...
freek.dev
freek.dev newsletter #207
Freek Van der Herten writes about Laravel, PHP and AI. Co-owner of Spatie, maintainer of 300+ open source packages with over 2 billion downloads.
021
Freek Van der Herten @freek.bsky.social · 30/09/2026
💡 There There workflows now have smart conditions. Describe what should match in plain language, like a customer asking for a refund. When it matches, a fixed private note asks someone to review the payment.
There There workflow showing a smart condition for refund requests and a fixed internal note asking someone to review the payment.
110
Freek Van der Herten @freek.bsky.social · 30/09/2026
🌸 These are such remarkable times. Only one month I ago I started work on Bloom, a native MacOS agent orchestrator. It's now my most used app for my daily work. Some of my colleagues are using it too. Less then one year ago I couldn't have dreamt that doing this was possible
110
Freek Van der Herten @freek.bsky.social · 18/09/2026
😂 Lol, when of my subagents stopped working because it was getting too late
180
Freek Van der Herten @freek.bsky.social · 18/09/2026
Yesterday, Jev support landed in the Laravel AI SDK. We're now using it in There There to keep spam out of your inbox. Jev isn't an LLM. You give it some state and a yes/no question, and it hands back a probability.
Code snippet shows a PHP function using Laravel's AI Classification to determine if an email is spam with a specified threshold.
160
Freek Van der Herten @freek.bsky.social · 17/09/2026
Here's a recording of the talk I gave at this year's Laravel Live Denmark conference. www.youtube.com/watch?v=22R...
youtube.com
Proven Package Patterns - Freek Van der Herten - Laravel Live Denmark 2026
Proven Package Patterns - Freek Van der HertenPresented at Laravel...
111
Freek Van der Herten @freek.bsky.social · 17/09/2026
🚀 There There, the help desk we've been building at @spatie_be, is ready. 💅 We gave it a full redesign, and anyone can now sign up and start using it. A few words on why we built it 🧵
Support ticket management interface showing various customer issues, with highlighted conversation and action buttons.
141
Freek Van der Herten @freek.bsky.social · 15/09/2026
My colleague Nico contributed this beautiful new tab system to Bloom, which looks much much closer to how tabs look and feel in Safari, Finder, etc...
110
Freek Van der Herten @freek.bsky.social · 13/09/2026
I usually don't add Bloom projects / workspaces manually. I usually ask Bloom to do this for me 🙂 Here's a simple example. Bloom can open up/close projects, workspaces, panes, tabs... It also know what's on it.
A user interface displays project tasks and workspace management options, highlighting actions related to adjusting pagination settings.A project workspace displays code files and instructions for adjusting pagination settings in a Laravel application interface.
020
Freek Van der Herten @freek.bsky.social · 12/09/2026
👀 Blooms new menu bar item, available in the latest release It was ready right before my battery died 😅
A menu bar displays usage statistics for various sessions, including remaining time and reset intervals for different features.Settings interface showing options for the Bloom menu bar, including usage figures, provider choices, and sleep features.
000
Reposted by Freek Van der Herten
Elian @elian.codes · 12/09/2026
I've been using Bloom by @freek.bsky.social for the last couple of days over Conductor and it's been a really good experience! Go try it out: runbloom.app
runbloom.app
Bloom · Run coding agents in parallel on your Mac
Bloom is a free native Mac app that runs Claude Code and Codex in parallel, each in its own git worktree. Read the diffs, comment inline, open the pull request.
111
Freek Van der Herten @freek.bsky.social · 12/09/2026
So I heard you like letting your agents work remotely, so nothing runs on your Mac. I'll add that to Bloom as well! It will include a wizard to set up your server.
Server setup interface displaying options for remote work management and server connection, emphasizing multi-device access.
110
Freek Van der Herten @freek.bsky.social · 12/09/2026
🔄 Building Bloom inside Bloom 💅 Currently improving the Bloom menu bar item. I asked Bloom to open a split pane to show me an HTML preview. It automatically refreshes as we make changes. 👍 Super nice and powerful workflow
A split-screen setup displays a coding application interface, chat messages about menu design, and project files with progress indicators.
011
Freek Van der Herten @freek.bsky.social · 09/09/2026
👀 Reviewing @jimirobaer 's redesign for There There tickets screen Easy to do this in Bloom: I just asked the AI to run the dev server and open up a split next to the chat to display the site. It's hot reloading so I can now type the corrections i want and see the AI fix it
010
Freek Van der Herten @freek.bsky.social · 09/09/2026
🙌 Got lots of good feedback for Bloom yesterday. Already implemented today. Keep it coming!
A software update notification outlines new features and improvements for Bloom 1.6.0, emphasizing user feedback and changes.
230
Freek Van der Herten @freek.bsky.social · 08/09/2026
The past month, I've spent some time building a Mac app for running coding agents. It's called Bloom. Projects on the left, the agent in the middle, and a diff on the right. It's free, open source, and written in Swift.
471
Freek Van der Herten @freek.bsky.social · 24/08/2026
🎆 Flare's performance monitoring used to be a Laravel and PHP thing. As of today, it covers your JavaScript apps too: page loads, Core Web Vitals, and component profiling for React, Vue and Svelte.
120
Freek Van der Herten @freek.bsky.social · 20/08/2026
👀 Some cool things are coming to Flare! 🎆
030
Freek Van der Herten @freek.bsky.social · 18/08/2026
🚀 We deployed the redesign of the There There public website. 💅
A website interface showcases a help desk, featuring chat interaction about return policies and an AI-assisted support solution.
120
Freek Van der Herten @freek.bsky.social · 17/08/2026
In 2023, we added AI solutions to Flare. We sent the exception message and the stack trace to OpenAI, and showed the suggested fix next to the error. Here's what that looked like. Last month, we removed the feature, since most people now use their own AIs to diagnose problems.
Display shows an error message about an invalid regional host label in AWS, with an AI-generated suggested fix highlighted.
101
Freek Van der Herten @freek.bsky.social · 13/08/2026
🎆 Flare now uses OAuth for MCP clients, the CLI and the API. You don't have to create an API token anymore with full admin access and pasting it into a config file. You approve a connection in your browser and pick what it gets: read, write or admin, scoped to teams or projects.
A permission request interface showing connection details for "Claude on MacBook Pro," with options for read, write, and admin access.
162
Freek Van der Herten @freek.bsky.social · 12/08/2026
Tailwind's default breakpoints are in rem, so they respond to the browser's default font size. If a user sets theirs to 20px, your 3-column layout kicks in at a narrower viewport than you ever tested. My colleague Nick looked into it: spatie.be/blog/can-we...
A computer monitor displays text about Tailwind's accessibility, with a ruler featuring measurement units alongside.
081
Freek Van der Herten @freek.bsky.social · 15/07/2026
Good news if you're on an older stack: Flare now supports Laravel 10 and PHP 8.1 again. You no longer have to be on the latest versions to get the newest Flare features like performance monitoring and logging. Read how we brought support back: flareapp.io/blog/bringi...
flareapp.io
Bringing Flare back to Laravel 10 and PHP 8.1 | Flare
Flare now supports Laravel 10 and PHP 8.1 again, so older apps get performance monitoring and logs too. Here’s how we did it.
020
Freek Van der Herten @freek.bsky.social · 14/07/2026
Unlike a GET HTTP request, a QUERY request carries a request body. Our spatie/laravel-http-logger can be handy for logging super important requests that you can't afford to lose. QUERY requests now get logged by default too. github.com/spatie/lara...
github.com
GitHub - spatie/laravel-http-logger: Log HTTP requests in Laravel applications
Log HTTP requests in Laravel applications. Contribute to spatie/laravel-http-logger development by creating an account on GitHub.
010
Freek Van der Herten @freek.bsky.social · 14/07/2026
🚀 We've just published v2 of our laravel-url-ai-transformer, our package that transforms URLs and their content using AI, and stores the result in the db ⬇️ The new version is rebuilt on top of the official laravel/ai package. Here's a small tour
100
Freek Van der Herten @freek.bsky.social · 01/07/2026
💭 My colleague designer Jimi shares some interesting thoughts on how AI is changing the way he does UX spatie.be/blog/how-ai...
spatie.be
How AI is changing (the way I do) UX
I am not the only one who has seen the way they work change drastically over the last 6 months. This post is about how I have seen AI change the ability to generate ideas and code in my field, UX, and how I experience it both in positive and negative ways.
000
Freek Van der Herten @freek.bsky.social · 30/06/2026
Laravel recently added route metadata. You can attach arbitrary context to a route and read it back later. Route::get('/users', [UserController::class, 'index']) ->metadata(['head' => ['title' => 'Users']]); $request->route()->getMetadata('head.title');
161
Freek Van der Herten @freek.bsky.social · 18/06/2026
We just shipped “waiting until” in There There. It automatically reopens tickets from “waiting” to “open”, basic helpdesk stuff. Simple feature, but the time picker took three tries. v1 was the obvious preset list. 🧵
Time selection menu featuring options for scheduling: "Later today," "Tomorrow," "This weekend," "Next week," "In a month," with a date picker.
210
Freek Van der Herten @freek.bsky.social · 17/06/2026
🌉 Has anyone here already tried macOS Golden Gate? If you’ve actually been using it, how’s the stability so far? Smooth enough for daily use, or are you still running into issues? (Looking for firsthand experiences only, not general “don’t install beta” advice)
130
Freek Van der Herten @freek.bsky.social · 16/06/2026
🥳 Our spatie/laravel-permission package has reached 100 million downloads. Guess you all like this one!
The graph displays the download statistics for the laravel-permission package, showing over 100 million overall installs and monthly trends.
170
Freek Van der Herten @freek.bsky.social · 16/06/2026
🥳 Guess I can keep using my dream workflow using Conductor a little while longer
000
Freek Van der Herten @freek.bsky.social · 15/06/2026
I'd like to highlight a package I reach for on almost every project: spatie/laravel-model-flags. Add the HasFlags trait and you get idempotent flags: run an action once per model, even when the job around it keeps firing. flag() never duplicates, it only bumps the timestamp 🚩
1131
Freek Van der Herten @freek.bsky.social · 13/06/2026
🔌 Coming very very soon to Oh Dear: a new ports check. 👀 You say which ports should be open, and we'll check those 💪 We'll also check if all other ports are closed
Ports 80, 443, and 9999 are open; running nginx services. Status confirmed as expected during a recent check.
041
Freek Van der Herten @freek.bsky.social · 11/06/2026
❤️ Conductor Never made so much nice PRs in such a short timespan 💅 Currently polishing there-there.app using feedback from the first users.
210
Freek Van der Herten @freek.bsky.social · 09/06/2026
🧑‍💻 I built a little free tool that allows you to quickly check if your website is online. We check it from six locations at once (uses the Oh Dear infrastructure for this).
A website tool checks if your site is down from six global locations, featuring a form to enter a URL and a "Check now" button.
670
Freek Van der Herten @freek.bsky.social · 08/06/2026
Spending a bit of time to improve my hobby project WordStockt (wordstockt.com) Now adding support for 3- and 4-player games. Pretty cool you can run multiple concurrent instances of the iOS simulator
Displays three instances of the WordStockt game interface on iPhones, featuring a colorful game board for multiple players.
000
Freek Van der Herten @freek.bsky.social · 08/06/2026
🚀 Logging has landed in Flare! 🛬 Your errors now come with the full story around them. Send logs from your Laravel, PHP and JavaScript apps, see them appear in real time. Of course you can filter and search them Here's a look 👇
141
Reposted by Freek Van der Herten
Artisan Weekly @artisanweekly.bsky.social · 05/06/2026
8️⃣ @freek.bsky.social shares the tech stack behind Spatie's new helpdesk product There There, from Laravel and React to AI features and domain-driven structure. there-there.app/blog/the-sta...
there-there.app
The stack behind There There | There There
A tour of the technology we used to build There There, and why we reached for the boring choices on purpose.
111
Freek Van der Herten @freek.bsky.social · 03/06/2026
At Oh Dear, we ran into a tricky DNS edge case while improving our monitoring. My colleague Mattias dug into it and wrote up both the problem and how we're addressing it.
110
Freek Van der Herten @freek.bsky.social · 01/06/2026
A customer replies "thanks!" to a support ticket you just closed... and the ticket reopens. Now someone has to open it, read it, and close it again. A thousand tiny paper cuts across a day. So we taught There There to recognize a thank-you and leave the ticket closed. 🧵 here's how! ⬇️
An infographic details a process for ticket management, featuring icons representing messages, checks, questions, and connections.
152
Reposted by Freek Van der Herten
Bernhard Harb (Graystack IT) @graystackit.bsky.social · 29/05/2026
Switched from Nightwatch to Flare as part of our Europe only strategy! What a great piece of software!!!
061
Freek Van der Herten @freek.bsky.social · 28/05/2026
💅 It's the little things. Flare will now automatically add quotes to strings in SQL statements in exception messages, so you can easily copy paste them Blogpost: flareapp.io/blog/copy-p... Good work by @rubenvanassche
A SQL error message indicates a record in the 'users' table has changed since last access, showing the attempted deletion command.
110
Freek Van der Herten @freek.bsky.social · 27/05/2026
📊 Ever seen an empty chart in a generated PDF? The capture likely happened before Chart.js finished animating. Here's how to fix that in the latest version laravel-pdf: in your view, set `pdfReady` only after everything has rendered.
A code snippet shows a bar chart configuration using Chart.js, including options for animation and setting a pdfReady flag.
120
Freek Van der Herten @freek.bsky.social · 27/05/2026
Giving some more ❤️ to Laravel PDF github.com/spatie/lara...
github.com
Add readiness waiting and render caching by freekmurze · Pull Request #345 · spatie/laravel-pdf
This PR adds two features inspired by gaps relative to other Chromium-based PDF packages. Waiting for readiness JavaScript heavy views (charts, maps, web fonts, async data) can be captured before t...
021
Freek Van der Herten @freek.bsky.social · 27/05/2026
🔒 You can now password-protect generated PDFs natively in spatie/laravel-pdf. It uses AES-256 and runs in pure PHP, no external binaries like qpdf are needed. So it'll also work on Laravel Cloud.
Code snippet demonstrates how to password-protect a PDF using Laravel with AES-256 encryption.
261
Freek Van der Herten @freek.bsky.social · 26/05/2026
😱 One of our Mailcoach clients got hacked. A malicious party got access to his Mailcoach account and started sending spam in the name of our client. Afterwards he wrote a full report on the incident. I love the we could be the silver lining in the whole story.
1102
Freek Van der Herten @freek.bsky.social · 25/05/2026
🐛 Fixing a very subtle little bug. Can you spot the problem?
A code comparison shows changes in a PHP file. The line removal and addition suggest a bug fix in a caching function.
220
Freek Van der Herten @freek.bsky.social · 22/05/2026
💡 When building UIs for an integration, I find myself not only giving the build instructions for humans but also a well-crafted prompt. Here's how it looks for Oh Dear's application check.
UI screenshot from Oh Dear's application check, detailing endpoint setup for monitoring application health and troubleshooting assistance.
110
Freek Van der Herten @freek.bsky.social · 20/05/2026
The last couple of days, I've been playing around with my modular synth a bit. Feels good to step a bit a way from AI / computers in general
2201
Freek Van der Herten @freek.bsky.social · 19/05/2026
When developing There There locally, nobody on our team ever types a password. You just click a button to instantly log in as any kind of user: a trial admin, a pro member, even a fresh user that still needs onboarding.
170