<?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://artisanweekly.com/authors/steven-richardson/feed</id>
                                <link href="https://artisanweekly.com/authors/steven-richardson/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-01T15:08:49+01:00</updated>
                        <entry>
            <title><![CDATA[Laravel Vite CDN: Immutable Cache Headers Done Right]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/laravel-vite-assets-cdn-cloudfront-immutable-caching" />
            <id>https://richdynamix.com/articles/laravel-vite-assets-cdn-cloudfront-immutable-caching</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A comprehensive guide to configuring Laravel Vite with CDN and CloudFront for optimal asset delivery, covering pull-through versus push-to-object-storage architectures and the critical ASSET_URL environment variable setup to avoid common deployment pitfalls.]]>
            </summary>
                                    <updated>2026-09-30T08:12:22+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Filament Performance: Tune Large Tables in Filament v5]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/filament-v5-performance-large-tables-query-tuning-complete-guide" />
            <id>https://richdynamix.com/articles/filament-v5-performance-large-tables-query-tuning-complete-guide</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[If you've used Filament in the past you might have come across some panels that are running slower than the rest well Steven has put together a list of things you can do to help improve the speed.]]>
            </summary>
                                    <updated>2026-10-01T15:08:49+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Dispatch Job After Commit: Fix the Transaction Race]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/laravel-dispatch-jobs-after-commit-transactions" />
            <id>https://richdynamix.com/articles/laravel-dispatch-jobs-after-commit-transactions</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Explores the race condition that occurs when dispatching queue jobs within database transactions, explaining why the issue appears only with certain queue drivers and how to resolve it using the `after_commit` configuration option.]]>
            </summary>
                                    <updated>2026-09-17T14:41:41+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHPStan Custom Rule: Enforce Laravel Conventions]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/phpstan-custom-rule-enforce-laravel-conventions" />
            <id>https://richdynamix.com/articles/phpstan-custom-rule-enforce-laravel-conventions</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Static analysis is such an important part of your workflow running tools like PHPStan or Psalm is important to keep the quality of your codebase at a high level.

If you've been using PHPStan you would have come across it's rules, but have you ever wondered how to create your own rules for PHPStan, well in this post Steven shows us how to by first picking a convention that is worth automating and taking it from there.]]>
            </summary>
                                    <updated>2026-08-27T16:20:29+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Livewire 4 Third Party JavaScript Integration: The Complete Guide]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/livewire-4-third-party-javascript-integration-complete-guide" />
            <id>https://richdynamix.com/articles/livewire-4-third-party-javascript-integration-complete-guide</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A comprehensive guide to integrating third-party JavaScript libraries with Livewire 4 components, exploring the morph mechanism and providing practical solutions using wire:ignore, wire:ref, and other tools through a real-world campaign editor example.]]>
            </summary>
                                    <updated>2026-08-26T08:56:02+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP Override Attribute: Safer Laravel Inheritance]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/php-override-attribute-safer-laravel-inheritance" />
            <id>https://richdynamix.com/articles/php-override-attribute-safer-laravel-inheritance</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Explains how PHP 8.3's #[\Override] attribute prevents silent inheritance bugs in Laravel applications by validating that overridden methods actually exist in parent classes. Covers practical examples including FormRequest hooks and how it catches typos and upgrade issues that tests often miss.]]>
            </summary>
                                    <updated>2026-08-20T07:55:17+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Livewire Reverb Chat: Real-Time Messaging Tutorial]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/livewire-4-real-time-chat-reverb-complete-guide" />
            <id>https://richdynamix.com/articles/livewire-4-real-time-chat-reverb-complete-guide</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Steven walks us through creating a real-time chat application using one of our favourite tools Laravel Reverb! Covering message persistence, WebSocket broadcasting, presence channels, typing indicators, and production deployment - all without writing custom JavaScript or maintaining separate Node services whats not to love.]]>
            </summary>
                                    <updated>2026-07-30T05:29:03+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel Zero-Downtime Migrations: Expand and Contract Pattern]]></title>
            <link rel="alternate" href="https://richdynamix.com/articles/laravel-zero-downtime-migrations-expand-contract" />
            <id>https://richdynamix.com/articles/laravel-zero-downtime-migrations-expand-contract</id>
            <author>
                <name><![CDATA[Steven Richardson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Steven demonstrates an interesting approach to zero-downtime database migrations in this post. Using the Expand and   Contract Pattern. This isn't a pattern I've seen before but looking at the approach it makes sense and does help handle some of those issues that come with certain migrations that you might need to do that change data in your databases.]]>
            </summary>
                                    <updated>2026-07-16T15:32:30+01:00</updated>
        </entry>
    </feed>
