<?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/eric-van-johnson/feed</id>
                                <link href="https://phptoptens.com/authors/eric-van-johnson/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-08T14:04:32+01:00</updated>
                        <entry>
            <title><![CDATA[Building a "Who's Online" Presence Tracker with Laravel Reverb]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/building-a-whos-online-presence-tracker-with-laravel-reverb" />
            <id>https://laravelmagazine.com/building-a-whos-online-presence-tracker-with-laravel-reverb</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A comprehensive tutorial demonstrating how to build a live presence tracker for shared document viewing using Laravel Reverb's presence channels, covering channel configuration, frontend integration, and real-time user activity broadcasting.]]>
            </summary>
                                    <updated>2026-10-08T14:04:32+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[rescue(): One-Line Graceful Error Handling for Flaky Code Paths]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/rescue-one-line-graceful-error-handling-for-flaky-code-paths" />
            <id>https://laravelmagazine.com/rescue-one-line-graceful-error-handling-for-flaky-code-paths</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Discover how Laravel's rescue() helper provides elegant one-line error handling for optional operations that might fail, such as third-party API calls, allowing you to log issues and return sensible defaults without cluttering your code with try-catch blocks.]]>
            </summary>
                                    <updated>2026-09-10T15:53:35+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Testing Time-Dependent Code with Carbon::setTestNow(), travel(), and freezeTime()]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/testing-time-dependent-code-with-carbon-settestnow-travel-and-freezetime" />
            <id>https://laravelmagazine.com/testing-time-dependent-code-with-carbon-settestnow-travel-and-freezetime</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A guide to mastering Laravel's time-travel testing utilities for handling time-dependent code, covering travelTo(), travel(), freezeTime(), and best practices for reliable time-based assertions without sleep() calls.]]>
            </summary>
                                    <updated>2026-08-27T16:26:24+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Gates vs. Policies vs. Middleware: Understanding Laravel's Authorization Layers]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/gates-vs-policies-vs-middleware-understanding-laravels-authorization-layers" />
            <id>https://laravelmagazine.com/gates-vs-policies-vs-middleware-understanding-laravels-authorization-layers</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A practical guide explaining when to use Gates, Policies, or middleware in Laravel applications. Clarifies that middleware handles request-level checks, Gates manage general user permissions, and Policies control actions on specific Eloquent models, helping developers avoid scattered authorization logic.]]>
            </summary>
                                    <updated>2026-08-13T16:23:04+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Understanding Laravel Facades: Static Sugar Over the Container]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/understanding-laravel-facades-static-sugar-over-the-container" />
            <id>https://laravelmagazine.com/understanding-laravel-facades-static-sugar-over-the-container</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Laravel Facades one of those things that brought about so many debates about why this is a bad practice because of its static method call nature. Well we all know thats not true and in this post Eric walks us through what they are, how they work in the framework and why they're not as bad as newcomers to the framework think.]]>
            </summary>
                                    <updated>2026-07-30T05:36:52+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Database Transactions and Deadlock Retries Done Right]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/database-transactions-and-deadlock-retries-done-right" />
            <id>https://laravelmagazine.com/database-transactions-and-deadlock-retries-done-right</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A practical guide to using Laravel's database transactions effectively, covering the closure-based helper, automatic deadlock retries, and best practices for keeping transactions tight whilst avoiding common pitfalls like performing slow operations within transaction locks.]]>
            </summary>
                                    <updated>2026-07-29T22:12:13+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Top-N-Per-Group in MySQL: LATERAL Derived Tables for PHP Developers]]></title>
            <link rel="alternate" href="https://shocm.me/posts/2026-07-22-mysql-lateral-derived-tables-top-n-per-group/" />
            <id>https://shocm.me/posts/2026-07-22-mysql-lateral-derived-tables-top-n-per-group/</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A practical guide to solving the classic top-N-per-group problem in MySQL using LATERAL derived tables. Demonstrates how to fetch each author's three most recent articles in a single query, eliminating N+1 problems without the overhead of window functions.]]>
            </summary>
                                    <updated>2026-07-23T14:46:14+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The HTTP QUERY Method Comes to Laravel 13.19]]></title>
            <link rel="alternate" href="https://shocm.me/posts/2026-07-20-laravel-13-19-http-query-method/" />
            <id>https://shocm.me/posts/2026-07-20-laravel-13-19-http-query-method/</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Laravel 13.19 introduces first-class support for the HTTP QUERY method, allowing developers to send complex search queries in the request body whilst maintaining GET-like caching behaviour. The release includes Http::query() client methods and corresponding testing helpers for building safer, more semantic API endpoints.]]>
            </summary>
                                    <updated>2026-07-21T07:37:29+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Building a Secure Webhook Receiver in Laravel]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/building-a-secure-webhook-receiver-in-laravel" />
            <id>https://laravelmagazine.com/building-a-secure-webhook-receiver-in-laravel</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Have you ever needed to build a webhook endpoint and thought to yourself ok where do I start how do I make this secure and how do I handle if the same request is sent multiple times. Well Eric has your back with this post.]]>
            </summary>
                                    <updated>2026-07-23T18:24:08+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Importing Large CSV Files with Laravel Job Batching]]></title>
            <link rel="alternate" href="https://laravelmagazine.com/importing-large-csv-files-with-laravel-job-batching" />
            <id>https://laravelmagazine.com/importing-large-csv-files-with-laravel-job-batching</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A comprehensive guide to reliably importing large CSV files in Laravel using job batching, lazy collections, and queue workers to avoid memory issues and timeouts. Includes step-by-step code examples for streaming files, chunking data, and tracking import progress.]]>
            </summary>
                                    <updated>2026-07-16T18:46:46+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Community Corner: NativePHP for Mobile With Shane Rosenthal and Simon Hamp]]></title>
            <link rel="alternate" href="https://t.ly/p_tDV" />
            <id>https://t.ly/p_tDV</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Community Corner: NativePHP for Mobile With Shane Rosenthal and Simon Hamp]]>
            </summary>
                                    <updated>2026-01-22T12:57:11+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The PHP Podcast: 2025.07.24]]></title>
            <link rel="alternate" href="https://t.ly/KwCCX" />
            <id>https://t.ly/KwCCX</id>
            <author>
                <name><![CDATA[Eric Van Johnson]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[The PHP Podcast: 2025.07.24]]>
            </summary>
                                    <updated>2026-01-22T11:15:31+00:00</updated>
        </entry>
    </feed>
