<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
                        <id>https://phptoptens.com/authors/freek-van-der-herten/feed</id>
                                <link href="https://phptoptens.com/authors/freek-van-der-herten/feed" rel="self"></link>
                                <title><![CDATA[Artisan Weekly — Author Feed]]></title>
                    
                                <subtitle>Featured links for a given author across Artisan Weekly editions.</subtitle>
                                                    <updated>2026-10-15T21:37:05+01:00</updated>
                        <entry>
            <title><![CDATA[Typed routes from Laravel to React with Wayfinder]]></title>
            <link rel="alternate" href="https://freek.dev/3088-typed-routes-from-laravel-to-react-with-wayfinder" />
            <id>https://freek.dev/3088-typed-routes-from-laravel-to-react-with-wayfinder</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Discover how Laravel Wayfinder generates type-safe TypeScript functions for your routes, eliminating hardcoded URLs and catching routing errors at compile time rather than in production. Learn how Spatie uses this powerful package to keep their Laravel and React codebases in perfect sync.]]>
            </summary>
                                    <updated>2026-10-15T21:37:05+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[More Jev in There There: smart conditions and AI assignment]]></title>
            <link rel="alternate" href="https://freek.dev/3198-more-jev-in-there-there-smart-conditions-and-ai-assignment" />
            <id>https://freek.dev/3198-more-jev-in-there-there-smart-conditions-and-ai-assignment</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Explore how Jev AI is being utilised in There There to power smart workflow conditions and intelligent ticket assignment, enabling natural language descriptions instead of rigid routing rules.]]>
            </summary>
                                    <updated>2026-10-08T14:55:27+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Detecting spam and auto-replies with Jev and the Laravel AI SDK]]></title>
            <link rel="alternate" href="https://freek.dev/3194-detecting-spam-and-auto-replies-with-jev-and-the-laravel-ai-sdk" />
            <id>https://freek.dev/3194-detecting-spam-and-auto-replies-with-jev-and-the-laravel-ai-sdk</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Explore how to use Jev and the Laravel AI SDK to detect spam and auto-replies in your helpdesk application. This post demonstrates System One models, which provide calibrated probabilities for classification tasks without generating text, making them perfect for spam detection workflows.]]>
            </summary>
                                    <updated>2026-09-24T13:51:49+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The stack behind There There]]></title>
            <link rel="alternate" href="https://there-there.app/blog/the-stack-behind-there-there" />
            <id>https://there-there.app/blog/the-stack-behind-there-there</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek shares the technology choices behind Spatie's new helpdesk product There There, explaining why they chose Laravel, Inertia, React, and their own battle-tested packages. A transparent look at building a modern Laravel application with AI features, domain-driven structure, and the Model Context Protocol.]]>
            </summary>
                                    <updated>2026-06-04T09:10:36+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Searching multiple columns with one URL parameter in laravel-query-builder]]></title>
            <link rel="alternate" href="https://freek.dev/3118-searching-multiple-columns-with-one-url-parameter-in-laravel-query-builder" />
            <id>https://freek.dev/3118-searching-multiple-columns-with-one-url-parameter-in-laravel-query-builder</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek explains the new groupOr and groupAnd filters in laravel-query-builder v7.3.0 that let you search across multiple database columns with a single URL parameter. This solves the common problem of handling OR conditions properly when combining filters, making cross-column searches much cleaner and safer.]]>
            </summary>
                                    <updated>2026-05-04T13:37:28+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How we use Inertia v3 optimistic updates in There There]]></title>
            <link rel="alternate" href="https://freek.dev/3085-how-we-use-inertia-v3-optimistic-updates-in-there-there" />
            <id>https://freek.dev/3085-how-we-use-inertia-v3-optimistic-updates-in-there-there</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek shares how Spatie uses Inertia v3's optimistic updates feature in their helpdesk app There There to create snappy UI interactions. He demonstrates practical examples of implementing optimistic updates for team toggles and workflow switches, showing how this feature eliminates the need for complex state management while providing instant user feedback.]]>
            </summary>
                                    <updated>2026-04-16T21:47:24+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Scotty: a beautiful SSH task runner]]></title>
            <link rel="alternate" href="https://freek.dev/3064-scotty-a-beautiful-ssh-task-runner" />
            <id>https://freek.dev/3064-scotty-a-beautiful-ssh-task-runner</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek introduces Scotty, a new SSH task runner that provides beautiful real-time output and pause/resume functionality for deploy scripts. It supports both Laravel Envoy's Blade format and a new plain bash format, making it easier to run and monitor remote tasks from your terminal.]]>
            </summary>
                                    <updated>2026-08-28T08:53:53+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Query Builder v7: a must-have package for building APIs in Laravel]]></title>
            <link rel="alternate" href="https://freek.dev/3052-laravel-query-builder-v7-a-must-have-package-for-building-apis-in-laravel" />
            <id>https://freek.dev/3052-laravel-query-builder-v7-a-must-have-package-for-building-apis-in-laravel</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek announces the release of spatie/laravel-query-builder v7, a powerful package that simplifies building flexible API endpoints by handling filtering, sorting, includes, and field selection through URL parameters. The new version brings a cleaner API with variadic parameters, aggregate includes, and requires PHP 8.3+ and Laravel 12+.]]>
            </summary>
                                    <updated>2026-03-19T15:51:38+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Generate OG images for your Laravel app]]></title>
            <link rel="alternate" href="https://freek.dev/3032-generate-og-images-for-your-laravel-app" />
            <id>https://freek.dev/3032-generate-og-images-for-your-laravel-app</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek introduces laravel-og-image, a new Spatie package that lets you generate Open Graph images directly from Blade templates without external services. The package automatically takes screenshots of your HTML templates and serves them as OG images, making social media sharing previews effortless.]]>
            </summary>
                                    <updated>2026-03-01T05:25:25+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Fixing a production error with the Flare CLI and AI, from discovery to deploy]]></title>
            <link rel="alternate" href="https://youtube.com/watch?v=G3FxC2VDFYM" />
            <id>https://youtube.com/watch?v=G3FxC2VDFYM</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[With AI moving so fast it's almost like every week something new is released or a new way of doing something is shown its just crazy. In this video Freek shows us how by using the Flare CLI and its skill he's able to resolve production bugs without leaving the CLI.]]>
            </summary>
                                    <updated>2026-02-27T07:48:51+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[A clean API for reading PHP attributes]]></title>
            <link rel="alternate" href="https://freek.dev/3030-a-clean-api-for-reading-php-attributes" />
            <id>https://freek.dev/3030-a-clean-api-for-reading-php-attributes</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Freek introduces spatie/php-attribute-reader, a package that dramatically simplifies reading PHP 8.0 attributes by turning verbose reflection boilerplate into clean one-liners. The package provides intuitive methods for reading attributes from classes, methods, properties, and parameters, making attribute handling much more developer-friendly.]]>
            </summary>
                                    <updated>2026-02-24T07:45:53+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Rethinking our frontend future at Spatie]]></title>
            <link rel="alternate" href="https://spatie.be/blog/rethinking-our-frontend-future-at-spatie" />
            <id>https://spatie.be/blog/rethinking-our-frontend-future-at-spatie</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Spatie explores moving away from shadcn/ui and Radix components toward native browser features like the dialog element, popovers, and anchor positioning. They discuss how modern browsers are catching up to solve problems that previously required heavy JavaScript libraries, potentially allowing for lighter, more accessible components that work across frameworks.]]>
            </summary>
                                    <updated>2026-02-24T07:41:50+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How to set up PHP autoformatting in Zed using Pint and PHP CS Fixer]]></title>
            <link rel="alternate" href="https://freek.dev/3014-how-to-set-up-php-autoformatting-in-zed-using-pint-and-php-cs-fixer" />
            <id>https://freek.dev/3014-how-to-set-up-php-autoformatting-in-zed-using-pint-and-php-cs-fixer</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A practical guide to configuring automatic PHP code formatting in the Zed editor that works seamlessly across different projects, whether they use Laravel Pint or PHP CS Fixer. Includes a clever bash script solution to handle Zed's global formatter configuration limitation.]]>
            </summary>
                                    <updated>2026-02-18T08:19:48+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How to automatically generate a commit message using Claude]]></title>
            <link rel="alternate" href="https://freek.dev/2978-how-to-automatically-generate-a-commit-message-using-claude" />
            <id>https://freek.dev/2978-how-to-automatically-generate-a-commit-message-using-claude</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Are you one of those developers who's commit message is always "WIP", well in this article Freek shares a clever bash function that uses Claude AI to automatically generate meaningful commit messages from your git diff, replacing the dreaded "wip" commits with descriptive messages. His solution includes a spinner animation and takes just 2-3 seconds to generate commit messages that actually describe what changed in your code.]]>
            </summary>
                                    <updated>2026-02-06T08:37:56+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Running PHP Tests in parallel on Github Actions]]></title>
            <link rel="alternate" href="https://t.ly/6_cMx" />
            <id>https://t.ly/6_cMx</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[we have Freek Van der Herten with "Running PHP Tests in parallel on Github Actions" -]]>
            </summary>
                                    <updated>2026-01-13T22:57:38+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Typehinting Laravel validation rules using PHPStan's type aliases]]></title>
            <link rel="alternate" href="https://t.ly/wue6Z" />
            <id>https://t.ly/wue6Z</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Typehinting Laravel validation rules using PHPStan's type aliases]]>
            </summary>
                                    <updated>2026-01-15T07:46:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Why I don't use down migrations]]></title>
            <link rel="alternate" href="https://t.ly/cJN7P" />
            <id>https://t.ly/cJN7P</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Why I don't use down migrations]]>
            </summary>
                                    <updated>2026-01-15T07:46:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How to monitor your Laravel app for critical vulnerabilities]]></title>
            <link rel="alternate" href="https://t.ly/dZg8S" />
            <id>https://t.ly/dZg8S</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[we have Freek Van der Herten with "How to monitor your Laravel app for critical vulnerabilities" - one of the OG's of the Laravel and creator of so many packages out there! With the latest vulnerabilities being discovered this post is worth a read to see what we can do to better monitor these things. -]]>
            </summary>
                                    <updated>2026-01-15T07:46:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Transform your URLs with AI using our new Laravel package]]></title>
            <link rel="alternate" href="https://t.ly/EAvR_" />
            <id>https://t.ly/EAvR_</id>
            <author>
                <name><![CDATA[Freek Van der Herten]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Transform your URLs with AI using our new Laravel package]]>
            </summary>
                                    <updated>2026-01-13T22:57:36+00:00</updated>
        </entry>
    </feed>
