<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>Senior Laravel Developer Insights</title>
        <link>https://andrej.prus.dev/</link>
        <atom:link href="https://andrej.prus.dev/feed.xml" rel="self" type="application/rss+xml"/>
        <atom:link href="https://pubsubhubbub.appspot.com/" rel="hub"/>
        <description>Practical Laravel, PHP, performance, modernization, testing, and technical SEO notes from Andrej Prus.</description>
        <language>en</language>
        <copyright>Copyright Andrej Prus</copyright>
        <managingEditor>hello@prus.dev (Andrej Prus)</managingEditor>
        <webMaster>hello@prus.dev (Andrej Prus)</webMaster>
        <generator>andrej.prus.dev blog discovery generator</generator>
        <docs>https://www.rssboard.org/rss-specification</docs>
        <ttl>60</ttl>
        <lastBuildDate>Thu, 14 May 2026 00:00:00 GMT</lastBuildDate>
        <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
        <image>
            <url>https://andrej.prus.dev/apple-touch-icon.png</url>
            <title>Senior Laravel Developer Insights</title>
            <link>https://andrej.prus.dev/</link>
            <width>180</width>
            <height>180</height>
        </image>
        <item>
            <title>A Laravel Package Code Quality Stack That Survives Version Drift</title>
            <link>https://andrej.prus.dev/blog/laravel-package-code-quality-stack-pest-phpstan-rector-pint</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-package-code-quality-stack-pest-phpstan-rector-pint</guid>
            <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Code Quality</category>
            <category>Laravel</category>
            <category>Pest</category>
            <category>PHPStan</category>
            <category>Rector</category>
            <category>Pint</category>
            <category>CI</category>
            <description>A practical Laravel package maintenance guide for Pest, PHPStan, Rector, Pint, matrix CI, release gates, and compatibility checks that catch version drift early.</description>
            <content:encoded><![CDATA[<p>A practical Laravel package maintenance guide for Pest, PHPStan, Rector, Pint, matrix CI, release gates, and compatibility checks that catch version drift early.</p><p><a href="https://andrej.prus.dev/blog/laravel-package-code-quality-stack-pest-phpstan-rector-pint">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>AI Search Optimization for Laravel Websites in 2026</title>
            <link>https://andrej.prus.dev/blog/ai-search-laravel</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/ai-search-laravel</guid>
            <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>SEO</category>
            <category>Laravel</category>
            <category>AI Search</category>
            <category>Technical SEO</category>
            <category>Structured Data</category>
            <category>PHP</category>
            <description>A 2026 playbook for AI search optimization in Laravel: schema, content depth, llms.txt, sitemaps, IndexNow, and measurable visibility.</description>
            <content:encoded><![CDATA[<p>A 2026 playbook for AI search optimization in Laravel: schema, content depth, llms.txt, sitemaps, IndexNow, and measurable visibility.</p><p><a href="https://andrej.prus.dev/blog/ai-search-laravel">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-ai-sdk-sub-agents-orchestration-pattern/blog-laravel-ai-sdk-sub-agents-orchestration-pattern-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-ai-sdk-sub-agents-orchestration-pattern/blog-laravel-ai-sdk-sub-agents-orchestration-pattern-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Splitting Laravel Boost Guidelines Into Focused Package Partials</title>
            <link>https://andrej.prus.dev/blog/splitting-laravel-boost-guidelines-into-focused-partials</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/splitting-laravel-boost-guidelines-into-focused-partials</guid>
            <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>Laravel</category>
            <category>Boost</category>
            <category>AI</category>
            <category>Packages</category>
            <category>Blade</category>
            <description>A package-maintainer pattern for composing Laravel Boost AI guidelines from Blade partials without turning core.blade.php into an unreadable wall of instructions.</description>
            <content:encoded><![CDATA[<p>A package-maintainer pattern for composing Laravel Boost AI guidelines from Blade partials without turning core.blade.php into an unreadable wall of instructions.</p><p><a href="https://andrej.prus.dev/blog/splitting-laravel-boost-guidelines-into-focused-partials">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-contact/page-contact-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-contact/page-contact-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Keep SQLite Alive During Laravel Forge Zero-Downtime Deployments</title>
            <link>https://andrej.prus.dev/blog/keep-sqlite-alive-laravel-forge-zero-downtime-deploys</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/keep-sqlite-alive-laravel-forge-zero-downtime-deploys</guid>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Deployment</category>
            <category>Laravel</category>
            <category>Forge</category>
            <category>SQLite</category>
            <category>Database</category>
            <description>A practical deployment guide for running SQLite on Laravel Forge without losing data when zero-downtime releases switch the current symlink.</description>
            <content:encoded><![CDATA[<p>A practical deployment guide for running SQLite on Laravel Forge without losing data when zero-downtime releases switch the current symlink.</p><p><a href="https://andrej.prus.dev/blog/keep-sqlite-alive-laravel-forge-zero-downtime-deploys">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-filament-admin-panels/page-filament-admin-panels-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-filament-admin-panels/page-filament-admin-panels-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel AI SDK Sub-Agents as a Clean Orchestration Pattern</title>
            <link>https://andrej.prus.dev/blog/laravel-ai-sdk-sub-agents-orchestration-pattern</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-ai-sdk-sub-agents-orchestration-pattern</guid>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>AI</category>
            <category>Laravel</category>
            <category>AI SDK</category>
            <category>Agents</category>
            <category>Orchestration</category>
            <category>PHP</category>
            <description>A practical guide to Laravel AI SDK sub-agents, specialist agent boundaries, tool exposure, queueing, testing, and production orchestration patterns.</description>
            <content:encoded><![CDATA[<p>A practical guide to Laravel AI SDK sub-agents, specialist agent boundaries, tool exposure, queueing, testing, and production orchestration patterns.</p><p><a href="https://andrej.prus.dev/blog/laravel-ai-sdk-sub-agents-orchestration-pattern">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-ai-sdk-sub-agents-orchestration-pattern/blog-laravel-ai-sdk-sub-agents-orchestration-pattern-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-ai-sdk-sub-agents-orchestration-pattern/blog-laravel-ai-sdk-sub-agents-orchestration-pattern-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Authenticating Any Eloquent Model in a Laravel Sanctum API</title>
            <link>https://andrej.prus.dev/blog/authenticating-any-eloquent-model-laravel-sanctum-api</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/authenticating-any-eloquent-model-laravel-sanctum-api</guid>
            <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Sanctum</category>
            <category>APIs</category>
            <category>Authentication</category>
            <category>Eloquent</category>
            <description>A production guide to using Laravel Sanctum tokens for projects, tenants, devices, and organizations instead of forcing every API request through User.</description>
            <content:encoded><![CDATA[<p>A production guide to using Laravel Sanctum tokens for projects, tenants, devices, and organizations instead of forcing every API request through User.</p><p><a href="https://andrej.prus.dev/blog/authenticating-any-eloquent-model-laravel-sanctum-api">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Addressable for Polymorphic Addresses on Eloquent Models</title>
            <link>https://andrej.prus.dev/blog/laravel-addressable-polymorphic-addresses-eloquent-models</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-addressable-polymorphic-addresses-eloquent-models</guid>
            <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Eloquent</category>
            <category>Addressable</category>
            <category>Models</category>
            <category>Geospatial</category>
            <description>A production-focused guide to Laravel Addressable, polymorphic addresses, billing and shipping relations, eager loading, primary addresses, metadata, and spatial queries.</description>
            <content:encoded><![CDATA[<p>A production-focused guide to Laravel Addressable, polymorphic addresses, billing and shipping relations, eager loading, primary addresses, metadata, and spatial queries.</p><p><a href="https://andrej.prus.dev/blog/laravel-addressable-polymorphic-addresses-eloquent-models">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-sitemap/page-sitemap-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-sitemap/page-sitemap-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Wirebones Generates Livewire Skeletons from the Real DOM</title>
            <link>https://andrej.prus.dev/blog/wirebones-livewire-skeleton-placeholders-real-dom</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/wirebones-livewire-skeleton-placeholders-real-dom</guid>
            <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Livewire</category>
            <category>Laravel</category>
            <category>Wirebones</category>
            <category>UX</category>
            <category>Vite</category>
            <description>A detailed guide to Wirebones, Livewire lazy placeholders, DOM-based skeleton generation, responsive capture, CI checks, and production deployment.</description>
            <content:encoded><![CDATA[<p>A detailed guide to Wirebones, Livewire lazy placeholders, DOM-based skeleton generation, responsive capture, CI checks, and production deployment.</p><p><a href="https://andrej.prus.dev/blog/wirebones-livewire-skeleton-placeholders-real-dom">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building Laravel Recommendations with MongoDB Vector Search</title>
            <link>https://andrej.prus.dev/blog/laravel-mongodb-vector-search-recommendation-engine</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-mongodb-vector-search-recommendation-engine</guid>
            <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>AI</category>
            <category>Laravel</category>
            <category>MongoDB</category>
            <category>Vector Search</category>
            <category>Recommendations</category>
            <description>A production guide to Laravel recommendations with MongoDB Vector Search, embeddings, Atlas indexes, queued refreshes, filters, caching, and safe UI output.</description>
            <content:encoded><![CDATA[<p>A production guide to Laravel recommendations with MongoDB Vector Search, embeddings, Atlas indexes, queued refreshes, filters, caching, and safe UI output.</p><p><a href="https://andrej.prus.dev/blog/laravel-mongodb-vector-search-recommendation-engine">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-contact/page-contact-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-contact/page-contact-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Container Best Practices: Alpine Images, Multi-Stage &amp; OCI Labels</title>
            <link>https://andrej.prus.dev/blog/php-container-best-practices-alpine-images-multi-stage-oci-labels</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-container-best-practices-alpine-images-multi-stage-oci-labels</guid>
            <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Docker</category>
            <category>Containers</category>
            <category>DevOps</category>
            <description>Production Docker guide for PHP - minimal Alpine base images, multi-stage builds, non-root users, and health check configuration.</description>
            <content:encoded><![CDATA[<p>Production Docker guide for PHP - minimal Alpine base images, multi-stage builds, non-root users, and health check configuration.</p><p><a href="https://andrej.prus.dev/blog/php-container-best-practices-alpine-images-multi-stage-oci-labels">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Generics in PHP: Current Workarounds and What the Future Holds</title>
            <link>https://andrej.prus.dev/blog/generics-in-php-current-workarounds-what-future-holds</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/generics-in-php-current-workarounds-what-future-holds</guid>
            <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Generics</category>
            <category>PHPStan</category>
            <category>Psalm</category>
            <category>Static Analysis</category>
            <description>Explores PHP&apos;s current lack of runtime generics: PHPDoc template annotations, Psalm and PHPStan generics, and the current RFC landscape.</description>
            <content:encoded><![CDATA[<p>Explores PHP&#039;s current lack of runtime generics: PHPDoc template annotations, Psalm and PHPStan generics, and the current RFC landscape.</p><p><a href="https://andrej.prus.dev/blog/generics-in-php-current-workarounds-what-future-holds">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.5 Property Hooks in Laravel</title>
            <link>https://andrej.prus.dev/blog/php-85-property-hooks-in-laravel</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-85-property-hooks-in-laravel</guid>
            <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>PHP</category>
            <category>PHP 8.5</category>
            <category>Laravel</category>
            <category>Eloquent</category>
            <category>Architecture</category>
            <category>Technical SEO</category>
            <description>A practical guide to PHP 8.5 property hooks in Laravel, including safe use cases, Eloquent boundaries, DTO patterns, and SEO-friendly examples.</description>
            <content:encoded><![CDATA[<p>A practical guide to PHP 8.5 property hooks in Laravel, including safe use cases, Eloquent boundaries, DTO patterns, and SEO-friendly examples.</p><p><a href="https://andrej.prus.dev/blog/php-85-property-hooks-in-laravel">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-85-property-hooks-in-laravel/blog-php-85-property-hooks-in-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-85-property-hooks-in-laravel/blog-php-85-property-hooks-in-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Webhooks With Filament: Admin Panels and Webhook Monitoring UI</title>
            <link>https://andrej.prus.dev/blog/php-webhooks-filament-admin-panels-webhook-monitoring-ui</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-webhooks-filament-admin-panels-webhook-monitoring-ui</guid>
            <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Laravel</category>
            <category>Filament</category>
            <category>Webhooks</category>
            <description>Builds a Filament v3 admin panel with a webhook log viewer, retry controls, and signature verification status dashboard.</description>
            <content:encoded><![CDATA[<p>Builds a Filament v3 admin panel with a webhook log viewer, retry controls, and signature verification status dashboard.</p><p><a href="https://andrej.prus.dev/blog/php-webhooks-filament-admin-panels-webhook-monitoring-ui">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Pulse: Real-Time Application Monitoring Dashboard Explained</title>
            <link>https://andrej.prus.dev/blog/laravel-pulse-real-time-application-monitoring-dashboard-explained</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-pulse-real-time-application-monitoring-dashboard-explained</guid>
            <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Pulse</category>
            <category>Monitoring</category>
            <category>Performance</category>
            <category>Observability</category>
            <category>Livewire</category>
            <description>Practical guide to Laravel Pulse: setting up, configuring recorders, creating custom cards, and interpreting performance metrics.</description>
            <content:encoded><![CDATA[<p>Practical guide to Laravel Pulse: setting up, configuring recorders, creating custom cards, and interpreting performance metrics.</p><p><a href="https://andrej.prus.dev/blog/laravel-pulse-real-time-application-monitoring-dashboard-explained">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Schema Sentinel Turns Schema Drift into a CI Problem</title>
            <link>https://andrej.prus.dev/blog/laravel-schema-sentinel-database-schema-drift-ci</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-schema-sentinel-database-schema-drift-ci</guid>
            <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>Laravel</category>
            <category>Migrations</category>
            <category>CI</category>
            <category>Schema Drift</category>
            <description>A production guide to Laravel Schema Sentinel, schema drift detection, strict checks, generated fixes, CI gates, admin health checks, and release workflows.</description>
            <content:encoded><![CDATA[<p>A production guide to Laravel Schema Sentinel, schema drift detection, strict checks, generated fixes, CI gates, admin health checks, and release workflows.</p><p><a href="https://andrej.prus.dev/blog/laravel-schema-sentinel-database-schema-drift-ci">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-performance/page-laravel-performance-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-performance/page-laravel-performance-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Benchmarking 101: phpbench, Xdebug Profiler &amp; Flame Graphs</title>
            <link>https://andrej.prus.dev/blog/php-benchmarking-101-phpbench-xdebug-profiler-flame-graphs</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-benchmarking-101-phpbench-xdebug-profiler-flame-graphs</guid>
            <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Benchmarking</category>
            <category>Xdebug</category>
            <category>PHPBench</category>
            <description>Introduces phpbench for micro-benchmarks, Xdebug callgrind output, and flame graph visualization for identifying hot paths.</description>
            <content:encoded><![CDATA[<p>Introduces phpbench for micro-benchmarks, Xdebug callgrind output, and flame graph visualization for identifying hot paths.</p><p><a href="https://andrej.prus.dev/blog/php-benchmarking-101-phpbench-xdebug-profiler-flame-graphs">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Environment Configuration in PHP: .env Files, Secrets &amp; Vault Integration</title>
            <link>https://andrej.prus.dev/blog/environment-configuration-php-env-files-secrets-vault-integration</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/environment-configuration-php-env-files-secrets-vault-integration</guid>
            <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>Environment Configuration</category>
            <category>Secrets</category>
            <category>Vault</category>
            <description>Best practices for managing config - dotenv libraries, secrets management with HashiCorp Vault, and runtime injection in containers.</description>
            <content:encoded><![CDATA[<p>Best practices for managing config - dotenv libraries, secrets management with HashiCorp Vault, and runtime injection in containers.</p><p><a href="https://andrej.prus.dev/blog/environment-configuration-php-env-files-secrets-vault-integration">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel 13 Multi-tenancy in Production</title>
            <link>https://andrej.prus.dev/blog/laravel-13-multi-tenancy-in-production</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-13-multi-tenancy-in-production</guid>
            <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>Laravel 13</category>
            <category>SaaS</category>
            <category>Multi-tenancy</category>
            <category>PostgreSQL</category>
            <category>Technical SEO</category>
            <description>A production Laravel 13 multi-tenancy guide covering database isolation, tenant routing, queues, analytics, security, and SEO-safe tenant pages.</description>
            <content:encoded><![CDATA[<p>A production Laravel 13 multi-tenancy guide covering database isolation, tenant routing, queues, analytics, security, and SEO-safe tenant pages.</p><p><a href="https://andrej.prus.dev/blog/laravel-13-multi-tenancy-in-production">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-13-multi-tenancy-in-production/blog-laravel-13-multi-tenancy-in-production-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-13-multi-tenancy-in-production/blog-laravel-13-multi-tenancy-in-production-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Hexagonal Architecture in PHP: Practical Ports and Adapters Implementation</title>
            <link>https://andrej.prus.dev/blog/hexagonal-architecture-php-practical-ports-adapters-implementation</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/hexagonal-architecture-php-practical-ports-adapters-implementation</guid>
            <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Hexagonal Architecture</category>
            <category>Ports and Adapters</category>
            <category>Testing</category>
            <description>Builds a complete hexagonal architecture example - domain model, use cases, ports, and adapters for HTTP, CLI, and database.</description>
            <content:encoded><![CDATA[<p>Builds a complete hexagonal architecture example - domain model, use cases, ports, and adapters for HTTP, CLI, and database.</p><p><a href="https://andrej.prus.dev/blog/hexagonal-architecture-php-practical-ports-adapters-implementation">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Data Transfer Objects: Validation, Casting and Immutability Patterns</title>
            <link>https://andrej.prus.dev/blog/php-data-transfer-objects-validation-casting-immutability-patterns</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-data-transfer-objects-validation-casting-immutability-patterns</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>DTO</category>
            <category>Immutability</category>
            <description>Shows multiple DTO patterns in PHP, including readonly classes, Spatie DTO package, validation at construction, and collection helpers.</description>
            <content:encoded><![CDATA[<p>Shows multiple DTO patterns in PHP, including readonly classes, Spatie DTO package, validation at construction, and collection helpers.</p><p><a href="https://andrej.prus.dev/blog/php-data-transfer-objects-validation-casting-immutability-patterns">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a PHP SDK: HTTP Client Abstraction, Retries &amp; Test Fakes</title>
            <link>https://andrej.prus.dev/blog/building-php-sdk-http-client-abstraction-retries-test-fakes</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-php-sdk-http-client-abstraction-retries-test-fakes</guid>
            <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>SDK</category>
            <category>PSR-18</category>
            <category>Testing</category>
            <description>Full tutorial for designing a third-party PHP SDK - fluent interface, PSR-18 HTTP client, retry middleware, and testable fakes.</description>
            <content:encoded><![CDATA[<p>Full tutorial for designing a third-party PHP SDK - fluent interface, PSR-18 HTTP client, retry middleware, and testable fakes.</p><p><a href="https://andrej.prus.dev/blog/building-php-sdk-http-client-abstraction-retries-test-fakes">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Surviving Legacy Laravel Modernization</title>
            <link>https://andrej.prus.dev/blog/surviving-legacy-laravel-modernization</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/surviving-legacy-laravel-modernization</guid>
            <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Modernization</category>
            <category>Laravel</category>
            <category>Legacy Modernization</category>
            <category>Testing</category>
            <category>PHPStan</category>
            <category>Technical SEO</category>
            <description>A practical Laravel modernization plan for legacy applications, covering tests, PHP upgrades, PHPStan, SEO regressions, and safe delivery.</description>
            <content:encoded><![CDATA[<p>A practical Laravel modernization plan for legacy applications, covering tests, PHP upgrades, PHPStan, SEO regressions, and safe delivery.</p><p><a href="https://andrej.prus.dev/blog/surviving-legacy-laravel-modernization">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-surviving-legacy-laravel-modernization/blog-surviving-legacy-laravel-modernization-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-surviving-legacy-laravel-modernization/blog-surviving-legacy-laravel-modernization-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Refactoring Handbook: How to Modernize Legacy Codebases Safely</title>
            <link>https://andrej.prus.dev/blog/php-refactoring-handbook-modernize-legacy-codebases-safely</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-refactoring-handbook-modernize-legacy-codebases-safely</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Refactoring</category>
            <category>Legacy Code</category>
            <category>Modernization</category>
            <description>Systematic approach to legacy PHP modernization - strangler fig pattern, characterization tests, dependency inversion, and incremental upgrades.</description>
            <content:encoded><![CDATA[<p>Systematic approach to legacy PHP modernization - strangler fig pattern, characterization tests, dependency inversion, and incremental upgrades.</p><p><a href="https://andrej.prus.dev/blog/php-refactoring-handbook-modernize-legacy-codebases-safely">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Memory Management: Reference Counting, Garbage Collection &amp; Leaks</title>
            <link>https://andrej.prus.dev/blog/php-memory-management-reference-counting-garbage-collection-leaks</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-memory-management-reference-counting-garbage-collection-leaks</guid>
            <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Memory Management</category>
            <category>Garbage Collection</category>
            <category>Xdebug</category>
            <description>Explains PHP&apos;s zval memory model, reference cycles, gc_collect_cycles, and tools like Valgrind and xDebug for leak detection.</description>
            <content:encoded><![CDATA[<p>Explains PHP&#039;s zval memory model, reference cycles, gc_collect_cycles, and tools like Valgrind and xDebug for leak detection.</p><p><a href="https://andrej.prus.dev/blog/php-memory-management-reference-counting-garbage-collection-leaks">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Workers and Queues: Supervisor, Horizon &amp; Zero-Downtime Deploys</title>
            <link>https://andrej.prus.dev/blog/php-workers-queues-supervisor-horizon-zero-downtime-deploys</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-workers-queues-supervisor-horizon-zero-downtime-deploys</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Queues</category>
            <category>Supervisor</category>
            <category>Horizon</category>
            <category>Deployments</category>
            <description>Production guide for managing PHP queue workers - Supervisor config, graceful restarts, deploy coordination, and alerting setup.</description>
            <content:encoded><![CDATA[<p>Production guide for managing PHP queue workers - Supervisor config, graceful restarts, deploy coordination, and alerting setup.</p><p><a href="https://andrej.prus.dev/blog/php-workers-queues-supervisor-horizon-zero-downtime-deploys">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Octane Production Checklist</title>
            <link>https://andrej.prus.dev/blog/laravel-octane-production-checklist</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-octane-production-checklist</guid>
            <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>Laravel Octane</category>
            <category>Production</category>
            <category>Queues</category>
            <category>Core Web Vitals</category>
            <description>A production Laravel Octane checklist for safe workers, memory, queues, database connections, Core Web Vitals, and measurable SEO performance gains.</description>
            <content:encoded><![CDATA[<p>A production Laravel Octane checklist for safe workers, memory, queues, database connections, Core Web Vitals, and measurable SEO performance gains.</p><p><a href="https://andrej.prus.dev/blog/laravel-octane-production-checklist">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Zero: Build Powerful PHP CLI Applications and Distribute Them</title>
            <link>https://andrej.prus.dev/blog/laravel-zero-build-powerful-php-cli-applications-distribute-them</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-zero-build-powerful-php-cli-applications-distribute-them</guid>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Laravel Zero</category>
            <category>CLI</category>
            <category>PHAR</category>
            <description>Walks through building, testing, and compiling a Laravel Zero CLI tool to a PHAR with self-update and platform-specific builds.</description>
            <content:encoded><![CDATA[<p>Walks through building, testing, and compiling a Laravel Zero CLI tool to a PHAR with self-update and platform-specific builds.</p><p><a href="https://andrej.prus.dev/blog/laravel-zero-build-powerful-php-cli-applications-distribute-them">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Securing Laravel APIs: Passport vs Sanctum vs JWT Deep Comparison</title>
            <link>https://andrej.prus.dev/blog/securing-laravel-apis-passport-sanctum-jwt-deep-comparison</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/securing-laravel-apis-passport-sanctum-jwt-deep-comparison</guid>
            <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Laravel</category>
            <category>APIs</category>
            <category>Passport</category>
            <category>Sanctum</category>
            <category>JWT</category>
            <description>Evaluates three Laravel auth strategies for APIs - comparing token types, setup complexity, revocation, and mobile app scenarios.</description>
            <content:encoded><![CDATA[<p>Evaluates three Laravel auth strategies for APIs - comparing token types, setup complexity, revocation, and mobile app scenarios.</p><p><a href="https://andrej.prus.dev/blog/securing-laravel-apis-passport-sanctum-jwt-deep-comparison">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHPStan Level 9 on Existing Laravel</title>
            <link>https://andrej.prus.dev/blog/phpstan-level-9-existing-laravel</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/phpstan-level-9-existing-laravel</guid>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Code Quality</category>
            <category>PHPStan</category>
            <category>Laravel</category>
            <category>Testing</category>
            <category>Technical SEO</category>
            <description>A step-by-step PHPStan Level 9 adoption plan for existing Laravel applications, with baselines, module cleanup, CI rules, and SEO-safe releases.</description>
            <content:encoded><![CDATA[<p>A step-by-step PHPStan Level 9 adoption plan for existing Laravel applications, with baselines, module cleanup, CI rules, and SEO-safe releases.</p><p><a href="https://andrej.prus.dev/blog/phpstan-level-9-existing-laravel">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-phpstan-level-9-existing-laravel/blog-phpstan-level-9-existing-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-phpstan-level-9-existing-laravel/blog-phpstan-level-9-existing-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Understanding PHP Stream API: File I/O, Wrappers &amp; Custom Protocols</title>
            <link>https://andrej.prus.dev/blog/understanding-php-stream-api-file-io-wrappers-custom-protocols</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/understanding-php-stream-api-file-io-wrappers-custom-protocols</guid>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Streams</category>
            <category>File IO</category>
            <category>Wrappers</category>
            <description>Explores PHP streams - wrappers, filters, stream contexts, and building custom stream wrappers for exotic storage backends.</description>
            <content:encoded><![CDATA[<p>Explores PHP streams - wrappers, filters, stream contexts, and building custom stream wrappers for exotic storage backends.</p><p><a href="https://andrej.prus.dev/blog/understanding-php-stream-api-file-io-wrappers-custom-protocols">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Full-Text Search in PHP: Elasticsearch, Meilisearch &amp; Laravel Scout</title>
            <link>https://andrej.prus.dev/blog/full-text-search-php-elasticsearch-meilisearch-laravel-scout</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/full-text-search-php-elasticsearch-meilisearch-laravel-scout</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>PHP</category>
            <category>Laravel Scout</category>
            <category>Elasticsearch</category>
            <category>Meilisearch</category>
            <category>Full-Text Search</category>
            <description>Compares search backends, integrates each with Laravel Scout, and benchmarks relevance and performance on large datasets.</description>
            <content:encoded><![CDATA[<p>Compares search backends, integrates each with Laravel Scout, and benchmarks relevance and performance on large datasets.</p><p><a href="https://andrej.prus.dev/blog/full-text-search-php-elasticsearch-meilisearch-laravel-scout">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Symfony UX Components: Turbo, Stimulus &amp; Live Components in 2026</title>
            <link>https://andrej.prus.dev/blog/symfony-ux-components-turbo-stimulus-live-components-2026</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/symfony-ux-components-turbo-stimulus-live-components-2026</guid>
            <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Symfony</category>
            <category>Symfony UX</category>
            <category>Turbo</category>
            <category>Stimulus</category>
            <category>Live Components</category>
            <category>PHP</category>
            <description>Shows how to build dynamic UIs in Symfony with UX Turbo page transitions, Stimulus controllers, and real-time Live Components.</description>
            <content:encoded><![CDATA[<p>Shows how to build dynamic UIs in Symfony with UX Turbo page transitions, Stimulus controllers, and real-time Live Components.</p><p><a href="https://andrej.prus.dev/blog/symfony-ux-components-turbo-stimulus-live-components-2026">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Profiling in Production: Blackfire, Tideways &amp; SPX Compared</title>
            <link>https://andrej.prus.dev/blog/php-profiling-production-blackfire-tideways-spx-compared</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-profiling-production-blackfire-tideways-spx-compared</guid>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Profiling</category>
            <category>Blackfire</category>
            <category>Tideways</category>
            <category>SPX</category>
            <description>Evaluates three PHP profilers for production use - setup, overhead, callgraph visualizations, and alerting on regressions.</description>
            <content:encoded><![CDATA[<p>Evaluates three PHP profilers for production use - setup, overhead, callgraph visualizations, and alerting on regressions.</p><p><a href="https://andrej.prus.dev/blog/php-profiling-production-blackfire-tideways-spx-compared">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Precognition: Real-Time Validation Without Full Form Submission</title>
            <link>https://andrej.prus.dev/blog/laravel-precognition-real-time-validation-without-full-form-submission</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-precognition-real-time-validation-without-full-form-submission</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Precognition</category>
            <category>Validation</category>
            <category>Inertia</category>
            <category>Livewire</category>
            <description>Deep-dive into Precognition - how it works, how to set it up with Inertia and Livewire, and front-end integration patterns.</description>
            <content:encoded><![CDATA[<p>Deep-dive into Precognition - how it works, how to set it up with Inertia and Livewire, and front-end integration patterns.</p><p><a href="https://andrej.prus.dev/blog/laravel-precognition-real-time-validation-without-full-form-submission">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a PHP Blog Engine From Scratch: No Framework, Clean Code</title>
            <link>https://andrej.prus.dev/blog/building-php-blog-engine-from-scratch-no-framework-clean-code</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-php-blog-engine-from-scratch-no-framework-clean-code</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-14T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Blog Engine</category>
            <category>SQLite</category>
            <category>Markdown</category>
            <category>No Framework</category>
            <description>Builds a feature-complete blog - routing, templating, SQLite storage, markdown support - using only the PHP standard library.</description>
            <content:encoded><![CDATA[<p>Builds a feature-complete blog - routing, templating, SQLite storage, markdown support - using only the PHP standard library.</p><p><a href="https://andrej.prus.dev/blog/building-php-blog-engine-from-scratch-no-framework-clean-code">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building Webhooks in PHP: Payload Validation, Retries &amp; Idempotency</title>
            <link>https://andrej.prus.dev/blog/building-webhooks-php-payload-validation-retries-idempotency</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-webhooks-php-payload-validation-retries-idempotency</guid>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>Webhooks</category>
            <category>Idempotency</category>
            <category>Security</category>
            <description>Shows how to implement a robust webhook receiver - HMAC signature verification, duplicate detection, and async processing patterns.</description>
            <content:encoded><![CDATA[<p>Shows how to implement a robust webhook receiver - HMAC signature verification, duplicate detection, and async processing patterns.</p><p><a href="https://andrej.prus.dev/blog/building-webhooks-php-payload-validation-retries-idempotency">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Event Loops Explained: How ReactPHP and Amp Handle Concurrency</title>
            <link>https://andrej.prus.dev/blog/php-event-loops-explained-reactphp-amp-handle-concurrency</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-event-loops-explained-reactphp-amp-handle-concurrency</guid>
            <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Event Loops</category>
            <category>ReactPHP</category>
            <category>Amp</category>
            <category>Concurrency</category>
            <description>Demystifies event loops, non-blocking I/O, and timer scheduling in PHP, comparing ReactPHP streams vs Amp channels.</description>
            <content:encoded><![CDATA[<p>Demystifies event loops, non-blocking I/O, and timer scheduling in PHP, comparing ReactPHP streams vs Amp channels.</p><p><a href="https://andrej.prus.dev/blog/php-event-loops-explained-reactphp-amp-handle-concurrency">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Code Review Checklist: 50 Things Senior Developers Always Check</title>
            <link>https://andrej.prus.dev/blog/php-code-review-checklist-50-things-senior-developers-always-check</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-code-review-checklist-50-things-senior-developers-always-check</guid>
            <pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Code Review</category>
            <category>Security</category>
            <category>Testing</category>
            <description>A comprehensive, annotated code review checklist covering naming, error handling, security, performance, and testability issues.</description>
            <content:encoded><![CDATA[<p>A comprehensive, annotated code review checklist covering naming, error handling, security, performance, and testability issues.</p><p><a href="https://andrej.prus.dev/blog/php-code-review-checklist-50-things-senior-developers-always-check">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP and PostgreSQL: Advanced Queries, JSONB &amp; Full-Text Search</title>
            <link>https://andrej.prus.dev/blog/php-postgresql-advanced-queries-jsonb-full-text-search</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-postgresql-advanced-queries-jsonb-full-text-search</guid>
            <pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>PHP</category>
            <category>PostgreSQL</category>
            <category>JSONB</category>
            <category>Full-Text Search</category>
            <description>Explores PostgreSQL-specific features from PHP - JSONB querying, array columns, CTEs, and pg_query for performance-critical apps.</description>
            <content:encoded><![CDATA[<p>Explores PostgreSQL-specific features from PHP - JSONB querying, array columns, CTEs, and pg_query for performance-critical apps.</p><p><a href="https://andrej.prus.dev/blog/php-postgresql-advanced-queries-jsonb-full-text-search">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>API Design Best Practices for PHP Developers: REST, HATEOAS &amp; OpenAPI</title>
            <link>https://andrej.prus.dev/blog/api-design-best-practices-php-developers-rest-hateoas-openapi</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/api-design-best-practices-php-developers-rest-hateoas-openapi</guid>
            <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>REST</category>
            <category>OpenAPI</category>
            <category>HATEOAS</category>
            <description>Covers API design fundamentals - hypermedia controls, status codes, versioning, and generating OpenAPI docs from PHP attributes.</description>
            <content:encoded><![CDATA[<p>Covers API design fundamentals - hypermedia controls, status codes, versioning, and generating OpenAPI docs from PHP attributes.</p><p><a href="https://andrej.prus.dev/blog/api-design-best-practices-php-developers-rest-hateoas-openapi">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Testing Laravel Applications: Feature Tests, Mocking &amp; Database Factories</title>
            <link>https://andrej.prus.dev/blog/testing-laravel-applications-feature-tests-mocking-database-factories</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/testing-laravel-applications-feature-tests-mocking-database-factories</guid>
            <pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>Laravel</category>
            <category>Feature Tests</category>
            <category>Mockery</category>
            <category>Factories</category>
            <category>SQLite</category>
            <description>Covers Laravel&apos;s HTTP test helpers, Mockery integration, database factory states, and running tests against in-memory SQLite.</description>
            <content:encoded><![CDATA[<p>Covers Laravel&#039;s HTTP test helpers, Mockery integration, database factory states, and running tests against in-memory SQLite.</p><p><a href="https://andrej.prus.dev/blog/testing-laravel-applications-feature-tests-mocking-database-factories">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Pest PHP 3 New Features: Architectural Testing &amp; Mutation Testing</title>
            <link>https://andrej.prus.dev/blog/pest-php-3-new-features-architectural-testing-mutation-testing</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/pest-php-3-new-features-architectural-testing-mutation-testing</guid>
            <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>PHP</category>
            <category>Pest</category>
            <category>Architecture Testing</category>
            <category>Mutation Testing</category>
            <category>Infection</category>
            <description>Covers Pest 3&apos;s new architectural assertions, built-in mutation testing, how it compares with Infection PHP, and snapshot testing support.</description>
            <content:encoded><![CDATA[<p>Covers Pest 3&#039;s new architectural assertions, built-in mutation testing, how it compares with Infection PHP, and snapshot testing support.</p><p><a href="https://andrej.prus.dev/blog/pest-php-3-new-features-architectural-testing-mutation-testing">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 9.0 Preview: What&apos;s Coming and How to Prepare Your Codebase</title>
            <link>https://andrej.prus.dev/blog/php-90-preview-whats-coming-how-prepare-codebase</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-90-preview-whats-coming-how-prepare-codebase</guid>
            <pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 9.0</category>
            <category>Migration</category>
            <category>Deprecations</category>
            <description>Early look at PHP 9.0 planned changes - removal of deprecated features, new syntax proposals, and migration path from 8.x.</description>
            <content:encoded><![CDATA[<p>Early look at PHP 9.0 planned changes - removal of deprecated features, new syntax proposals, and migration path from 8.x.</p><p><a href="https://andrej.prus.dev/blog/php-90-preview-whats-coming-how-prepare-codebase">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Volt &amp; Folio: Single-File Components and Page-Based Routing</title>
            <link>https://andrej.prus.dev/blog/laravel-volt-folio-single-file-components-page-based-routing</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-volt-folio-single-file-components-page-based-routing</guid>
            <pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Livewire</category>
            <category>Volt</category>
            <category>Folio</category>
            <category>Routing</category>
            <description>Explores Laravel Folio&apos;s file-based routing and Volt&apos;s single-file Livewire components for rapid full-stack PHP development.</description>
            <content:encoded><![CDATA[<p>Explores Laravel Folio&#039;s file-based routing and Volt&#039;s single-file Livewire components for rapid full-stack PHP development.</p><p><a href="https://andrej.prus.dev/blog/laravel-volt-folio-single-file-components-page-based-routing">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Rate Limiting Strategies: Token Bucket, Sliding Window &amp; Redis</title>
            <link>https://andrej.prus.dev/blog/php-rate-limiting-strategies-token-bucket-sliding-window-redis</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-rate-limiting-strategies-token-bucket-sliding-window-redis</guid>
            <pubDate>Wed, 19 Nov 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Redis</category>
            <category>Rate Limiting</category>
            <category>APIs</category>
            <description>Implements three rate-limiting algorithms in PHP with Redis, covering distributed locking, graceful degradation, and HTTP 429 responses.</description>
            <content:encoded><![CDATA[<p>Implements three rate-limiting algorithms in PHP with Redis, covering distributed locking, graceful degradation, and HTTP 429 responses.</p><p><a href="https://andrej.prus.dev/blog/php-rate-limiting-strategies-token-bucket-sliding-window-redis">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>SOLID Principles in PHP: Practical Examples for Better Code Quality</title>
            <link>https://andrej.prus.dev/blog/solid-principles-php-practical-examples-better-code-quality</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/solid-principles-php-practical-examples-better-code-quality</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>SOLID</category>
            <category>Refactoring</category>
            <category>OOP</category>
            <description>Demonstrates each SOLID principle with before/after PHP refactoring examples, showing how they reduce coupling and increase cohesion.</description>
            <content:encoded><![CDATA[<p>Demonstrates each SOLID principle with before/after PHP refactoring examples, showing how they reduce coupling and increase cohesion.</p><p><a href="https://andrej.prus.dev/blog/solid-principles-php-practical-examples-better-code-quality">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a PHP Package for Packagist: From Scratch to First Release</title>
            <link>https://andrej.prus.dev/blog/building-php-package-packagist-scratch-first-release</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-php-package-packagist-scratch-first-release</guid>
            <pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Composer</category>
            <category>Packagist</category>
            <category>SemVer</category>
            <description>Full guide to designing, testing, documenting, and publishing a PHP library on Packagist with SemVer and GitHub releases.</description>
            <content:encoded><![CDATA[<p>Full guide to designing, testing, documenting, and publishing a PHP library on Packagist with SemVer and GitHub releases.</p><p><a href="https://andrej.prus.dev/blog/building-php-package-packagist-scratch-first-release">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Observability: Logging, Tracing &amp; Metrics With OpenTelemetry</title>
            <link>https://andrej.prus.dev/blog/php-observability-logging-tracing-metrics-opentelemetry</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-observability-logging-tracing-metrics-opentelemetry</guid>
            <pubDate>Mon, 11 Aug 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>OpenTelemetry</category>
            <category>Observability</category>
            <category>Logging</category>
            <category>Metrics</category>
            <description>Implements the three pillars of observability in PHP - structured logging, distributed tracing, and Prometheus metrics with OTEL PHP SDK.</description>
            <content:encoded><![CDATA[<p>Implements the three pillars of observability in PHP - structured logging, distributed tracing, and Prometheus metrics with OTEL PHP SDK.</p><p><a href="https://andrej.prus.dev/blog/php-observability-logging-tracing-metrics-opentelemetry">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Symfony 7 Migration Guide: What Changed and How to Upgrade Safely</title>
            <link>https://andrej.prus.dev/blog/symfony-7-migration-guide-what-changed-how-upgrade-safely</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/symfony-7-migration-guide-what-changed-how-upgrade-safely</guid>
            <pubDate>Wed, 30 Jul 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Symfony</category>
            <category>Migration</category>
            <category>PHP</category>
            <category>Composer</category>
            <category>Upgrade</category>
            <description>Step-by-step upgrade path from Symfony 6 to 7 - breaking changes, removed components, new features, and automated migration tools.</description>
            <content:encoded><![CDATA[<p>Step-by-step upgrade path from Symfony 6 to 7 - breaking changes, removed components, new features, and automated migration tools.</p><p><a href="https://andrej.prus.dev/blog/symfony-7-migration-guide-what-changed-how-upgrade-safely">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Type System Mastery: Union, Intersection &amp; Never Types Explained</title>
            <link>https://andrej.prus.dev/blog/php-type-system-mastery-union-intersection-never-types-explained</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-type-system-mastery-union-intersection-never-types-explained</guid>
            <pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Type System</category>
            <category>Union Types</category>
            <category>Intersection Types</category>
            <description>Comprehensive guide to PHP&apos;s evolving type system - union, nullable, intersection, never, and void types with strict mode best practices.</description>
            <content:encoded><![CDATA[<p>Comprehensive guide to PHP&#039;s evolving type system - union, nullable, intersection, never, and void types with strict mode best practices.</p><p><a href="https://andrej.prus.dev/blog/php-type-system-mastery-union-intersection-never-types-explained">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Reverb: Build Real-Time WebSocket Apps Without Third-Party Services</title>
            <link>https://andrej.prus.dev/blog/laravel-reverb-build-real-time-websocket-apps-without-third-party-services</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-reverb-build-real-time-websocket-apps-without-third-party-services</guid>
            <pubDate>Fri, 02 May 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Reverb</category>
            <category>WebSockets</category>
            <category>Broadcasting</category>
            <category>Real-Time</category>
            <description>Introduces Laravel&apos;s first-party WebSocket server - setup, horizontal scaling, authentication, and broadcasting channel integration.</description>
            <content:encoded><![CDATA[<p>Introduces Laravel&#039;s first-party WebSocket server - setup, horizontal scaling, authentication, and broadcasting channel integration.</p><p><a href="https://andrej.prus.dev/blog/laravel-reverb-build-real-time-websocket-apps-without-third-party-services">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Database Indexing Strategies for PHP Apps: B-Trees, Full-Text &amp; Composite</title>
            <link>https://andrej.prus.dev/blog/database-indexing-strategies-php-apps-b-trees-full-text-composite</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/database-indexing-strategies-php-apps-b-trees-full-text-composite</guid>
            <pubDate>Mon, 07 Apr 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>PHP</category>
            <category>MySQL</category>
            <category>PostgreSQL</category>
            <category>Indexes</category>
            <description>Explains index types, covering indexes, partial indexes, and full-text search with practical MySQL and PostgreSQL PHP examples.</description>
            <content:encoded><![CDATA[<p>Explains index types, covering indexes, partial indexes, and full-text search with practical MySQL and PostgreSQL PHP examples.</p><p><a href="https://andrej.prus.dev/blog/database-indexing-strategies-php-apps-b-trees-full-text-composite">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP and AI: Integrating ChatGPT &amp; Claude APIs Into Your PHP Application</title>
            <link>https://andrej.prus.dev/blog/php-ai-integrating-chatgpt-claude-apis-php-application</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-ai-integrating-chatgpt-claude-apis-php-application</guid>
            <pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>OpenAI</category>
            <category>ChatGPT</category>
            <category>Claude</category>
            <category>AI</category>
            <description>Practical tutorial for calling LLM APIs from PHP - streaming responses, function calling, context management, and cost optimization.</description>
            <content:encoded><![CDATA[<p>Practical tutorial for calling LLM APIs from PHP - streaming responses, function calling, context management, and cost optimization.</p><p><a href="https://andrej.prus.dev/blog/php-ai-integrating-chatgpt-claude-apis-php-application">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Modern PHP Development Workflow: Git, CI/CD, Docker &amp; GitHub Actions</title>
            <link>https://andrej.prus.dev/blog/modern-php-development-workflow-git-ci-cd-docker-github-actions</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/modern-php-development-workflow-git-ci-cd-docker-github-actions</guid>
            <pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Git</category>
            <category>CI/CD</category>
            <category>Docker</category>
            <category>GitHub Actions</category>
            <description>End-to-end guide for a professional PHP dev workflow - feature branches, automated tests, Docker builds, and zero-downtime deploys.</description>
            <content:encoded><![CDATA[<p>End-to-end guide for a professional PHP dev workflow - feature branches, automated tests, Docker builds, and zero-downtime deploys.</p><p><a href="https://andrej.prus.dev/blog/modern-php-development-workflow-git-ci-cd-docker-github-actions">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>What the Next Generation of Languages Is Teaching Us About How We Think Today</title>
            <link>https://andrej.prus.dev/blog/what-the-next-generation-of-languages-is-teaching-us-about-how-we-think-today</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/what-the-next-generation-of-languages-is-teaching-us-about-how-we-think-today</guid>
            <pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Programming Languages</category>
            <category>Zig</category>
            <category>Gleam</category>
            <category>Elixir</category>
            <category>Carbon</category>
            <category>Developer Thinking</category>
            <description>Looks at emerging languages - Zig, Gleam, Elixir, Carbon - and what their design choices reveal about the limitations in how current mainstream languages have trained developers to think.</description>
            <content:encoded><![CDATA[<p>Looks at emerging languages - Zig, Gleam, Elixir, Carbon - and what their design choices reveal about the limitations in how current mainstream languages have trained developers to think.</p><p><a href="https://andrej.prus.dev/blog/what-the-next-generation-of-languages-is-teaching-us-about-how-we-think-today">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel 11 Complete Guide: New Minimal App Structure &amp; Bootstrapping</title>
            <link>https://andrej.prus.dev/blog/laravel-11-complete-guide-minimal-app-structure-bootstrapping</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-11-complete-guide-minimal-app-structure-bootstrapping</guid>
            <pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Laravel 11</category>
            <category>Bootstrapping</category>
            <category>Artisan</category>
            <category>Architecture</category>
            <description>Covers the redesigned minimal directory structure, single bootstrap file, merged config, and new artisan commands in Laravel 11.</description>
            <content:encoded><![CDATA[<p>Covers the redesigned minimal directory structure, single bootstrap file, merged config, and new artisan commands in Laravel 11.</p><p><a href="https://andrej.prus.dev/blog/laravel-11-complete-guide-minimal-app-structure-bootstrapping">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.4 Released: Complete Breakdown of Every New Feature</title>
            <link>https://andrej.prus.dev/blog/php-84-released-complete-breakdown-every-new-feature</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-84-released-complete-breakdown-every-new-feature</guid>
            <pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.4</category>
            <category>Property Hooks</category>
            <category>Migration</category>
            <description>Definitive release guide covering property hooks, asymmetric visibility, lazy objects, the new HTML5 parser, and all deprecations.</description>
            <content:encoded><![CDATA[<p>Definitive release guide covering property hooks, asymmetric visibility, lazy objects, the new HTML5 parser, and all deprecations.</p><p><a href="https://andrej.prus.dev/blog/php-84-released-complete-breakdown-every-new-feature">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Giving Back at Scale: How to Build an Open Source Culture Within Your Engineering Team</title>
            <link>https://andrej.prus.dev/blog/giving-back-at-scale-how-to-build-an-open-source-culture-within-your-engineering-team</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/giving-back-at-scale-how-to-build-an-open-source-culture-within-your-engineering-team</guid>
            <pubDate>Wed, 20 Nov 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Engineering Management</category>
            <category>Team Culture</category>
            <category>OSPO</category>
            <category>Developer Workflow</category>
            <description>Practical playbook for engineering managers - allocating contribution time, choosing strategic projects, recognising contributors, and making open source part of the team identity.</description>
            <content:encoded><![CDATA[<p>Practical playbook for engineering managers - allocating contribution time, choosing strategic projects, recognising contributors, and making open source part of the team identity.</p><p><a href="https://andrej.prus.dev/blog/giving-back-at-scale-how-to-build-an-open-source-culture-within-your-engineering-team">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Symfony Messenger: Async Messaging, Retry Logic &amp; Dead Letter Queues</title>
            <link>https://andrej.prus.dev/blog/symfony-messenger-async-messaging-retry-logic-dead-letter-queues</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/symfony-messenger-async-messaging-retry-logic-dead-letter-queues</guid>
            <pubDate>Thu, 07 Nov 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Symfony</category>
            <category>Messenger</category>
            <category>Queues</category>
            <category>Async</category>
            <category>PHP</category>
            <description>Explores Symfony Messenger transports, middleware, retry stamps, failure transport, and monitoring with built-in CLI commands.</description>
            <content:encoded><![CDATA[<p>Explores Symfony Messenger transports, middleware, retry stamps, failure transport, and monitoring with built-in CLI commands.</p><p><a href="https://andrej.prus.dev/blog/symfony-messenger-async-messaging-retry-logic-dead-letter-queues">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Slow Death of Boilerplate: How Modern Frameworks Liberated Developer Thinking</title>
            <link>https://andrej.prus.dev/blog/the-slow-death-of-boilerplate-how-modern-frameworks-liberated-developer-thinking</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-slow-death-of-boilerplate-how-modern-frameworks-liberated-developer-thinking</guid>
            <pubDate>Thu, 07 Nov 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Frameworks</category>
            <category>Boilerplate</category>
            <category>Laravel</category>
            <category>Rails</category>
            <category>Spring Boot</category>
            <category>Convention over Configuration</category>
            <description>Charts the progressive elimination of ceremony in frameworks - from struts XML configs to Laravel&apos;s zero-config defaults - and how each reduction shifted developer attention toward actual problems.</description>
            <content:encoded><![CDATA[<p>Charts the progressive elimination of ceremony in frameworks - from struts XML configs to Laravel&#039;s zero-config defaults - and how each reduction shifted developer attention toward actual problems.</p><p><a href="https://andrej.prus.dev/blog/the-slow-death-of-boilerplate-how-modern-frameworks-liberated-developer-thinking">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Secure PHP File Uploads: Validation, Storage &amp; Malware Prevention</title>
            <link>https://andrej.prus.dev/blog/secure-php-file-uploads-validation-storage-malware-prevention</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/secure-php-file-uploads-validation-storage-malware-prevention</guid>
            <pubDate>Tue, 15 Oct 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>File Uploads</category>
            <category>S3</category>
            <category>Malware Scanning</category>
            <description>Complete upload security guide: MIME validation, file-name sanitization, virus scanning integration, and secure S3 storage patterns.</description>
            <content:encoded><![CDATA[<p>Complete upload security guide: MIME validation, file-name sanitization, virus scanning integration, and secure S3 storage patterns.</p><p><a href="https://andrej.prus.dev/blog/secure-php-file-uploads-validation-storage-malware-prevention">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Post-Mortem Culture: Turning Every Major Bug Into a Team Learning Opportunity</title>
            <link>https://andrej.prus.dev/blog/post-mortem-culture-turning-every-major-bug-into-team-learning-opportunity</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/post-mortem-culture-turning-every-major-bug-into-team-learning-opportunity</guid>
            <pubDate>Fri, 27 Sep 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Postmortems</category>
            <category>Incident Response</category>
            <category>Reliability</category>
            <description>Establishes a blameless post-mortem process - timeline reconstruction, five-whys root cause analysis, and action items that prevent entire classes of future bugs.</description>
            <content:encoded><![CDATA[<p>Establishes a blameless post-mortem process - timeline reconstruction, five-whys root cause analysis, and action items that prevent entire classes of future bugs.</p><p><a href="https://andrej.prus.dev/blog/post-mortem-culture-turning-every-major-bug-into-team-learning-opportunity">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Fibers vs ReactPHP vs Amp: Async PHP Ecosystem Comparison 2024</title>
            <link>https://andrej.prus.dev/blog/php-fibers-vs-reactphp-vs-amp-async-php-ecosystem-comparison-2024</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-fibers-vs-reactphp-vs-amp-async-php-ecosystem-comparison-2024</guid>
            <pubDate>Wed, 04 Sep 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Fibers</category>
            <category>ReactPHP</category>
            <category>Amp</category>
            <category>Async</category>
            <description>Side-by-side comparison of PHP async approaches: native Fibers, ReactPHP event loop, and Amp coroutines with benchmark methodology.</description>
            <content:encoded><![CDATA[<p>Side-by-side comparison of PHP async approaches: native Fibers, ReactPHP event loop, and Amp coroutines with benchmark methodology.</p><p><a href="https://andrej.prus.dev/blog/php-fibers-vs-reactphp-vs-amp-async-php-ecosystem-comparison-2024">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>What Corporate Open Source Contributions Actually Look Like From the Inside</title>
            <link>https://andrej.prus.dev/blog/what-corporate-open-source-contributions-actually-look-like-from-the-inside</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/what-corporate-open-source-contributions-actually-look-like-from-the-inside</guid>
            <pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>OSPO</category>
            <category>Engineering Management</category>
            <category>Corporate Engineering</category>
            <category>Software Strategy</category>
            <description>An insider look at how companies like Google, Meta, and Microsoft structure open source teams, measure contribution impact, and balance community needs with business objectives.</description>
            <content:encoded><![CDATA[<p>An insider look at how companies like Google, Meta, and Microsoft structure open source teams, measure contribution impact, and balance community needs with business objectives.</p><p><a href="https://andrej.prus.dev/blog/what-corporate-open-source-contributions-actually-look-like-from-the-inside">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Language Paradigms as Lenses: What Learning a New Paradigm Does to Your Developer Brain</title>
            <link>https://andrej.prus.dev/blog/language-paradigms-as-lenses-what-learning-a-new-paradigm-does-to-your-developer-brain</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/language-paradigms-as-lenses-what-learning-a-new-paradigm-does-to-your-developer-brain</guid>
            <pubDate>Fri, 30 Aug 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Programming Paradigms</category>
            <category>Mental Models</category>
            <category>Functional Programming</category>
            <category>Concurrency</category>
            <description>Explores the cognitive science of paradigm shifts - how learning OOP, functional, or concurrent programming rewires problem-solving instincts that persist long after you stop using the language.</description>
            <content:encoded><![CDATA[<p>Explores the cognitive science of paradigm shifts - how learning OOP, functional, or concurrent programming rewires problem-solving instincts that persist long after you stop using the language.</p><p><a href="https://andrej.prus.dev/blog/language-paradigms-as-lenses-what-learning-a-new-paradigm-does-to-your-developer-brain">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Simplicity at Scale: How Great Engineering Teams Keep Codebases Clean Over Time</title>
            <link>https://andrej.prus.dev/blog/simplicity-at-scale-great-engineering-teams-keep-codebases-clean-over-time</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/simplicity-at-scale-great-engineering-teams-keep-codebases-clean-over-time</guid>
            <pubDate>Fri, 30 Aug 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Simplicity</category>
            <category>Architecture</category>
            <category>Code Review</category>
            <category>Team Practices</category>
            <description>Examines how high-performing teams sustain simplicity through architectural decision records, complexity budgets, and a shared culture of ruthless editing.</description>
            <content:encoded><![CDATA[<p>Examines how high-performing teams sustain simplicity through architectural decision records, complexity budgets, and a shared culture of ruthless editing.</p><p><a href="https://andrej.prus.dev/blog/simplicity-at-scale-great-engineering-teams-keep-codebases-clean-over-time">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Optimizing Laravel for High Traffic: Horizon, Telescope &amp; Load Testing</title>
            <link>https://andrej.prus.dev/blog/optimizing-laravel-high-traffic-horizon-telescope-load-testing</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/optimizing-laravel-high-traffic-horizon-telescope-load-testing</guid>
            <pubDate>Tue, 20 Aug 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>Laravel</category>
            <category>Horizon</category>
            <category>Telescope</category>
            <category>Load Testing</category>
            <description>End-to-end performance playbook: queue tuning with Horizon, debug profiling with Telescope, and k6 load testing strategies.</description>
            <content:encoded><![CDATA[<p>End-to-end performance playbook: queue tuning with Horizon, debug profiling with Telescope, and k6 load testing strategies.</p><p><a href="https://andrej.prus.dev/blog/optimizing-laravel-high-traffic-horizon-telescope-load-testing">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building Event Sourcing Systems in PHP: A Step-by-Step Implementation</title>
            <link>https://andrej.prus.dev/blog/building-event-sourcing-systems-php-step-by-step-implementation</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-event-sourcing-systems-php-step-by-step-implementation</guid>
            <pubDate>Tue, 09 Jul 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Event Sourcing</category>
            <category>CQRS</category>
            <category>Domain Events</category>
            <description>Implements an event store, aggregate roots, projectors, and process managers for an event-sourced PHP application from scratch.</description>
            <content:encoded><![CDATA[<p>Implements an event store, aggregate roots, projectors, and process managers for an event-sourced PHP application from scratch.</p><p><a href="https://andrej.prus.dev/blog/building-event-sourcing-systems-php-step-by-step-implementation">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Rector: Automated Code Upgrades and Refactoring Made Simple</title>
            <link>https://andrej.prus.dev/blog/php-rector-automated-code-upgrades-refactoring-made-simple</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-rector-automated-code-upgrades-refactoring-made-simple</guid>
            <pubDate>Fri, 28 Jun 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Rector</category>
            <category>Refactoring</category>
            <category>CI</category>
            <description>Introduction to Rector: running existing rule sets for PHP upgrades, writing custom rules, and integrating into CI/CD pipelines.</description>
            <content:encoded><![CDATA[<p>Introduction to Rector: running existing rule sets for PHP upgrades, writing custom rules, and integrating into CI/CD pipelines.</p><p><a href="https://andrej.prus.dev/blog/php-rector-automated-code-upgrades-refactoring-made-simple">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Kubernetes Rewired the Way Engineers Think About Infrastructure and Applications</title>
            <link>https://andrej.prus.dev/blog/how-kubernetes-rewired-the-way-engineers-think-about-infrastructure-and-applications</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-kubernetes-rewired-the-way-engineers-think-about-infrastructure-and-applications</guid>
            <pubDate>Wed, 19 Jun 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Kubernetes</category>
            <category>Infrastructure</category>
            <category>Declarative Configuration</category>
            <category>Operations</category>
            <description>Examines how Kubernetes shifted infrastructure thinking from servers and processes to desired state, reconciliation loops, and declarative configuration as the new lingua franca of operations.</description>
            <content:encoded><![CDATA[<p>Examines how Kubernetes shifted infrastructure thinking from servers and processes to desired state, reconciliation loops, and declarative configuration as the new lingua franca of operations.</p><p><a href="https://andrej.prus.dev/blog/how-kubernetes-rewired-the-way-engineers-think-about-infrastructure-and-applications">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Security in Open Source: Why Transparency Is Both the Greatest Strength and Risk</title>
            <link>https://andrej.prus.dev/blog/security-in-open-source-why-transparency-is-both-greatest-strength-and-risk</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/security-in-open-source-why-transparency-is-both-greatest-strength-and-risk</guid>
            <pubDate>Mon, 17 Jun 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Security</category>
            <category>Vulnerability Management</category>
            <category>Supply Chain</category>
            <category>Responsible Disclosure</category>
            <description>Examines the dual nature of open source security - public code enables auditing but also attack research - covering responsible disclosure and dependency vulnerability management.</description>
            <content:encoded><![CDATA[<p>Examines the dual nature of open source security - public code enables auditing but also attack research - covering responsible disclosure and dependency vulnerability management.</p><p><a href="https://andrej.prus.dev/blog/security-in-open-source-why-transparency-is-both-greatest-strength-and-risk">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Debugging Across the Full Stack: Tracing a Bug From Browser to Database</title>
            <link>https://andrej.prus.dev/blog/debugging-across-full-stack-tracing-bug-browser-database</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-across-full-stack-tracing-bug-browser-database</guid>
            <pubDate>Fri, 14 Jun 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>JavaScript</category>
            <category>HTTP</category>
            <category>Database</category>
            <category>Observability</category>
            <description>Walks through a realistic end-to-end bug hunt spanning JavaScript console errors, HTTP requests, backend exceptions, and slow database queries.</description>
            <content:encoded><![CDATA[<p>Walks through a realistic end-to-end bug hunt spanning JavaScript console errors, HTTP requests, backend exceptions, and slow database queries.</p><p><a href="https://andrej.prus.dev/blog/debugging-across-full-stack-tracing-bug-browser-database">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Elegant APIs: How to Design Interfaces That Feel Obvious to Use</title>
            <link>https://andrej.prus.dev/blog/elegant-apis-how-design-interfaces-feel-obvious-use</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/elegant-apis-how-design-interfaces-feel-obvious-use</guid>
            <pubDate>Sat, 18 May 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>API Design</category>
            <category>Interfaces</category>
            <category>Developer Experience</category>
            <description>Covers the principles behind intuitive API design - minimal required knowledge, consistent conventions, and interfaces that guide users toward correct usage.</description>
            <content:encoded><![CDATA[<p>Covers the principles behind intuitive API design - minimal required knowledge, consistent conventions, and interfaces that guide users toward correct usage.</p><p><a href="https://andrej.prus.dev/blog/elegant-apis-how-design-interfaces-feel-obvious-use">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Real-Time Notifications in Laravel With Broadcasting &amp; Pusher</title>
            <link>https://andrej.prus.dev/blog/real-time-notifications-laravel-broadcasting-pusher</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/real-time-notifications-laravel-broadcasting-pusher</guid>
            <pubDate>Fri, 17 May 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Broadcasting</category>
            <category>Pusher</category>
            <category>Echo</category>
            <category>Notifications</category>
            <description>Implements server-side events, Echo.js front-end integration, private channels, and presence channels for real-time user notifications.</description>
            <content:encoded><![CDATA[<p>Implements server-side events, Echo.js front-end integration, private channels, and presence channels for real-time user notifications.</p><p><a href="https://andrej.prus.dev/blog/real-time-notifications-laravel-broadcasting-pusher">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Mastering PHP Composer Plugins: Extend Your Build Pipeline Powerfully</title>
            <link>https://andrej.prus.dev/blog/mastering-php-composer-plugins-extend-build-pipeline-powerfully</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/mastering-php-composer-plugins-extend-build-pipeline-powerfully</guid>
            <pubDate>Wed, 03 Apr 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Composer</category>
            <category>Build Pipeline</category>
            <category>Plugins</category>
            <description>Shows how to write, test, and publish Composer plugins for code generation, post-install hooks, and asset compilation automation.</description>
            <content:encoded><![CDATA[<p>Shows how to write, test, and publish Composer plugins for code generation, post-install hooks, and asset compilation automation.</p><p><a href="https://andrej.prus.dev/blog/mastering-php-composer-plugins-extend-build-pipeline-powerfully">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Evolution of SQL: How a 50-Year-Old Language Keeps Reinventing Developer Thinking</title>
            <link>https://andrej.prus.dev/blog/the-evolution-of-sql-how-a-50-year-old-language-keeps-reinventing-developer-thinking</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-evolution-of-sql-how-a-50-year-old-language-keeps-reinventing-developer-thinking</guid>
            <pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>SQL</category>
            <category>Relational Databases</category>
            <category>Data Modeling</category>
            <category>Query Languages</category>
            <description>Traces SQL from relational theory to window functions, CTEs, JSON columns, and vector search - showing how each addition changed what developers reached for when modelling data problems.</description>
            <content:encoded><![CDATA[<p>Traces SQL from relational theory to window functions, CTEs, JSON columns, and vector search - showing how each addition changed what developers reached for when modelling data problems.</p><p><a href="https://andrej.prus.dev/blog/the-evolution-of-sql-how-a-50-year-old-language-keeps-reinventing-developer-thinking">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.4 Preview: Property Hooks, Lazy Objects &amp; New Array Functions</title>
            <link>https://andrej.prus.dev/blog/php-84-preview-property-hooks-lazy-objects-new-array-functions</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-84-preview-property-hooks-lazy-objects-new-array-functions</guid>
            <pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.4</category>
            <category>Property Hooks</category>
            <category>Lazy Objects</category>
            <category>Arrays</category>
            <description>Early preview of PHP 8.4 changes: property hooks as a major OOP addition, lazy object proxies, and new array helper functions.</description>
            <content:encoded><![CDATA[<p>Early preview of PHP 8.4 changes: property hooks as a major OOP addition, lazy object proxies, and new array helper functions.</p><p><a href="https://andrej.prus.dev/blog/php-84-preview-property-hooks-lazy-objects-new-array-functions">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Writing Code That Is Easy to Debug: Observability-First Development</title>
            <link>https://andrej.prus.dev/blog/writing-code-easy-debug-observability-first-development</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/writing-code-easy-debug-observability-first-development</guid>
            <pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Observability</category>
            <category>Logging</category>
            <category>Architecture</category>
            <description>Shifts the mindset from reactive debugging to proactive observability - designing state machines, audit trails, and invariant checks into the code itself.</description>
            <content:encoded><![CDATA[<p>Shifts the mindset from reactive debugging to proactive observability - designing state machines, audit trails, and invariant checks into the code itself.</p><p><a href="https://andrej.prus.dev/blog/writing-code-easy-debug-observability-first-development">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Culture of Code Review in Open Source: Honest, Harsh &amp; Occasionally Brilliant</title>
            <link>https://andrej.prus.dev/blog/the-culture-of-code-review-in-open-source-honest-harsh-occasionally-brilliant</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-culture-of-code-review-in-open-source-honest-harsh-occasionally-brilliant</guid>
            <pubDate>Mon, 04 Mar 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Code Review</category>
            <category>Maintainers</category>
            <category>Collaboration</category>
            <category>Software Culture</category>
            <description>Explores the unique norms of open source code review - directness without cruelty, technical precision, and the rare experience of having your code reviewed by true domain experts.</description>
            <content:encoded><![CDATA[<p>Explores the unique norms of open source code review - directness without cruelty, technical precision, and the rare experience of having your code reviewed by true domain experts.</p><p><a href="https://andrej.prus.dev/blog/the-culture-of-code-review-in-open-source-honest-harsh-occasionally-brilliant">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Relationship Between Tests and Elegant Design: Simplicity as a Signal</title>
            <link>https://andrej.prus.dev/blog/relationship-between-tests-elegant-design-simplicity-signal</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/relationship-between-tests-elegant-design-simplicity-signal</guid>
            <pubDate>Thu, 29 Feb 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Testing</category>
            <category>TDD</category>
            <category>Design</category>
            <description>Argues that hard-to-test code is a symptom of poor design, and that writing tests first naturally drives toward simpler, more cohesive structures.</description>
            <content:encoded><![CDATA[<p>Argues that hard-to-test code is a symptom of poor design, and that writing tests first naturally drives toward simpler, more cohesive structures.</p><p><a href="https://andrej.prus.dev/blog/relationship-between-tests-elegant-design-simplicity-signal">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel API Resources: Transform Your JSON Responses Like a Pro</title>
            <link>https://andrej.prus.dev/blog/laravel-api-resources-transform-json-responses-like-a-pro</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-api-resources-transform-json-responses-like-a-pro</guid>
            <pubDate>Mon, 26 Feb 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>API Resources</category>
            <category>JSON</category>
            <category>Eloquent</category>
            <category>APIs</category>
            <description>Covers resource classes, resource collections, conditional attributes, nested includes, and metadata injection for clean API outputs.</description>
            <content:encoded><![CDATA[<p>Covers resource classes, resource collections, conditional attributes, nested includes, and metadata injection for clean API outputs.</p><p><a href="https://andrej.prus.dev/blog/laravel-api-resources-transform-json-responses-like-a-pro">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How React Changed the Mental Model of UI Development Across the Entire Industry</title>
            <link>https://andrej.prus.dev/blog/how-react-changed-the-mental-model-of-ui-development-across-the-entire-industry</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-react-changed-the-mental-model-of-ui-development-across-the-entire-industry</guid>
            <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>React</category>
            <category>UI Development</category>
            <category>Components</category>
            <category>Declarative UI</category>
            <description>Documents React&apos;s paradigm shift - declarative rendering, unidirectional data flow, and component thinking - and how it permanently changed how developers conceptualise user interfaces.</description>
            <content:encoded><![CDATA[<p>Documents React&#039;s paradigm shift - declarative rendering, unidirectional data flow, and component thinking - and how it permanently changed how developers conceptualise user interfaces.</p><p><a href="https://andrej.prus.dev/blog/how-react-changed-the-mental-model-of-ui-development-across-the-entire-industry">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Design Patterns in PHP: Factory, Strategy, Observer &amp; Decorator</title>
            <link>https://andrej.prus.dev/blog/design-patterns-php-factory-strategy-observer-decorator</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/design-patterns-php-factory-strategy-observer-decorator</guid>
            <pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Design Patterns</category>
            <category>OOP</category>
            <category>SOLID</category>
            <description>Code-heavy tutorial implementing GoF design patterns in modern PHP 8.x with interface-first design and practical use cases.</description>
            <content:encoded><![CDATA[<p>Code-heavy tutorial implementing GoF design patterns in modern PHP 8.x with interface-first design and practical use cases.</p><p><a href="https://andrej.prus.dev/blog/design-patterns-php-factory-strategy-observer-decorator">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Thrill of the Fix: What Solving a Hard Bug Teaches You About Your System</title>
            <link>https://andrej.prus.dev/blog/thrill-fix-solving-hard-bug-teaches-system</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/thrill-fix-solving-hard-bug-teaches-system</guid>
            <pubDate>Mon, 18 Dec 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Incident Review</category>
            <category>Observability</category>
            <category>Team Practices</category>
            <description>Reflects on how the most painful debugging sessions yield the deepest system knowledge, and how to capture and share that understanding with your team.</description>
            <content:encoded><![CDATA[<p>Reflects on how the most painful debugging sessions yield the deepest system knowledge, and how to capture and share that understanding with your team.</p><p><a href="https://andrej.prus.dev/blog/thrill-fix-solving-hard-bug-teaches-system">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Contributing to Open Source as a Junior Developer: What Nobody Tells You</title>
            <link>https://andrej.prus.dev/blog/contributing-to-open-source-as-a-junior-developer-what-nobody-tells-you</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/contributing-to-open-source-as-a-junior-developer-what-nobody-tells-you</guid>
            <pubDate>Mon, 11 Dec 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Junior Developers</category>
            <category>Career Growth</category>
            <category>Contributions</category>
            <category>Code Review</category>
            <description>Honest account of the challenges new developers face - imposter syndrome, intimidating codebases, slow review cycles - with concrete strategies for pushing through each one.</description>
            <content:encoded><![CDATA[<p>Honest account of the challenges new developers face - imposter syndrome, intimidating codebases, slow review cycles - with concrete strategies for pushing through each one.</p><p><a href="https://andrej.prus.dev/blog/contributing-to-open-source-as-a-junior-developer-what-nobody-tells-you">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Async HTTP Requests With Guzzle Promises &amp; cURL Multi Handle</title>
            <link>https://andrej.prus.dev/blog/php-async-http-requests-guzzle-promises-curl-multi-handle</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-async-http-requests-guzzle-promises-curl-multi-handle</guid>
            <pubDate>Tue, 05 Dec 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Guzzle</category>
            <category>cURL</category>
            <category>Async HTTP</category>
            <description>Compares serial vs parallel HTTP calls, demonstrates Guzzle pool concurrency, and benchmarks real-world API aggregation speedups.</description>
            <content:encoded><![CDATA[<p>Compares serial vs parallel HTTP calls, demonstrates Guzzle pool concurrency, and benchmarks real-world API aggregation speedups.</p><p><a href="https://andrej.prus.dev/blog/php-async-http-requests-guzzle-promises-curl-multi-handle">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Code Reviews That Champion Simplicity: What to Look for and How to Say It</title>
            <link>https://andrej.prus.dev/blog/code-reviews-champion-simplicity-what-look-how-say-it</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/code-reviews-champion-simplicity-what-look-how-say-it</guid>
            <pubDate>Sun, 03 Dec 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Code Review</category>
            <category>Simplicity</category>
            <category>Refactoring</category>
            <category>Team Practices</category>
            <description>Gives reviewers a practical vocabulary for identifying and discussing unnecessary complexity without discouraging experimentation.</description>
            <content:encoded><![CDATA[<p>Gives reviewers a practical vocabulary for identifying and discussing unnecessary complexity without discouraging experimentation.</p><p><a href="https://andrej.prus.dev/blog/code-reviews-champion-simplicity-what-look-how-say-it">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Eloquent Relationships: HasManyThrough, MorphMany &amp; Performance</title>
            <link>https://andrej.prus.dev/blog/laravel-eloquent-relationships-hasmanythrough-morphmany-performance</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-eloquent-relationships-hasmanythrough-morphmany-performance</guid>
            <pubDate>Wed, 22 Nov 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Eloquent</category>
            <category>Relationships</category>
            <category>Database</category>
            <category>Performance</category>
            <description>Deep-dive into complex Eloquent relationships, N+1 problem detection with Telescope, eager loading strategies, and query optimization.</description>
            <content:encoded><![CDATA[<p>Deep-dive into complex Eloquent relationships, N+1 problem detection with Telescope, eager loading strategies, and query optimization.</p><p><a href="https://andrej.prus.dev/blog/laravel-eloquent-relationships-hasmanythrough-morphmany-performance">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Symfony Component Model: How One Framework Taught PHP to Think in Reusable Parts</title>
            <link>https://andrej.prus.dev/blog/the-symfony-component-model-how-one-framework-taught-php-to-think-in-reusable-parts</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-symfony-component-model-how-one-framework-taught-php-to-think-in-reusable-parts</guid>
            <pubDate>Tue, 31 Oct 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Symfony</category>
            <category>PHP</category>
            <category>Components</category>
            <category>Architecture</category>
            <description>Traces Symfony&apos;s evolution from monolithic framework to a decoupled component library - and how that architectural shift influenced every major PHP project that followed.</description>
            <content:encoded><![CDATA[<p>Traces Symfony&#039;s evolution from monolithic framework to a decoupled component library - and how that architectural shift influenced every major PHP project that followed.</p><p><a href="https://andrej.prus.dev/blog/the-symfony-component-model-how-one-framework-taught-php-to-think-in-reusable-parts">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Functional Thinking as a Path to Simpler Code: Pure Functions &amp; Immutability</title>
            <link>https://andrej.prus.dev/blog/functional-thinking-path-simpler-code-pure-functions-immutability</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/functional-thinking-path-simpler-code-pure-functions-immutability</guid>
            <pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Functional Programming</category>
            <category>Immutability</category>
            <category>Clean Code</category>
            <description>Explains how functional programming ideas - pure functions, no side effects, immutable data - produce code that is dramatically easier to reason about.</description>
            <content:encoded><![CDATA[<p>Explains how functional programming ideas - pure functions, no side effects, immutable data - produce code that is dramatically easier to reason about.</p><p><a href="https://andrej.prus.dev/blog/functional-thinking-path-simpler-code-pure-functions-immutability">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Serverless With Bref on AWS Lambda: Cold Starts, Layers &amp; Cost</title>
            <link>https://andrej.prus.dev/blog/php-serverless-with-bref-aws-lambda-cold-starts-layers-cost</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-serverless-with-bref-aws-lambda-cold-starts-layers-cost</guid>
            <pubDate>Wed, 11 Oct 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Bref</category>
            <category>AWS Lambda</category>
            <category>Serverless</category>
            <category>Laravel</category>
            <category>Symfony</category>
            <description>Guide to running Laravel/Symfony on Lambda via Bref, covering layer management, cold start mitigation, and real-world cost analysis.</description>
            <content:encoded><![CDATA[<p>Guide to running Laravel/Symfony on Lambda via Bref, covering layer management, cold start mitigation, and real-world cost analysis.</p><p><a href="https://andrej.prus.dev/blog/php-serverless-with-bref-aws-lambda-cold-starts-layers-cost">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Debugging Third-Party Libraries: When the Bug Is Not Your Code</title>
            <link>https://andrej.prus.dev/blog/debugging-third-party-libraries-when-bug-not-your-code</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-third-party-libraries-when-bug-not-your-code</guid>
            <pubDate>Mon, 09 Oct 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Composer</category>
            <category>Dependencies</category>
            <category>Open Source</category>
            <description>Guides developers through diagnosing bugs inside dependencies - reading source, bisecting versions, writing minimal reproducers, and filing useful issues.</description>
            <content:encoded><![CDATA[<p>Guides developers through diagnosing bugs inside dependencies - reading source, bisecting versions, writing minimal reproducers, and filing useful issues.</p><p><a href="https://andrej.prus.dev/blog/debugging-third-party-libraries-when-bug-not-your-code">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Open Source Shaped the Modern Internet: A History Worth Knowing</title>
            <link>https://andrej.prus.dev/blog/how-open-source-shaped-modern-internet-history-worth-knowing</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-open-source-shaped-modern-internet-history-worth-knowing</guid>
            <pubDate>Sat, 30 Sep 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Internet History</category>
            <category>Linux</category>
            <category>Apache</category>
            <category>PostgreSQL</category>
            <category>Git</category>
            <description>Traces the infrastructure of the modern web - Linux, Apache, OpenSSL, PostgreSQL, and Git - showing how freely shared code became the foundation everything else runs on.</description>
            <content:encoded><![CDATA[<p>Traces the infrastructure of the modern web - Linux, Apache, OpenSSL, PostgreSQL, and Git - showing how freely shared code became the foundation everything else runs on.</p><p><a href="https://andrej.prus.dev/blog/how-open-source-shaped-modern-internet-history-worth-knowing">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Implementing OAuth 2.0 in PHP: Authorization Code Flow From Scratch</title>
            <link>https://andrej.prus.dev/blog/implementing-oauth-20-php-authorization-code-flow-from-scratch</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/implementing-oauth-20-php-authorization-code-flow-from-scratch</guid>
            <pubDate>Fri, 29 Sep 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>OAuth 2.0</category>
            <category>PKCE</category>
            <category>Authentication</category>
            <description>Full implementation of OAuth 2.0 authorization code + PKCE flow in PHP, authorization endpoint, token exchange, and refresh logic.</description>
            <content:encoded><![CDATA[<p>Full implementation of OAuth 2.0 authorization code + PKCE flow in PHP, authorization endpoint, token exchange, and refresh logic.</p><p><a href="https://andrej.prus.dev/blog/implementing-oauth-20-php-authorization-code-flow-from-scratch">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Develop an Eye for Elegant Code: A Skill-Building Roadmap</title>
            <link>https://andrej.prus.dev/blog/how-develop-eye-elegant-code-skill-building-roadmap</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-develop-eye-elegant-code-skill-building-roadmap</guid>
            <pubDate>Tue, 22 Aug 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Practice</category>
            <category>Refactoring</category>
            <category>Code Review</category>
            <description>Outlines a deliberate practice path - reading great codebases, performing kata exercises, and seeking feedback to develop aesthetic code judgment.</description>
            <content:encoded><![CDATA[<p>Outlines a deliberate practice path - reading great codebases, performing kata exercises, and seeking feedback to develop aesthetic code judgment.</p><p><a href="https://andrej.prus.dev/blog/how-develop-eye-elegant-code-skill-building-roadmap">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Docker Changed the Way Developers Think About Environments Forever</title>
            <link>https://andrej.prus.dev/blog/how-docker-changed-the-way-developers-think-about-environments-forever</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-docker-changed-the-way-developers-think-about-environments-forever</guid>
            <pubDate>Sun, 20 Aug 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Docker</category>
            <category>Containers</category>
            <category>DevOps</category>
            <category>Reproducibility</category>
            <category>Environments</category>
            <description>Argues that Docker&apos;s container model did not just solve deployment - it fundamentally shifted how developers conceptualise application boundaries, dependencies, and reproducibility.</description>
            <content:encoded><![CDATA[<p>Argues that Docker&#039;s container model did not just solve deployment - it fundamentally shifted how developers conceptualise application boundaries, dependencies, and reproducibility.</p><p><a href="https://andrej.prus.dev/blog/how-docker-changed-the-way-developers-think-about-environments-forever">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>When the Bug Is Not Where You Think It Is: Classic Misdirection in Debugging</title>
            <link>https://andrej.prus.dev/blog/when-bug-not-where-you-think-classic-misdirection-debugging</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/when-bug-not-where-you-think-classic-misdirection-debugging</guid>
            <pubDate>Sun, 20 Aug 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Troubleshooting</category>
            <category>Root Cause Analysis</category>
            <category>Observability</category>
            <description>Examines common misdirection patterns - symptoms in module A caused by bugs in module B - and how to retrace assumptions when a trail goes cold.</description>
            <content:encoded><![CDATA[<p>Examines common misdirection patterns - symptoms in module A caused by bugs in module B - and how to retrace assumptions when a trail goes cold.</p><p><a href="https://andrej.prus.dev/blog/when-bug-not-where-you-think-classic-misdirection-debugging">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building CLI Tools With PHP and Symfony Console Component</title>
            <link>https://andrej.prus.dev/blog/building-cli-tools-php-symfony-console-component</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-cli-tools-php-symfony-console-component</guid>
            <pubDate>Mon, 07 Aug 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>Symfony Console</category>
            <category>CLI</category>
            <category>PHAR</category>
            <description>Creates a feature-rich CLI application with commands, progress bars, table output, interactive prompts, and PHAR compilation.</description>
            <content:encoded><![CDATA[<p>Creates a feature-rich CLI application with commands, progress bars, table output, interactive prompts, and PHAR compilation.</p><p><a href="https://andrej.prus.dev/blog/building-cli-tools-php-symfony-console-component">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Forking as a Feature: How Disagreement Drives Innovation in Open Source</title>
            <link>https://andrej.prus.dev/blog/forking-as-a-feature-how-disagreement-drives-innovation-in-open-source</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/forking-as-a-feature-how-disagreement-drives-innovation-in-open-source</guid>
            <pubDate>Sat, 22 Jul 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Forks</category>
            <category>Governance</category>
            <category>MariaDB</category>
            <category>LibreOffice</category>
            <category>Node.js</category>
            <description>Reframes the fork not as a failure of community but as a vital mechanism - exploring famous forks like MariaDB, LibreOffice, and Node/io.js and what they produced.</description>
            <content:encoded><![CDATA[<p>Reframes the fork not as a failure of community but as a vital mechanism - exploring famous forks like MariaDB, LibreOffice, and Node/io.js and what they produced.</p><p><a href="https://andrej.prus.dev/blog/forking-as-a-feature-how-disagreement-drives-innovation-in-open-source">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux IPv6 Configuration: Enabling, Addressing &amp; Firewall Rules With ip6tables</title>
            <link>https://andrej.prus.dev/blog/linux-ipv6-configuration-enabling-addressing-firewall-rules-ip6tables</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-ipv6-configuration-enabling-addressing-firewall-rules-ip6tables</guid>
            <pubDate>Wed, 19 Jul 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>IPv6</category>
            <category>ip6tables</category>
            <category>SLAAC</category>
            <category>Router Advertisements</category>
            <description>Configures static and SLAAC IPv6 addressing, sets up ip6tables firewall rules, enables Router Advertisements, and tests connectivity end-to-end.</description>
            <content:encoded><![CDATA[<p>Configures static and SLAAC IPv6 addressing, sets up ip6tables firewall rules, enables Router Advertisements, and tests connectivity end-to-end.</p><p><a href="https://andrej.prus.dev/blog/linux-ipv6-configuration-enabling-addressing-firewall-rules-ip6tables">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Automated Testing Pyramid in PHP: Unit, Integration &amp; E2E With Pest</title>
            <link>https://andrej.prus.dev/blog/automated-testing-pyramid-php-unit-integration-e2e-pest</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/automated-testing-pyramid-php-unit-integration-e2e-pest</guid>
            <pubDate>Tue, 18 Jul 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>PHP</category>
            <category>Pest</category>
            <category>E2E</category>
            <category>CI</category>
            <description>Introduces Pest as an expressive PHP testing framework, demonstrates the testing pyramid, and shows parallel test execution.</description>
            <content:encoded><![CDATA[<p>Introduces Pest as an expressive PHP testing framework, demonstrates the testing pyramid, and shows parallel test execution.</p><p><a href="https://andrej.prus.dev/blog/automated-testing-pyramid-php-unit-integration-e2e-pest">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Object-Oriented Revolution: How OOP Changed the Mental Model of an Entire Industry</title>
            <link>https://andrej.prus.dev/blog/the-object-oriented-revolution-how-oop-changed-the-mental-model-of-an-entire-industry</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-object-oriented-revolution-how-oop-changed-the-mental-model-of-an-entire-industry</guid>
            <pubDate>Fri, 09 Jun 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Object-Oriented Programming</category>
            <category>OOP</category>
            <category>Software Design</category>
            <category>Programming Paradigms</category>
            <description>Examines how object-oriented thinking transformed software design in the 1990s and how its dominance shaped - and occasionally distorted - the way developers model every problem.</description>
            <content:encoded><![CDATA[<p>Examines how object-oriented thinking transformed software design in the 1990s and how its dominance shaped - and occasionally distorted - the way developers model every problem.</p><p><a href="https://andrej.prus.dev/blog/the-object-oriented-revolution-how-oop-changed-the-mental-model-of-an-entire-industry">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The YAGNI Principle in Practice: Shipping Simple Code That Lasts</title>
            <link>https://andrej.prus.dev/blog/yagni-principle-practice-shipping-simple-code-lasts</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/yagni-principle-practice-shipping-simple-code-lasts</guid>
            <pubDate>Thu, 08 Jun 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>YAGNI</category>
            <category>Simplicity</category>
            <category>Code Review</category>
            <category>Refactoring</category>
            <description>Practical guide to You Aren&apos;t Gonna Need It - recognizing speculative features in code review, and techniques for deferring decisions safely.</description>
            <content:encoded><![CDATA[<p>Practical guide to You Aren&#039;t Gonna Need It - recognizing speculative features in code review, and techniques for deferring decisions safely.</p><p><a href="https://andrej.prus.dev/blog/yagni-principle-practice-shipping-simple-code-lasts">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring Linux Audit System: auditd Rules, Reports &amp; Compliance</title>
            <link>https://andrej.prus.dev/blog/configuring-linux-audit-system-auditd-rules-reports-compliance</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-linux-audit-system-auditd-rules-reports-compliance</guid>
            <pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>auditd</category>
            <category>auditctl</category>
            <category>aureport</category>
            <category>Compliance</category>
            <description>Sets up auditd with custom rules for file access, privilege escalation, and network-related syscalls, then generates aureport reports for compliance audits.</description>
            <content:encoded><![CDATA[<p>Sets up auditd with custom rules for file access, privilege escalation, and network-related syscalls, then generates aureport reports for compliance audits.</p><p><a href="https://andrej.prus.dev/blog/configuring-linux-audit-system-auditd-rules-reports-compliance">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Debugging Notebook: Why Writing Down Your Hypotheses Makes You Faster</title>
            <link>https://andrej.prus.dev/blog/debugging-notebook-why-writing-down-hypotheses-makes-you-faster</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-notebook-why-writing-down-hypotheses-makes-you-faster</guid>
            <pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Troubleshooting</category>
            <category>Incident Response</category>
            <category>Engineering Process</category>
            <description>Makes the case for keeping a live debugging journal - recording what you tried, what you ruled out, and what you suspect to prevent circular thinking.</description>
            <content:encoded><![CDATA[<p>Makes the case for keeping a live debugging journal - recording what you tried, what you ruled out, and what you suspect to prevent circular thinking.</p><p><a href="https://andrej.prus.dev/blog/debugging-notebook-why-writing-down-hypotheses-makes-you-faster">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Encryption Best Practices: AES-256, Libsodium &amp; Secure Key Management</title>
            <link>https://andrej.prus.dev/blog/php-encryption-best-practices-aes-256-libsodium-secure-key-management</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-encryption-best-practices-aes-256-libsodium-secure-key-management</guid>
            <pubDate>Fri, 02 Jun 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>Encryption</category>
            <category>Libsodium</category>
            <category>Key Management</category>
            <description>Shows proper symmetric and asymmetric encryption, key rotation, and envelope encryption using PHP&apos;s sodium extension.</description>
            <content:encoded><![CDATA[<p>Shows proper symmetric and asymmetric encryption, key rotation, and envelope encryption using PHP&#039;s sodium extension.</p><p><a href="https://andrej.prus.dev/blog/php-encryption-best-practices-aes-256-libsodium-secure-key-management">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Boot Process Deep Dive: GRUB2, initramfs &amp; systemd Target Config</title>
            <link>https://andrej.prus.dev/blog/linux-boot-process-deep-dive-grub2-initramfs-systemd-target-config</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-boot-process-deep-dive-grub2-initramfs-systemd-target-config</guid>
            <pubDate>Tue, 23 May 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>Boot</category>
            <category>GRUB2</category>
            <category>initramfs</category>
            <category>systemd</category>
            <description>Traces the full boot sequence from BIOS or UEFI through GRUB2 menu configuration, initramfs hooks, systemd targets, and default runlevel setup.</description>
            <content:encoded><![CDATA[<p>Traces the full boot sequence from BIOS or UEFI through GRUB2 menu configuration, initramfs hooks, systemd targets, and default runlevel setup.</p><p><a href="https://andrej.prus.dev/blog/linux-boot-process-deep-dive-grub2-initramfs-systemd-target-config">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>SQL vs NoSQL in PHP Apps: When to Use MySQL, MongoDB or Redis</title>
            <link>https://andrej.prus.dev/blog/sql-vs-nosql-php-apps-when-use-mysql-mongodb-redis</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/sql-vs-nosql-php-apps-when-use-mysql-mongodb-redis</guid>
            <pubDate>Sun, 14 May 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>PHP</category>
            <category>MySQL</category>
            <category>MongoDB</category>
            <category>Redis</category>
            <description>Decision guide comparing relational, document, and key-value stores for common PHP use cases, with code examples for all three.</description>
            <content:encoded><![CDATA[<p>Decision guide comparing relational, document, and key-value stores for common PHP use cases, with code examples for all three.</p><p><a href="https://andrej.prus.dev/blog/sql-vs-nosql-php-apps-when-use-mysql-mongodb-redis">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>From User to Contributor to Maintainer: The Open Source Career Path</title>
            <link>https://andrej.prus.dev/blog/from-user-to-contributor-to-maintainer-the-open-source-career-path</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/from-user-to-contributor-to-maintainer-the-open-source-career-path</guid>
            <pubDate>Tue, 09 May 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Maintainers</category>
            <category>Contributors</category>
            <category>Career Growth</category>
            <category>Governance</category>
            <description>Maps the natural progression from grateful user to active contributor to trusted maintainer, with milestones, mindset shifts, and skills developed at each stage.</description>
            <content:encoded><![CDATA[<p>Maps the natural progression from grateful user to active contributor to trusted maintainer, with milestones, mindset shifts, and skills developed at each stage.</p><p><a href="https://andrej.prus.dev/blog/from-user-to-contributor-to-maintainer-the-open-source-career-path">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Implementing CQRS in PHP: Separating Commands and Queries for Scalability</title>
            <link>https://andrej.prus.dev/blog/implementing-cqrs-in-php-separating-commands-queries-scalability</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/implementing-cqrs-in-php-separating-commands-queries-scalability</guid>
            <pubDate>Tue, 25 Apr 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>CQRS</category>
            <category>Message Bus</category>
            <category>Read Models</category>
            <description>Walks through a PHP CQRS implementation - command/query buses, read models, projections, and eventual consistency trade-offs.</description>
            <content:encoded><![CDATA[<p>Walks through a PHP CQRS implementation - command/query buses, read models, projections, and eventual consistency trade-offs.</p><p><a href="https://andrej.prus.dev/blog/implementing-cqrs-in-php-separating-commands-queries-scalability">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Setting Up Ansible for Linux Configuration Management: Playbooks &amp; Roles</title>
            <link>https://andrej.prus.dev/blog/setting-up-ansible-linux-configuration-management-playbooks-roles</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/setting-up-ansible-linux-configuration-management-playbooks-roles</guid>
            <pubDate>Tue, 11 Apr 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Automation</category>
            <category>Linux</category>
            <category>Ansible</category>
            <category>Playbooks</category>
            <category>Roles</category>
            <category>Vault</category>
            <description>Introduction to Ansible inventory, playbooks, roles, handlers, and Vault for secrets, automating repeatable Linux server configuration at scale.</description>
            <content:encoded><![CDATA[<p>Introduction to Ansible inventory, playbooks, roles, handlers, and Vault for secrets, automating repeatable Linux server configuration at scale.</p><p><a href="https://andrej.prus.dev/blog/setting-up-ansible-linux-configuration-management-playbooks-roles">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Elegant Error Handling: How Simplicity Applies Beyond the Happy Path</title>
            <link>https://andrej.prus.dev/blog/elegant-error-handling-simplicity-beyond-happy-path</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/elegant-error-handling-simplicity-beyond-happy-path</guid>
            <pubDate>Fri, 31 Mar 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Error Handling</category>
            <category>PHP</category>
            <category>Clean Code</category>
            <category>Reliability</category>
            <description>Applies elegance principles to error handling - meaningful error types, fail-fast design, and avoiding defensive code that obscures real intent.</description>
            <content:encoded><![CDATA[<p>Applies elegance principles to error handling - meaningful error types, fail-fast design, and avoiding defensive code that obscures real intent.</p><p><a href="https://andrej.prus.dev/blog/elegant-error-handling-simplicity-beyond-happy-path">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Functional Programming Languages Quietly Reshaped Mainstream Development</title>
            <link>https://andrej.prus.dev/blog/how-functional-programming-languages-quietly-reshaped-mainstream-development</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-functional-programming-languages-quietly-reshaped-mainstream-development</guid>
            <pubDate>Tue, 28 Mar 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Functional Programming</category>
            <category>Haskell</category>
            <category>Erlang</category>
            <category>Clojure</category>
            <category>Mainstream Languages</category>
            <description>Traces how ideas from Haskell, Erlang, and Clojure - immutability, map/filter/reduce, pattern matching - migrated into Python, Java, JavaScript, and PHP over two decades.</description>
            <content:encoded><![CDATA[<p>Traces how ideas from Haskell, Erlang, and Clojure - immutability, map/filter/reduce, pattern matching - migrated into Python, Java, JavaScript, and PHP over two decades.</p><p><a href="https://andrej.prus.dev/blog/how-functional-programming-languages-quietly-reshaped-mainstream-development">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Kernel Module Configuration: Loading, Blacklisting &amp; Building</title>
            <link>https://andrej.prus.dev/blog/linux-kernel-module-configuration-loading-blacklisting-building</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-kernel-module-configuration-loading-blacklisting-building</guid>
            <pubDate>Tue, 28 Mar 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>Kernel Modules</category>
            <category>modprobe</category>
            <category>Secure Boot</category>
            <category>C</category>
            <description>Covers modprobe, /etc/modules-load.d, blacklisting problematic modules, writing a minimal kernel module in C, and signing for Secure Boot.</description>
            <content:encoded><![CDATA[<p>Covers modprobe, /etc/modules-load.d, blacklisting problematic modules, writing a minimal kernel module in C, and signing for Secure Boot.</p><p><a href="https://andrej.prus.dev/blog/linux-kernel-module-configuration-loading-blacklisting-building">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Using a Debugger Properly: Breakpoints, Watch Expressions &amp; Call Stack Inspection</title>
            <link>https://andrej.prus.dev/blog/using-debugger-properly-breakpoints-watch-expressions-call-stack-inspection</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/using-debugger-properly-breakpoints-watch-expressions-call-stack-inspection</guid>
            <pubDate>Tue, 28 Mar 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Xdebug</category>
            <category>Breakpoints</category>
            <category>Tooling</category>
            <description>Goes beyond print statements to teach conditional breakpoints, logpoints, memory inspection, and stepping strategies in modern debugger tooling.</description>
            <content:encoded><![CDATA[<p>Goes beyond print statements to teach conditional breakpoints, logpoints, memory inspection, and stepping strategies in modern debugger tooling.</p><p><a href="https://andrej.prus.dev/blog/using-debugger-properly-breakpoints-watch-expressions-call-stack-inspection">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Octane: Turbocharged PHP With Swoole &amp; RoadRunner in Production</title>
            <link>https://andrej.prus.dev/blog/laravel-octane-turbocharged-php-swoole-roadrunner-production</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-octane-turbocharged-php-swoole-roadrunner-production</guid>
            <pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Laravel Octane</category>
            <category>Swoole</category>
            <category>RoadRunner</category>
            <category>Performance</category>
            <description>Explains how Octane boots your app once per worker, covers stateful pitfalls, memory leaks, and production deployment considerations.</description>
            <content:encoded><![CDATA[<p>Explains how Octane boots your app once per worker, covers stateful pitfalls, memory leaks, and production deployment considerations.</p><p><a href="https://andrej.prus.dev/blog/laravel-octane-turbocharged-php-swoole-roadrunner-production">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Why Documentation Is the Most Undervalued Contribution in Open Source</title>
            <link>https://andrej.prus.dev/blog/why-documentation-is-the-most-undervalued-contribution-in-open-source</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/why-documentation-is-the-most-undervalued-contribution-in-open-source</guid>
            <pubDate>Tue, 28 Feb 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Documentation</category>
            <category>Technical Writing</category>
            <category>Contributors</category>
            <category>Community</category>
            <description>Makes the case that great documentation multiplies the impact of every other contribution, and gives a practical framework for writing docs that actually help newcomers.</description>
            <content:encoded><![CDATA[<p>Makes the case that great documentation multiplies the impact of every other contribution, and gives a practical framework for writing docs that actually help newcomers.</p><p><a href="https://andrej.prus.dev/blog/why-documentation-is-the-most-undervalued-contribution-in-open-source">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Deploying PHP Apps to AWS: EC2, ECS Fargate &amp; Lambda Runtimes Guide</title>
            <link>https://andrej.prus.dev/blog/deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide</guid>
            <pubDate>Mon, 20 Feb 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>PHP</category>
            <category>AWS</category>
            <category>EC2</category>
            <category>ECS Fargate</category>
            <category>Lambda</category>
            <category>Bref</category>
            <description>Compares deployment approaches for PHP on AWS - from traditional EC2 to containerized Fargate and serverless Bref Lambda functions.</description>
            <content:encoded><![CDATA[<p>Compares deployment approaches for PHP on AWS - from traditional EC2 to containerized Fargate and serverless Bref Lambda functions.</p><p><a href="https://andrej.prus.dev/blog/deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring Samba on Linux: File Shares, Active Directory &amp; Permissions</title>
            <link>https://andrej.prus.dev/blog/configuring-samba-linux-file-shares-active-directory-permissions</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-samba-linux-file-shares-active-directory-permissions</guid>
            <pubDate>Tue, 14 Feb 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Storage</category>
            <category>Linux</category>
            <category>Samba</category>
            <category>SMB</category>
            <category>Active Directory</category>
            <category>Permissions</category>
            <description>Sets up Samba shares with user authentication, joins Linux to Windows Active Directory with Winbind, and maps UNIX/Windows permissions.</description>
            <content:encoded><![CDATA[<p>Sets up Samba shares with user authentication, joins Linux to Windows Active Directory with Winbind, and maps UNIX/Windows permissions.</p><p><a href="https://andrej.prus.dev/blog/configuring-samba-linux-file-shares-active-directory-permissions">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Namespace and cgroup Fundamentals: How Containers Really Work</title>
            <link>https://andrej.prus.dev/blog/linux-namespace-cgroup-fundamentals-how-containers-really-work</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-namespace-cgroup-fundamentals-how-containers-really-work</guid>
            <pubDate>Fri, 20 Jan 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>Containers</category>
            <category>Namespaces</category>
            <category>cgroups</category>
            <category>Isolation</category>
            <description>Explores PID, network, mount, UTS, IPC, and user namespaces, linking them to cgroups to show the foundations of container isolation.</description>
            <content:encoded><![CDATA[<p>Explores PID, network, mount, UTS, IPC, and user namespaces, linking them to cgroups to show the foundations of container isolation.</p><p><a href="https://andrej.prus.dev/blog/linux-namespace-cgroup-fundamentals-how-containers-really-work">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Debugging Race Conditions and Concurrency Bugs: A Practical Field Guide</title>
            <link>https://andrej.prus.dev/blog/debugging-race-conditions-concurrency-bugs-practical-field-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-race-conditions-concurrency-bugs-practical-field-guide</guid>
            <pubDate>Thu, 19 Jan 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Concurrency</category>
            <category>Race Conditions</category>
            <category>Deadlocks</category>
            <description>Tackles the hardest class of bugs - race conditions, deadlocks, and stale reads - with thread sanitiser tools, lock analysis, and deterministic replay.</description>
            <content:encoded><![CDATA[<p>Tackles the hardest class of bugs - race conditions, deadlocks, and stale reads - with thread sanitiser tools, lock analysis, and deterministic replay.</p><p><a href="https://andrej.prus.dev/blog/debugging-race-conditions-concurrency-bugs-practical-field-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Writing Code for Humans First: Readability as a Professional Responsibility</title>
            <link>https://andrej.prus.dev/blog/writing-code-humans-first-readability-professional-responsibility</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/writing-code-humans-first-readability-professional-responsibility</guid>
            <pubDate>Tue, 17 Jan 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Readability</category>
            <category>Code Review</category>
            <category>Maintainability</category>
            <description>Makes the case that code is read far more than it is written, and that optimising for the reader is the most impactful thing a developer can do.</description>
            <content:encoded><![CDATA[<p>Makes the case that code is read far more than it is written, and that optimising for the reader is the most impactful thing a developer can do.</p><p><a href="https://andrej.prus.dev/blog/writing-code-humans-first-readability-professional-responsibility">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>From Callbacks to Promises to Async/Await: How Async Thinking Evolved in JavaScript</title>
            <link>https://andrej.prus.dev/blog/from-callbacks-to-promises-to-async-await-how-async-thinking-evolved-in-javascript</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/from-callbacks-to-promises-to-async-await-how-async-thinking-evolved-in-javascript</guid>
            <pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>JavaScript</category>
            <category>Async Await</category>
            <category>Promises</category>
            <category>Callbacks</category>
            <category>Event Loop</category>
            <description>Traces the decade-long evolution of asynchronous JavaScript - how each abstraction layer changed how developers reason about time, concurrency, and error handling.</description>
            <content:encoded><![CDATA[<p>Traces the decade-long evolution of asynchronous JavaScript - how each abstraction layer changed how developers reason about time, concurrency, and error handling.</p><p><a href="https://andrej.prus.dev/blog/from-callbacks-to-promises-to-async-await-how-async-thinking-evolved-in-javascript">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.3 Features: Typed Class Constants, json_validate() &amp; More</title>
            <link>https://andrej.prus.dev/blog/php-83-features-typed-class-constants-json-validate-more</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-83-features-typed-class-constants-json-validate-more</guid>
            <pubDate>Sun, 08 Jan 2023 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.3</category>
            <category>Type System</category>
            <category>Migration</category>
            <description>Comprehensive coverage of PHP 8.3 additions: typed class constants, json_validate(), mb_str_pad(), Randomizer improvements, and migration notes for PHP 8.2 teams.</description>
            <content:encoded><![CDATA[<p>Comprehensive coverage of PHP 8.3 additions: typed class constants, json_validate(), mb_str_pad(), Randomizer improvements, and migration notes for PHP 8.2 teams.</p><p><a href="https://andrej.prus.dev/blog/php-83-features-typed-class-constants-json-validate-more">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Hardening Linux SSH: 2FA With Google Authenticator &amp; Certificate Auth</title>
            <link>https://andrej.prus.dev/blog/hardening-linux-ssh-2fa-google-authenticator-certificate-auth</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/hardening-linux-ssh-2fa-google-authenticator-certificate-auth</guid>
            <pubDate>Thu, 29 Dec 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>SSH</category>
            <category>OpenSSH</category>
            <category>MFA</category>
            <category>Certificates</category>
            <description>Implements SSH two-factor authentication with the Google Authenticator PAM module and OpenSSH certificate authority authentication for controlled server access.</description>
            <content:encoded><![CDATA[<p>Implements SSH two-factor authentication with the Google Authenticator PAM module and OpenSSH certificate authority authentication for controlled server access.</p><p><a href="https://andrej.prus.dev/blog/hardening-linux-ssh-2fa-google-authenticator-certificate-auth">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Economics of Open Source: Sponsorships, Grants &amp; Building a Sustainable Income</title>
            <link>https://andrej.prus.dev/blog/the-economics-of-open-source-sponsorships-grants-building-a-sustainable-income</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-economics-of-open-source-sponsorships-grants-building-a-sustainable-income</guid>
            <pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Sustainability</category>
            <category>Maintainers</category>
            <category>Funding</category>
            <category>Software Business</category>
            <description>Surveys funding models for open source developers - GitHub Sponsors, Open Collective, Tidelift, consulting arrangements, and dual-licensing strategies.</description>
            <content:encoded><![CDATA[<p>Surveys funding models for open source developers - GitHub Sponsors, Open Collective, Tidelift, consulting arrangements, and dual-licensing strategies.</p><p><a href="https://andrej.prus.dev/blog/the-economics-of-open-source-sponsorships-grants-building-a-sustainable-income">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>API Versioning in PHP: Strategies, URL Paths &amp; Header-Based Approaches</title>
            <link>https://andrej.prus.dev/blog/api-versioning-in-php-strategies-url-paths-header-based-approaches</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/api-versioning-in-php-strategies-url-paths-header-based-approaches</guid>
            <pubDate>Tue, 06 Dec 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>REST</category>
            <category>Versioning</category>
            <category>Backwards Compatibility</category>
            <description>Evaluates URL path, query string, header, and media-type versioning with PHP implementation examples and backwards-compatibility tips.</description>
            <content:encoded><![CDATA[<p>Evaluates URL path, query string, header, and media-type versioning with PHP implementation examples and backwards-compatibility tips.</p><p><a href="https://andrej.prus.dev/blog/api-versioning-in-php-strategies-url-paths-header-based-approaches">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Simple Abstractions vs Leaky Ones: How to Tell the Difference</title>
            <link>https://andrej.prus.dev/blog/simple-abstractions-vs-leaky-ones-how-tell-difference</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/simple-abstractions-vs-leaky-ones-how-tell-difference</guid>
            <pubDate>Tue, 29 Nov 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Abstractions</category>
            <category>Interfaces</category>
            <category>Design</category>
            <description>Defines what makes an abstraction genuinely useful versus one that forces callers to understand its internals to use it correctly.</description>
            <content:encoded><![CDATA[<p>Defines what makes an abstraction genuinely useful versus one that forces callers to understand its internals to use it correctly.</p><p><a href="https://andrej.prus.dev/blog/simple-abstractions-vs-leaky-ones-how-tell-difference">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux High Availability With Keepalived: VRRP &amp; Failover Configuration</title>
            <link>https://andrej.prus.dev/blog/linux-high-availability-keepalived-vrrp-failover-configuration</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-high-availability-keepalived-vrrp-failover-configuration</guid>
            <pubDate>Thu, 17 Nov 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>Keepalived</category>
            <category>VRRP</category>
            <category>High Availability</category>
            <category>Failover</category>
            <description>Sets up Keepalived VRRP for virtual IP failover, configures health check scripts, tracks interface state, and tests manual failover.</description>
            <content:encoded><![CDATA[<p>Sets up Keepalived VRRP for virtual IP failover, configures health check scripts, tracks interface state, and tests manual failover.</p><p><a href="https://andrej.prus.dev/blog/linux-high-availability-keepalived-vrrp-failover-configuration">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Microservices With RoadRunner: High-Performance Worker Pattern Explained</title>
            <link>https://andrej.prus.dev/blog/php-microservices-with-roadrunner-high-performance-worker-pattern-explained</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-microservices-with-roadrunner-high-performance-worker-pattern-explained</guid>
            <pubDate>Mon, 14 Nov 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>RoadRunner</category>
            <category>Microservices</category>
            <category>Workers</category>
            <description>Introduces RoadRunner as a Go-based PHP app server, covering worker loops, middleware, HTTP/2, and benchmarks vs php-fpm.</description>
            <content:encoded><![CDATA[<p>Introduces RoadRunner as a Go-based PHP app server, covering worker loops, middleware, HTTP/2, and benchmarks vs php-fpm.</p><p><a href="https://andrej.prus.dev/blog/php-microservices-with-roadrunner-high-performance-worker-pattern-explained">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Reproduce a Bug Reliably: The Most Underrated Debugging Skill</title>
            <link>https://andrej.prus.dev/blog/how-reproduce-bug-reliably-most-underrated-debugging-skill</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-reproduce-bug-reliably-most-underrated-debugging-skill</guid>
            <pubDate>Thu, 03 Nov 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Reproduction</category>
            <category>Testing</category>
            <category>Incident Response</category>
            <description>Argues that reliable reproduction is 80% of the solution, covering environment snapshots, seed data, request replay, and minimising the reproduction case.</description>
            <content:encoded><![CDATA[<p>Argues that reliable reproduction is 80% of the solution, covering environment snapshots, seed data, request replay, and minimising the reproduction case.</p><p><a href="https://andrej.prus.dev/blog/how-reproduce-bug-reliably-most-underrated-debugging-skill">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Laravel Effect: How One Framework Made PHP Developers Think in Elegant Patterns</title>
            <link>https://andrej.prus.dev/blog/the-laravel-effect-how-one-framework-made-php-developers-think-in-elegant-patterns</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-laravel-effect-how-one-framework-made-php-developers-think-in-elegant-patterns</guid>
            <pubDate>Sat, 29 Oct 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Laravel</category>
            <category>PHP</category>
            <category>Eloquent</category>
            <category>Developer Experience</category>
            <category>Frameworks</category>
            <description>Documents how Laravel introduced expressive APIs, Eloquent ORM, and a developer-experience philosophy that fundamentally raised expectations across the entire PHP ecosystem.</description>
            <content:encoded><![CDATA[<p>Documents how Laravel introduced expressive APIs, Eloquent ORM, and a developer-experience philosophy that fundamentally raised expectations across the entire PHP ecosystem.</p><p><a href="https://andrej.prus.dev/blog/the-laravel-effect-how-one-framework-made-php-developers-think-in-elegant-patterns">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building Multi-Tenant SaaS Apps in Laravel: Architecture &amp; Tenancy Strategies</title>
            <link>https://andrej.prus.dev/blog/building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies</guid>
            <pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>SaaS</category>
            <category>Multi Tenancy</category>
            <category>Architecture</category>
            <category>Database</category>
            <description>Compares single-database, multi-database, and schema-based tenancy with practical code for middleware, scoping, and data isolation.</description>
            <content:encoded><![CDATA[<p>Compares single-database, multi-database, and schema-based tenancy with practical code for middleware, scoping, and data isolation.</p><p><a href="https://andrej.prus.dev/blog/building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Maintain an Open Source Project Without It Consuming Your Life</title>
            <link>https://andrej.prus.dev/blog/how-to-maintain-an-open-source-project-without-it-consuming-your-life</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-maintain-an-open-source-project-without-it-consuming-your-life</guid>
            <pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Maintainers</category>
            <category>Triage</category>
            <category>Automation</category>
            <category>Sustainability</category>
            <description>Practical boundaries and systems for maintainers - issue triage templates, bot automation, co-maintainer onboarding, and how to say no without guilt.</description>
            <content:encoded><![CDATA[<p>Practical boundaries and systems for maintainers - issue triage templates, bot automation, co-maintainer onboarding, and how to say no without guilt.</p><p><a href="https://andrej.prus.dev/blog/how-to-maintain-an-open-source-project-without-it-consuming-your-life">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring PostgreSQL on Linux: Authentication, Tuning &amp; Replication</title>
            <link>https://andrej.prus.dev/blog/configuring-postgresql-linux-authentication-tuning-replication</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-postgresql-linux-authentication-tuning-replication</guid>
            <pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>Linux</category>
            <category>PostgreSQL</category>
            <category>Replication</category>
            <category>Tuning</category>
            <category>Monitoring</category>
            <description>Covers pg_hba.conf authentication methods, postgresql.conf memory and connection tuning, WAL-based streaming replication, and pg_stat monitoring.</description>
            <content:encoded><![CDATA[<p>Covers pg_hba.conf authentication methods, postgresql.conf memory and connection tuning, WAL-based streaming replication, and pg_stat monitoring.</p><p><a href="https://andrej.prus.dev/blog/configuring-postgresql-linux-authentication-tuning-replication">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Resource Limits: ulimit, cgroups v2 &amp; Systemd Slice Configuration</title>
            <link>https://andrej.prus.dev/blog/linux-resource-limits-ulimit-cgroups-v2-systemd-slice-configuration</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-resource-limits-ulimit-cgroups-v2-systemd-slice-configuration</guid>
            <pubDate>Thu, 22 Sep 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>systemd</category>
            <category>cgroups</category>
            <category>PAM</category>
            <category>Performance</category>
            <description>Sets per-user and per-process limits with ulimit and /etc/security/limits.conf, then manages resources with cgroups v2 and systemd slices.</description>
            <content:encoded><![CDATA[<p>Sets per-user and per-process limits with ulimit and /etc/security/limits.conf, then manages resources with cgroups v2 and systemd slices.</p><p><a href="https://andrej.prus.dev/blog/linux-resource-limits-ulimit-cgroups-v2-systemd-slice-configuration">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Memory Leaks and Infinite Loops: Debugging the Bugs That Hide in Plain Sight</title>
            <link>https://andrej.prus.dev/blog/memory-leaks-infinite-loops-debugging-bugs-hide-plain-sight</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/memory-leaks-infinite-loops-debugging-bugs-hide-plain-sight</guid>
            <pubDate>Thu, 15 Sep 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Memory Leaks</category>
            <category>Profiling</category>
            <category>Reliability</category>
            <description>Methodical approach to diagnosing memory leaks and infinite loops - profiler usage, heap snapshots, watchdog timers, and systematic reproduction steps.</description>
            <content:encoded><![CDATA[<p>Methodical approach to diagnosing memory leaks and infinite loops - profiler usage, heap snapshots, watchdog timers, and systematic reproduction steps.</p><p><a href="https://andrej.prus.dev/blog/memory-leaks-infinite-loops-debugging-bugs-hide-plain-sight">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Art of Knowing What to Delete: Elegance Through Subtraction</title>
            <link>https://andrej.prus.dev/blog/art-knowing-what-delete-elegance-through-subtraction</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/art-knowing-what-delete-elegance-through-subtraction</guid>
            <pubDate>Tue, 13 Sep 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Refactoring</category>
            <category>Simplicity</category>
            <category>Dead Code</category>
            <category>Code Quality</category>
            <description>Shows how the most impactful refactors remove code rather than add it - dead branches, redundant layers, and abstractions that outlived their purpose.</description>
            <content:encoded><![CDATA[<p>Shows how the most impactful refactors remove code rather than add it - dead branches, redundant layers, and abstractions that outlived their purpose.</p><p><a href="https://andrej.prus.dev/blog/art-knowing-what-delete-elegance-through-subtraction">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Working With PHP Attributes: Replace Annotations With Native Metadata</title>
            <link>https://andrej.prus.dev/blog/working-with-php-attributes-replace-annotations-native-metadata</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/working-with-php-attributes-replace-annotations-native-metadata</guid>
            <pubDate>Mon, 12 Sep 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Attributes</category>
            <category>PHP 8</category>
            <category>Symfony</category>
            <category>Doctrine</category>
            <description>Shows how to write, read, and validate PHP 8 Attributes, and how frameworks like Symfony and Doctrine are adopting them internally.</description>
            <content:encoded><![CDATA[<p>Shows how to write, read, and validate PHP 8 Attributes, and how frameworks like Symfony and Doctrine are adopting them internally.</p><p><a href="https://andrej.prus.dev/blog/working-with-php-attributes-replace-annotations-native-metadata">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Open Source Governance Models: BDFL, Committees &amp; Foundation-Led Projects</title>
            <link>https://andrej.prus.dev/blog/open-source-governance-models-bdfl-committees-foundation-led-projects</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/open-source-governance-models-bdfl-committees-foundation-led-projects</guid>
            <pubDate>Wed, 24 Aug 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Governance</category>
            <category>Maintainers</category>
            <category>Foundations</category>
            <category>Software Culture</category>
            <description>Compares how major projects make decisions - from Linus Torvalds&apos; Linux model to Python&apos;s steering council and Apache Foundation&apos;s committee structure.</description>
            <content:encoded><![CDATA[<p>Compares how major projects make decisions - from Linus Torvalds&#039; Linux model to Python&#039;s steering council and Apache Foundation&#039;s committee structure.</p><p><a href="https://andrej.prus.dev/blog/open-source-governance-models-bdfl-committees-foundation-led-projects">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Rust Changes the Way You Think About Memory Forever</title>
            <link>https://andrej.prus.dev/blog/how-rust-changes-the-way-you-think-about-memory-forever</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-rust-changes-the-way-you-think-about-memory-forever</guid>
            <pubDate>Wed, 17 Aug 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Rust</category>
            <category>Ownership</category>
            <category>Borrowing</category>
            <category>Lifetimes</category>
            <category>Memory Safety</category>
            <description>Explores how Rust&apos;s ownership model does not just prevent bugs - it instils a permanent mental model of memory lifetimes that improves how developers reason in every language they return to.</description>
            <content:encoded><![CDATA[<p>Explores how Rust&#039;s ownership model does not just prevent bugs - it instils a permanent mental model of memory lifetimes that improves how developers reason in every language they return to.</p><p><a href="https://andrej.prus.dev/blog/how-rust-changes-the-way-you-think-about-memory-forever">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Setting Up a Linux DNS Server With BIND9: Zones, Records &amp; DNSSEC</title>
            <link>https://andrej.prus.dev/blog/setting-up-linux-dns-server-bind9-zones-records-dnssec</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/setting-up-linux-dns-server-bind9-zones-records-dnssec</guid>
            <pubDate>Wed, 10 Aug 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>BIND9</category>
            <category>DNS</category>
            <category>DNSSEC</category>
            <category>Ubuntu</category>
            <description>Configures BIND9 authoritative and recursive resolvers, writes forward and reverse zone files, enables DNSSEC signing, and tests with dig.</description>
            <content:encoded><![CDATA[<p>Configures BIND9 authoritative and recursive resolvers, writes forward and reverse zone files, enables DNSSEC signing, and tests with dig.</p><p><a href="https://andrej.prus.dev/blog/setting-up-linux-dns-server-bind9-zones-records-dnssec">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Static Analysis With PHPStan &amp; Psalm: Catch Bugs Before Runtime</title>
            <link>https://andrej.prus.dev/blog/php-static-analysis-with-phpstan-psalm-catch-bugs-before-runtime</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-static-analysis-with-phpstan-psalm-catch-bugs-before-runtime</guid>
            <pubDate>Mon, 01 Aug 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>PHP</category>
            <category>PHPStan</category>
            <category>Psalm</category>
            <category>Static Analysis</category>
            <description>Compares PHPStan and Psalm, covers level configuration, baseline management, custom rules, and CI integration for zero-defect deploys.</description>
            <content:encoded><![CDATA[<p>Compares PHPStan and Psalm, covers level configuration, baseline management, custom rules, and CI integration for zero-defect deploys.</p><p><a href="https://andrej.prus.dev/blog/php-static-analysis-with-phpstan-psalm-catch-bugs-before-runtime">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Container Networking: Bridges, veth Pairs &amp; iptables Deep Dive</title>
            <link>https://andrej.prus.dev/blog/linux-container-networking-bridges-veth-pairs-iptables-deep-dive</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-container-networking-bridges-veth-pairs-iptables-deep-dive</guid>
            <pubDate>Thu, 28 Jul 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>Containers</category>
            <category>Docker</category>
            <category>LXC</category>
            <category>iptables</category>
            <description>Explains how Docker and LXC use Linux bridges, veth pairs, network namespaces, and iptables NAT rules for container connectivity.</description>
            <content:encoded><![CDATA[<p>Explains how Docker and LXC use Linux bridges, veth pairs, network namespaces, and iptables NAT rules for container connectivity.</p><p><a href="https://andrej.prus.dev/blog/linux-container-networking-bridges-veth-pairs-iptables-deep-dive">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Role of Logging in Debugging: What to Log, What to Skip &amp; How to Search It</title>
            <link>https://andrej.prus.dev/blog/role-logging-debugging-what-log-skip-how-search-it</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/role-logging-debugging-what-log-skip-how-search-it</guid>
            <pubDate>Wed, 27 Jul 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Logging</category>
            <category>Observability</category>
            <category>Tooling</category>
            <description>Designs a logging strategy that makes future debugging fast - structured log fields, correlation IDs, appropriate log levels, and querying with grep and jq.</description>
            <content:encoded><![CDATA[<p>Designs a logging strategy that makes future debugging fast - structured log fields, correlation IDs, appropriate log levels, and querying with grep and jq.</p><p><a href="https://andrej.prus.dev/blog/role-logging-debugging-what-log-skip-how-search-it">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Integrating Stripe Payments in Laravel: Subscriptions &amp; Webhooks Guide</title>
            <link>https://andrej.prus.dev/blog/integrating-stripe-payments-laravel-subscriptions-webhooks-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/integrating-stripe-payments-laravel-subscriptions-webhooks-guide</guid>
            <pubDate>Tue, 19 Jul 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Stripe</category>
            <category>Payments</category>
            <category>Subscriptions</category>
            <category>Webhooks</category>
            <description>Step-by-step Stripe Checkout integration covering recurring billing, webhook verification, idempotency, and failed-payment handling.</description>
            <content:encoded><![CDATA[<p>Step-by-step Stripe Checkout integration covering recurring billing, webhook verification, idempotency, and failed-payment handling.</p><p><a href="https://andrej.prus.dev/blog/integrating-stripe-payments-laravel-subscriptions-webhooks-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Naming Things Well: The Single Biggest Step Toward Elegant Code</title>
            <link>https://andrej.prus.dev/blog/naming-things-well-single-biggest-step-toward-elegant-code</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/naming-things-well-single-biggest-step-toward-elegant-code</guid>
            <pubDate>Tue, 05 Jul 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Naming</category>
            <category>Refactoring</category>
            <category>Readability</category>
            <description>Argues that precise, honest naming is the foundation of simplicity - covering variables, functions, classes, and the discipline of renaming when meaning shifts.</description>
            <content:encoded><![CDATA[<p>Argues that precise, honest naming is the foundation of simplicity - covering variables, functions, classes, and the discipline of renaming when meaning shifts.</p><p><a href="https://andrej.prus.dev/blog/naming-things-well-single-biggest-step-toward-elegant-code">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring Redis on Linux: Persistence, Memory Limits &amp; Replication</title>
            <link>https://andrej.prus.dev/blog/configuring-redis-linux-persistence-memory-limits-replication</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-redis-linux-persistence-memory-limits-replication</guid>
            <pubDate>Wed, 15 Jun 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>Redis</category>
            <category>Linux</category>
            <category>Persistence</category>
            <category>Replication</category>
            <category>Operations</category>
            <description>Tunes redis.conf for production: RDB and AOF persistence, maxmemory policies, bind address, password auth, and primary-replica replication.</description>
            <content:encoded><![CDATA[<p>Tunes redis.conf for production: RDB and AOF persistence, maxmemory policies, bind address, password auth, and primary-replica replication.</p><p><a href="https://andrej.prus.dev/blog/configuring-redis-linux-persistence-memory-limits-replication">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Art of Writing a Good Pull Request: What Open Source Maintainers Actually Want</title>
            <link>https://andrej.prus.dev/blog/the-art-of-writing-a-good-pull-request-what-open-source-maintainers-actually-want</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-art-of-writing-a-good-pull-request-what-open-source-maintainers-actually-want</guid>
            <pubDate>Wed, 15 Jun 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Pull Requests</category>
            <category>Code Review</category>
            <category>Maintainers</category>
            <category>Collaboration</category>
            <description>Covers what separates accepted PRs from rejected ones - focused scope, clear description, linked issues, passing tests, and respectful engagement with feedback.</description>
            <content:encoded><![CDATA[<p>Covers what separates accepted PRs from rejected ones - focused scope, clear description, linked issues, passing tests, and respectful engagement with feedback.</p><p><a href="https://andrej.prus.dev/blog/the-art-of-writing-a-good-pull-request-what-open-source-maintainers-actually-want">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Go Language Philosophy: How Simplicity and Constraints Produce Better Engineers</title>
            <link>https://andrej.prus.dev/blog/the-go-language-philosophy-how-simplicity-and-constraints-produce-better-engineers</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-go-language-philosophy-how-simplicity-and-constraints-produce-better-engineers</guid>
            <pubDate>Sat, 04 Jun 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Go</category>
            <category>Simplicity</category>
            <category>Software Engineering</category>
            <category>Generics</category>
            <category>Interfaces</category>
            <description>Examines how Go&apos;s deliberate omissions - no generics for years, no inheritance, minimal syntax - force developers to solve problems differently and value clarity over cleverness.</description>
            <content:encoded><![CDATA[<p>Examines how Go&#039;s deliberate omissions - no generics for years, no inheritance, minimal syntax - force developers to solve problems differently and value clarity over cleverness.</p><p><a href="https://andrej.prus.dev/blog/the-go-language-philosophy-how-simplicity-and-constraints-produce-better-engineers">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Event-Driven Architecture in PHP: Events, Listeners &amp; Message Buses</title>
            <link>https://andrej.prus.dev/blog/event-driven-architecture-php-events-listeners-message-buses</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/event-driven-architecture-php-events-listeners-message-buses</guid>
            <pubDate>Fri, 03 Jun 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Events</category>
            <category>RabbitMQ</category>
            <category>Symfony Messenger</category>
            <description>Implements a simple in-process event bus in PHP, then scales to RabbitMQ and Symfony Messenger for distributed event processing.</description>
            <content:encoded><![CDATA[<p>Implements a simple in-process event bus in PHP, then scales to RabbitMQ and Symfony Messenger for distributed event processing.</p><p><a href="https://andrej.prus.dev/blog/event-driven-architecture-php-events-listeners-message-buses">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Disk Encryption With LUKS: Full-Disk &amp; Container Encryption</title>
            <link>https://andrej.prus.dev/blog/linux-disk-encryption-luks-full-disk-container-encryption</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-disk-encryption-luks-full-disk-container-encryption</guid>
            <pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>LUKS</category>
            <category>cryptsetup</category>
            <category>systemd</category>
            <category>TPM2</category>
            <description>Encrypts partitions and loop devices with LUKS2, manages key slots, sets up auto-unlock with TPM2, and configures /etc/crypttab.</description>
            <content:encoded><![CDATA[<p>Encrypts partitions and loop devices with LUKS2, manages key slots, sets up auto-unlock with TPM2, and configures /etc/crypttab.</p><p><a href="https://andrej.prus.dev/blog/linux-disk-encryption-luks-full-disk-container-encryption">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Database Migrations Best Practices in Laravel: Rollbacks, Seeds &amp; Factories</title>
            <link>https://andrej.prus.dev/blog/database-migrations-best-practices-laravel-rollbacks-seeds-factories</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/database-migrations-best-practices-laravel-rollbacks-seeds-factories</guid>
            <pubDate>Wed, 11 May 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>Laravel</category>
            <category>Migrations</category>
            <category>Seeds</category>
            <category>Factories</category>
            <description>Covers atomic migrations, safe schema changes in production, Eloquent factories for realistic test data, and migration-only deployments.</description>
            <content:encoded><![CDATA[<p>Covers atomic migrations, safe schema changes in production, Eloquent factories for realistic test data, and migration-only deployments.</p><p><a href="https://andrej.prus.dev/blog/database-migrations-best-practices-laravel-rollbacks-seeds-factories">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Debugging in Production: Safe Techniques for Live Systems Without Downtime</title>
            <link>https://andrej.prus.dev/blog/debugging-production-safe-techniques-live-systems-without-downtime</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-production-safe-techniques-live-systems-without-downtime</guid>
            <pubDate>Wed, 11 May 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Production</category>
            <category>Observability</category>
            <category>Reliability</category>
            <description>Covers non-destructive production debugging - distributed tracing, feature flags, canary analysis, and live log tailing without touching running processes.</description>
            <content:encoded><![CDATA[<p>Covers non-destructive production debugging - distributed tracing, feature flags, canary analysis, and live log tailing without touching running processes.</p><p><a href="https://andrej.prus.dev/blog/debugging-production-safe-techniques-live-systems-without-downtime">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>What Beautiful Code Actually Looks Like: Real Examples Across Languages</title>
            <link>https://andrej.prus.dev/blog/what-beautiful-code-actually-looks-like-real-examples-across-languages</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/what-beautiful-code-actually-looks-like-real-examples-across-languages</guid>
            <pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Open Source</category>
            <category>Readability</category>
            <category>Refactoring</category>
            <description>Curates genuinely elegant code snippets from open-source projects, analysing what makes each example immediately readable and intention-revealing.</description>
            <content:encoded><![CDATA[<p>Curates genuinely elegant code snippets from open-source projects, analysing what makes each example immediately readable and intention-revealing.</p><p><a href="https://andrej.prus.dev/blog/what-beautiful-code-actually-looks-like-real-examples-across-languages">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Performance Tuning: OPcache, JIT Compiler &amp; Profiling With Blackfire</title>
            <link>https://andrej.prus.dev/blog/php-performance-tuning-opcache-jit-compiler-profiling-with-blackfire</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-performance-tuning-opcache-jit-compiler-profiling-with-blackfire</guid>
            <pubDate>Fri, 22 Apr 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>OPcache</category>
            <category>JIT</category>
            <category>Blackfire</category>
            <description>Shows how to enable and tune OPcache and JIT, use Blackfire.io to pinpoint bottlenecks, and reduce response times by up to 60%.</description>
            <content:encoded><![CDATA[<p>Shows how to enable and tune OPcache and JIT, use Blackfire.io to pinpoint bottlenecks, and reduce response times by up to 60%.</p><p><a href="https://andrej.prus.dev/blog/php-performance-tuning-opcache-jit-compiler-profiling-with-blackfire">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Configure SELinux: Policies, Contexts &amp; Troubleshooting Denials</title>
            <link>https://andrej.prus.dev/blog/how-configure-selinux-policies-contexts-troubleshooting-denials</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-configure-selinux-policies-contexts-troubleshooting-denials</guid>
            <pubDate>Tue, 19 Apr 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>SELinux</category>
            <category>RHEL</category>
            <category>Fedora</category>
            <category>Policy</category>
            <description>Covers enforcing vs permissive modes, reading audit2allow output, writing custom type enforcement modules, and labeling files correctly.</description>
            <content:encoded><![CDATA[<p>Covers enforcing vs permissive modes, reading audit2allow output, writing custom type enforcement modules, and labeling files correctly.</p><p><a href="https://andrej.prus.dev/blog/how-configure-selinux-policies-contexts-troubleshooting-denials">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a Welcoming Open Source Community: Code of Conduct, Docs &amp; Onboarding</title>
            <link>https://andrej.prus.dev/blog/building-a-welcoming-open-source-community-code-of-conduct-docs-onboarding</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-a-welcoming-open-source-community-code-of-conduct-docs-onboarding</guid>
            <pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Community</category>
            <category>Maintainers</category>
            <category>Documentation</category>
            <category>Onboarding</category>
            <description>Practical guide for maintainers to reduce contribution friction - writing good CONTRIBUTING files, labelling beginner issues, and creating a culture of constructive review.</description>
            <content:encoded><![CDATA[<p>Practical guide for maintainers to reduce contribution friction - writing good CONTRIBUTING files, labelling beginner issues, and creating a culture of constructive review.</p><p><a href="https://andrej.prus.dev/blog/building-a-welcoming-open-source-community-code-of-conduct-docs-onboarding">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Heisenbug, Schrodinger Bug &amp; Other Phantom Failures: Debugging the Unpredictable</title>
            <link>https://andrej.prus.dev/blog/heisenbug-schrodinger-bug-other-phantom-failures-debugging-unpredictable</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/heisenbug-schrodinger-bug-other-phantom-failures-debugging-unpredictable</guid>
            <pubDate>Tue, 22 Mar 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Flaky Tests</category>
            <category>Race Conditions</category>
            <category>Observability</category>
            <description>Catalogs bugs that vanish under observation, change behavior with logging, or only appear in production - and the techniques to corner each type.</description>
            <content:encoded><![CDATA[<p>Catalogs bugs that vanish under observation, change behavior with logging, or only appear in production - and the techniques to corner each type.</p><p><a href="https://andrej.prus.dev/blog/heisenbug-schrodinger-bug-other-phantom-failures-debugging-unpredictable">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Python&apos;s Rise to Dominance: How Readability as a Value Reshaped a Generation of Programmers</title>
            <link>https://andrej.prus.dev/blog/pythons-rise-to-dominance-how-readability-as-a-value-reshaped-a-generation-of-programmers</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/pythons-rise-to-dominance-how-readability-as-a-value-reshaped-a-generation-of-programmers</guid>
            <pubDate>Sat, 19 Mar 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Python</category>
            <category>Readability</category>
            <category>Programming Languages</category>
            <category>Data Science</category>
            <category>Education</category>
            <category>AI</category>
            <description>Traces Python&apos;s journey from scripting utility to the language of science, AI, and education - and how its radical readability ethic influenced language design far beyond its own community.</description>
            <content:encoded><![CDATA[<p>Traces Python&#039;s journey from scripting utility to the language of science, AI, and education - and how its radical readability ethic influenced language design far beyond its own community.</p><p><a href="https://andrej.prus.dev/blog/pythons-rise-to-dominance-how-readability-as-a-value-reshaped-a-generation-of-programmers">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Secure PHP Applications: HTTPS, CSP Headers &amp; Input Validation</title>
            <link>https://andrej.prus.dev/blog/how-to-secure-php-applications-https-csp-headers-input-validation</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-secure-php-applications-https-csp-headers-input-validation</guid>
            <pubDate>Tue, 15 Mar 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>HTTPS</category>
            <category>CSP</category>
            <category>Input Validation</category>
            <description>Practical implementation guide covering TLS enforcement, Content Security Policy headers, and robust server-side input sanitization.</description>
            <content:encoded><![CDATA[<p>Practical implementation guide covering TLS enforcement, Content Security Policy headers, and robust server-side input sanitization.</p><p><a href="https://andrej.prus.dev/blog/how-to-secure-php-applications-https-csp-headers-input-validation">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Time Synchronization: Configuring NTP and chrony Correctly</title>
            <link>https://andrej.prus.dev/blog/linux-time-synchronization-configuring-ntp-chrony-correctly</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-time-synchronization-configuring-ntp-chrony-correctly</guid>
            <pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>chrony</category>
            <category>NTP</category>
            <category>Time Synchronization</category>
            <category>Ubuntu</category>
            <description>Sets up chrony as an NTP client and server, configures stratum hierarchy, verifies sync status, and handles leap second adjustments.</description>
            <content:encoded><![CDATA[<p>Sets up chrony as an NTP client and server, configures stratum hierarchy, verifies sync status, and handles leap second adjustments.</p><p><a href="https://andrej.prus.dev/blog/linux-time-synchronization-configuring-ntp-chrony-correctly">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a GraphQL API in PHP With Webonyx: A Complete Tutorial</title>
            <link>https://andrej.prus.dev/blog/building-graphql-api-php-webonyx-complete-tutorial</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-graphql-api-php-webonyx-complete-tutorial</guid>
            <pubDate>Mon, 28 Feb 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>GraphQL</category>
            <category>Webonyx</category>
            <category>Laravel</category>
            <description>Full guide to defining schemas, resolvers, mutations, and subscriptions using the webonyx/graphql-php library with Laravel integration.</description>
            <content:encoded><![CDATA[<p>Full guide to defining schemas, resolvers, mutations, and subscriptions using the webonyx/graphql-php library with Laravel integration.</p><p><a href="https://andrej.prus.dev/blog/building-graphql-api-php-webonyx-complete-tutorial">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Setting Up HAProxy on Linux: Load Balancing, Health Checks &amp; SSL</title>
            <link>https://andrej.prus.dev/blog/setting-up-haproxy-linux-load-balancing-health-checks-ssl</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/setting-up-haproxy-linux-load-balancing-health-checks-ssl</guid>
            <pubDate>Thu, 24 Feb 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>HAProxy</category>
            <category>Load Balancing</category>
            <category>TLS</category>
            <category>Health Checks</category>
            <description>Configures HAProxy frontend/backend blocks, round-robin and least-connections balancing, active health checks, and SSL termination.</description>
            <content:encoded><![CDATA[<p>Configures HAProxy frontend/backend blocks, round-robin and least-connections balancing, active health checks, and SSL termination.</p><p><a href="https://andrej.prus.dev/blog/setting-up-haproxy-linux-load-balancing-health-checks-ssl">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Psychology of Complexity: Why Developers Default to Over-Engineering</title>
            <link>https://andrej.prus.dev/blog/psychology-complexity-developers-default-over-engineering</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/psychology-complexity-developers-default-over-engineering</guid>
            <pubDate>Fri, 11 Feb 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Complexity</category>
            <category>Over-Engineering</category>
            <category>Clean Code</category>
            <category>Refactoring</category>
            <description>Examines the cognitive biases - fear of future requirements, desire to appear clever - that push developers toward needless complexity.</description>
            <content:encoded><![CDATA[<p>Examines the cognitive biases - fear of future requirements, desire to appear clever - that push developers toward needless complexity.</p><p><a href="https://andrej.prus.dev/blog/psychology-complexity-developers-default-over-engineering">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Binary Search Debugging: The Fastest Way to Isolate Any Bug in Any Codebase</title>
            <link>https://andrej.prus.dev/blog/binary-search-debugging-fastest-way-isolate-any-bug-any-codebase</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/binary-search-debugging-fastest-way-isolate-any-bug-any-codebase</guid>
            <pubDate>Sun, 30 Jan 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Testing</category>
            <category>Git</category>
            <category>Root Cause Analysis</category>
            <description>Applies binary search thinking to bug isolation - systematically halving the problem space with targeted experiments to converge on the root cause fast.</description>
            <content:encoded><![CDATA[<p>Applies binary search thinking to bug isolation - systematically halving the problem space with targeted experiments to converge on the root cause fast.</p><p><a href="https://andrej.prus.dev/blog/binary-search-debugging-fastest-way-isolate-any-bug-any-codebase">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Companies Exploit Open Source and What the Community Is Doing About It</title>
            <link>https://andrej.prus.dev/blog/how-companies-exploit-open-source-and-what-the-community-is-doing-about-it</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-companies-exploit-open-source-and-what-the-community-is-doing-about-it</guid>
            <pubDate>Wed, 19 Jan 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Licensing</category>
            <category>Sustainability</category>
            <category>Governance</category>
            <category>Source Available</category>
            <description>Examines the tension between commercial adoption and community contribution, covering license changes like SSPL, the Commons Clause, and fair-code experiments.</description>
            <content:encoded><![CDATA[<p>Examines the tension between commercial adoption and community contribution, covering license changes like SSPL, the Commons Clause, and fair-code experiments.</p><p><a href="https://andrej.prus.dev/blog/how-companies-exploit-open-source-and-what-the-community-is-doing-about-it">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.2 Released: Readonly Classes, DNF Types &amp; Deprecations Explained</title>
            <link>https://andrej.prus.dev/blog/php-82-released-readonly-classes-dnf-types-deprecations-explained</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-82-released-readonly-classes-dnf-types-deprecations-explained</guid>
            <pubDate>Wed, 19 Jan 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.2</category>
            <category>Type System</category>
            <category>Migration</category>
            <description>First look at PHP 8.2 features — readonly classes, Disjunctive Normal Form types, new ini options, and upcoming deprecation clean-ups.</description>
            <content:encoded><![CDATA[<p>First look at PHP 8.2 features — readonly classes, Disjunctive Normal Form types, new ini options, and upcoming deprecation clean-ups.</p><p><a href="https://andrej.prus.dev/blog/php-82-released-readonly-classes-dnf-types-deprecations-explained">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Backup Strategies: rsync, Restic &amp; Automated Snapshot Rotation</title>
            <link>https://andrej.prus.dev/blog/linux-backup-strategies-rsync-restic-automated-snapshot-rotation</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-backup-strategies-rsync-restic-automated-snapshot-rotation</guid>
            <pubDate>Thu, 13 Jan 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Storage</category>
            <category>Linux</category>
            <category>Backup</category>
            <category>rsync</category>
            <category>Restic</category>
            <category>Automation</category>
            <description>Compares rsync incremental backups and Restic deduplicated snapshots, covering remote targets, encryption, retention policies, and restore testing.</description>
            <content:encoded><![CDATA[<p>Compares rsync incremental backups and Restic deduplicated snapshots, covering remote targets, encryption, retention policies, and restore testing.</p><p><a href="https://andrej.prus.dev/blog/linux-backup-strategies-rsync-restic-automated-snapshot-rotation">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How TypeScript Changed the Way JavaScript Developers Think About Correctness</title>
            <link>https://andrej.prus.dev/blog/how-typescript-changed-the-way-javascript-developers-think-about-correctness</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-typescript-changed-the-way-javascript-developers-think-about-correctness</guid>
            <pubDate>Thu, 06 Jan 2022 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>TypeScript</category>
            <category>JavaScript</category>
            <category>Type Systems</category>
            <category>API Design</category>
            <category>Static Analysis</category>
            <category>Correctness</category>
            <description>Explores TypeScript&apos;s cognitive impact - how adding a type layer shifts mental models from runtime debugging to compile-time reasoning and changes how APIs are designed and consumed.</description>
            <content:encoded><![CDATA[<p>Explores TypeScript&#039;s cognitive impact - how adding a type layer shifts mental models from runtime debugging to compile-time reasoning and changes how APIs are designed and consumed.</p><p><a href="https://andrej.prus.dev/blog/how-typescript-changed-the-way-javascript-developers-think-about-correctness">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Refactoring Toward Elegance: How to Simplify Code Without Breaking It</title>
            <link>https://andrej.prus.dev/blog/refactoring-toward-elegance-simplify-code-without-breaking-it</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/refactoring-toward-elegance-simplify-code-without-breaking-it</guid>
            <pubDate>Wed, 22 Dec 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Refactoring</category>
            <category>Testing</category>
            <category>Code Quality</category>
            <description>Step-by-step refactoring guide - extracting intent into named functions, collapsing conditionals, and eliminating redundant state one change at a time.</description>
            <content:encoded><![CDATA[<p>Step-by-step refactoring guide - extracting intent into named functions, collapsing conditionals, and eliminating redundant state one change at a time.</p><p><a href="https://andrej.prus.dev/blog/refactoring-toward-elegance-simplify-code-without-breaking-it">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring AppArmor on Ubuntu: Profiles, Modes &amp; Custom Policies</title>
            <link>https://andrej.prus.dev/blog/configuring-apparmor-ubuntu-profiles-modes-custom-policies</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-apparmor-ubuntu-profiles-modes-custom-policies</guid>
            <pubDate>Tue, 21 Dec 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>AppArmor</category>
            <category>Ubuntu</category>
            <category>Policy</category>
            <category>Hardening</category>
            <description>Covers AppArmor enforce vs complain modes, reading audit logs, generating profiles with aa-genprof, and writing custom policy rules.</description>
            <content:encoded><![CDATA[<p>Covers AppArmor enforce vs complain modes, reading audit logs, generating profiles with aa-genprof, and writing custom policy rules.</p><p><a href="https://andrej.prus.dev/blog/configuring-apparmor-ubuntu-profiles-modes-custom-policies">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Caching Strategies in PHP: Redis, Memcached &amp; HTTP Cache Headers</title>
            <link>https://andrej.prus.dev/blog/caching-strategies-php-redis-memcached-http-cache-headers</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/caching-strategies-php-redis-memcached-http-cache-headers</guid>
            <pubDate>Wed, 08 Dec 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>PHP</category>
            <category>Redis</category>
            <category>Memcached</category>
            <category>HTTP Cache</category>
            <description>Covers key-value caching, cache-aside pattern, cache invalidation, and HTTP cache headers to reduce server load significantly.</description>
            <content:encoded><![CDATA[<p>Covers key-value caching, cache-aside pattern, cache invalidation, and HTTP cache headers to reduce server load significantly.</p><p><a href="https://andrej.prus.dev/blog/caching-strategies-php-redis-memcached-http-cache-headers">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Designing a Clean PHP Architecture: Hexagonal, Onion &amp; Clean Code</title>
            <link>https://andrej.prus.dev/blog/designing-clean-php-architecture-hexagonal-onion-clean-code</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/designing-clean-php-architecture-hexagonal-onion-clean-code</guid>
            <pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Clean Architecture</category>
            <category>Hexagonal Architecture</category>
            <category>Onion Architecture</category>
            <description>Contrasts architectural patterns, shows PHP project layouts for each, and explains the dependency rule and port/adapter separation.</description>
            <content:encoded><![CDATA[<p>Contrasts architectural patterns, shows PHP project layouts for each, and explains the dependency rule and port/adapter separation.</p><p><a href="https://andrej.prus.dev/blog/designing-clean-php-architecture-hexagonal-onion-clean-code">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Who Owns Open Source Code? Licenses, Copyright &amp; Contributor Agreements Explained</title>
            <link>https://andrej.prus.dev/blog/who-owns-open-source-code-licenses-copyright-contributor-agreements-explained</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/who-owns-open-source-code-licenses-copyright-contributor-agreements-explained</guid>
            <pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Licensing</category>
            <category>Copyright</category>
            <category>Contributor Agreements</category>
            <category>Compliance</category>
            <description>Clarifies the legal landscape - MIT, Apache, GPL, and AGPL licenses, contributor license agreements, and what corporate adoption means for ownership and control.</description>
            <content:encoded><![CDATA[<p>Clarifies the legal landscape - MIT, Apache, GPL, and AGPL licenses, contributor license agreements, and what corporate adoption means for ownership and control.</p><p><a href="https://andrej.prus.dev/blog/who-owns-open-source-code-licenses-copyright-contributor-agreements-explained">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Rubber Duck Debugging and Why Explaining Your Bug Out Loud Actually Works</title>
            <link>https://andrej.prus.dev/blog/rubber-duck-debugging-why-explaining-bug-out-loud-actually-works</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/rubber-duck-debugging-why-explaining-bug-out-loud-actually-works</guid>
            <pubDate>Sun, 14 Nov 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Rubber Duck Debugging</category>
            <category>Problem Solving</category>
            <category>Mental Models</category>
            <description>Explains the cognitive science behind verbalising a problem - how articulation forces precision and surfaces hidden assumptions in your mental model.</description>
            <content:encoded><![CDATA[<p>Explains the cognitive science behind verbalising a problem - how articulation forces precision and surfaces hidden assumptions in your mental model.</p><p><a href="https://andrej.prus.dev/blog/rubber-duck-debugging-why-explaining-bug-out-loud-actually-works">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Bash Shell Configuration: .bashrc, .bash_profile &amp; Environment Variables</title>
            <link>https://andrej.prus.dev/blog/bash-shell-configuration-bashrc-bash-profile-environment-variables</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/bash-shell-configuration-bashrc-bash-profile-environment-variables</guid>
            <pubDate>Tue, 09 Nov 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>Bash</category>
            <category>Shell</category>
            <category>Terminal</category>
            <category>Environment</category>
            <description>Explains login vs non-login shells, customizing PS1 prompts, managing PATH, aliases, functions, and sourcing configs in the right order.</description>
            <content:encoded><![CDATA[<p>Explains login vs non-login shells, customizing PS1 prompts, managing PATH, aliases, functions, and sourcing configs in the right order.</p><p><a href="https://andrej.prus.dev/blog/bash-shell-configuration-bashrc-bash-profile-environment-variables">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Monitoring With Prometheus &amp; Grafana: Full Stack Setup Guide</title>
            <link>https://andrej.prus.dev/blog/linux-monitoring-prometheus-grafana-full-stack-setup-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-monitoring-prometheus-grafana-full-stack-setup-guide</guid>
            <pubDate>Wed, 27 Oct 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Monitoring</category>
            <category>Linux</category>
            <category>Prometheus</category>
            <category>Grafana</category>
            <category>Node Exporter</category>
            <category>Alerting</category>
            <description>Installs Node Exporter and Prometheus, configures scrape intervals, builds Grafana dashboards, and sets up alerting rules.</description>
            <content:encoded><![CDATA[<p>Installs Node Exporter and Prometheus, configures scrape intervals, builds Grafana dashboards, and sets up alerting rules.</p><p><a href="https://andrej.prus.dev/blog/linux-monitoring-prometheus-grafana-full-stack-setup-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Mastering PHP Generators: Memory-Efficient Data Processing at Scale</title>
            <link>https://andrej.prus.dev/blog/mastering-php-generators-memory-efficient-data-processing-scale</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/mastering-php-generators-memory-efficient-data-processing-scale</guid>
            <pubDate>Thu, 14 Oct 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Generators</category>
            <category>Performance</category>
            <category>Memory</category>
            <category>Iterators</category>
            <description>Demonstrates generators as iterators and coroutines, benchmarking memory savings against array-based approaches for large datasets.</description>
            <content:encoded><![CDATA[<p>Demonstrates generators as iterators and coroutines, benchmarking memory savings against array-based approaches for large datasets.</p><p><a href="https://andrej.prus.dev/blog/mastering-php-generators-memory-efficient-data-processing-scale">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-octane-production-checklist/blog-laravel-octane-production-checklist-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Simplicity as a Design Principle: Lessons From Unix, Python &amp; Go</title>
            <link>https://andrej.prus.dev/blog/simplicity-design-principle-lessons-unix-python-go</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/simplicity-design-principle-lessons-unix-python-go</guid>
            <pubDate>Thu, 07 Oct 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Simplicity</category>
            <category>Unix</category>
            <category>Python</category>
            <category>Go</category>
            <category>Software Design</category>
            <description>Draws lessons from languages and systems famously built around simplicity, showing how their constraints produced more maintainable ecosystems.</description>
            <content:encoded><![CDATA[<p>Draws lessons from languages and systems famously built around simplicity, showing how their constraints produced more maintainable ecosystems.</p><p><a href="https://andrej.prus.dev/blog/simplicity-design-principle-lessons-unix-python-go">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Test-Driven Development in PHP: A Practical Workflow for Teams</title>
            <link>https://andrej.prus.dev/blog/test-driven-development-in-php-practical-workflow-for-teams</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/test-driven-development-in-php-practical-workflow-for-teams</guid>
            <pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>PHP</category>
            <category>PHPUnit</category>
            <category>TDD</category>
            <category>CI</category>
            <description>Shows how to embed TDD red-green-refactor cycles into team sprints, configure CI pipelines, and measure coverage regressions.</description>
            <content:encoded><![CDATA[<p>Shows how to embed TDD red-green-refactor cycles into team sprints, configure CI pipelines, and measure coverage regressions.</p><p><a href="https://andrej.prus.dev/blog/test-driven-development-in-php-practical-workflow-for-teams">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-laravel-precognition-real-time-validation-without-full-form-submission/blog-laravel-precognition-real-time-validation-without-full-form-submission-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Configure NFS on Linux: Server Setup, Exports &amp; Client Mounts</title>
            <link>https://andrej.prus.dev/blog/how-configure-nfs-linux-server-setup-exports-client-mounts</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-configure-nfs-linux-server-setup-exports-client-mounts</guid>
            <pubDate>Thu, 16 Sep 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Storage</category>
            <category>Linux</category>
            <category>NFS</category>
            <category>Ubuntu</category>
            <category>Filesystems</category>
            <category>Administration</category>
            <description>Sets up NFS v4 server, configures /etc/exports with security options, mounts shares on clients, and automates with /etc/fstab.</description>
            <content:encoded><![CDATA[<p>Sets up NFS v4 server, configures /etc/exports with security options, mounts shares on clients, and automates with /etc/fstab.</p><p><a href="https://andrej.prus.dev/blog/how-configure-nfs-linux-server-setup-exports-client-mounts">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Maintainer Burnout in Open Source: The Hidden Crisis Nobody Talks About</title>
            <link>https://andrej.prus.dev/blog/maintainer-burnout-in-open-source-the-hidden-crisis-nobody-talks-about</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/maintainer-burnout-in-open-source-the-hidden-crisis-nobody-talks-about</guid>
            <pubDate>Tue, 14 Sep 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Maintainers</category>
            <category>Burnout</category>
            <category>Sustainability</category>
            <category>Community</category>
            <description>Documents the epidemic of maintainer exhaustion - unpaid pressure, hostile issues, and endless support requests - and what communities can do to protect the people who keep projects alive.</description>
            <content:encoded><![CDATA[<p>Documents the epidemic of maintainer exhaustion - unpaid pressure, hostile issues, and endless support requests - and what communities can do to protect the people who keep projects alive.</p><p><a href="https://andrej.prus.dev/blog/maintainer-burnout-in-open-source-the-hidden-crisis-nobody-talks-about">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Frustration Loop: Why Debugging Feels Impossible Before It Suddenly Clicks</title>
            <link>https://andrej.prus.dev/blog/the-frustration-loop-why-debugging-feels-impossible-before-it-suddenly-clicks</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-frustration-loop-why-debugging-feels-impossible-before-it-suddenly-clicks</guid>
            <pubDate>Wed, 08 Sep 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Problem Solving</category>
            <category>Cognitive Load</category>
            <category>Troubleshooting</category>
            <description>Explores the psychological cycle of confusion, tunnel vision, and breakthrough that characterises a difficult debugging session and how to shorten it.</description>
            <content:encoded><![CDATA[<p>Explores the psychological cycle of confusion, tunnel vision, and breakthrough that characterises a difficult debugging session and how to shorten it.</p><p><a href="https://andrej.prus.dev/blog/the-frustration-loop-why-debugging-feels-impossible-before-it-suddenly-clicks">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Cost of Complexity: How Over-Engineered Code Kills Developer Productivity</title>
            <link>https://andrej.prus.dev/blog/cost-complexity-over-engineered-code-kills-developer-productivity</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/cost-complexity-over-engineered-code-kills-developer-productivity</guid>
            <pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Engineering</category>
            <category>Complexity</category>
            <category>Productivity</category>
            <category>Over-Engineering</category>
            <category>Clean Code</category>
            <description>Quantifies the hidden costs of unnecessary abstraction - slower onboarding, harder debugging, and cascading rework caused by premature generalization.</description>
            <content:encoded><![CDATA[<p>Quantifies the hidden costs of unnecessary abstraction - slower onboarding, harder debugging, and cascading rework caused by premature generalization.</p><p><a href="https://andrej.prus.dev/blog/cost-complexity-over-engineered-code-kills-developer-productivity">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel Livewire vs Inertia.js: Choosing the Right Full-Stack Approach</title>
            <link>https://andrej.prus.dev/blog/laravel-livewire-vs-inertia-js-choosing-right-full-stack-approach</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-livewire-vs-inertia-js-choosing-right-full-stack-approach</guid>
            <pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Livewire</category>
            <category>Inertia.js</category>
            <category>Frontend</category>
            <description>Compares both approaches side-by-side with architecture diagrams, performance profiles, and developer experience analysis.</description>
            <content:encoded><![CDATA[<p>Compares both approaches side-by-side with architecture diagrams, performance profiles, and developer experience analysis.</p><p><a href="https://andrej.prus.dev/blog/laravel-livewire-vs-inertia-js-choosing-right-full-stack-approach">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Kernel Tuning With sysctl: Network Stack &amp; Security Hardening</title>
            <link>https://andrej.prus.dev/blog/linux-kernel-tuning-sysctl-network-stack-security-hardening</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-kernel-tuning-sysctl-network-stack-security-hardening</guid>
            <pubDate>Tue, 03 Aug 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>Linux</category>
            <category>sysctl</category>
            <category>Kernel</category>
            <category>Networking</category>
            <category>Security</category>
            <description>Tunes TCP buffer sizes, connection tracking, SYN flood protection, ICMP restrictions, and kernel hardening parameters via sysctl.conf.</description>
            <content:encoded><![CDATA[<p>Tunes TCP buffer sizes, connection tracking, SYN flood protection, ICMP restrictions, and kernel hardening parameters via sysctl.conf.</p><p><a href="https://andrej.prus.dev/blog/linux-kernel-tuning-sysctl-network-stack-security-hardening">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Symfony 6 New Features: What Every PHP Developer Must Know</title>
            <link>https://andrej.prus.dev/blog/symfony-6-new-features-every-php-developer-must-know</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/symfony-6-new-features-every-php-developer-must-know</guid>
            <pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Symfony</category>
            <category>PHP 8</category>
            <category>Attributes</category>
            <category>Mailer</category>
            <description>Comprehensive overview of Symfony 6 highlights including PHP 8 attributes, typed properties, and the mature Mailer/Notifier components.</description>
            <content:encoded><![CDATA[<p>Comprehensive overview of Symfony 6 highlights including PHP 8 attributes, typed properties, and the mature Mailer/Notifier components.</p><p><a href="https://andrej.prus.dev/blog/symfony-6-new-features-every-php-developer-must-know">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-stack/page-stack-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Setting Up Postfix Mail Server on Linux: SMTP, DKIM &amp; SPF Records</title>
            <link>https://andrej.prus.dev/blog/setting-up-postfix-mail-server-linux-smtp-dkim-spf-records</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/setting-up-postfix-mail-server-linux-smtp-dkim-spf-records</guid>
            <pubDate>Sun, 11 Jul 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>Postfix</category>
            <category>SMTP</category>
            <category>DKIM</category>
            <category>SPF</category>
            <category>DMARC</category>
            <description>Full Postfix configuration walkthrough covering virtual domains, TLS encryption, OpenDKIM signing, SPF and DMARC DNS records, and spam filtering.</description>
            <content:encoded><![CDATA[<p>Full Postfix configuration walkthrough covering virtual domains, TLS encryption, OpenDKIM signing, SPF and DMARC DNS records, and spam filtering.</p><p><a href="https://andrej.prus.dev/blog/setting-up-postfix-mail-server-linux-smtp-dkim-spf-records">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Philosophy of Giving Back: Why Open Source Sustainability Depends on Contributors</title>
            <link>https://andrej.prus.dev/blog/the-philosophy-of-giving-back-why-open-source-sustainability-depends-on-contributors</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/the-philosophy-of-giving-back-why-open-source-sustainability-depends-on-contributors</guid>
            <pubDate>Wed, 07 Jul 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Contributors</category>
            <category>Sustainability</category>
            <category>Community</category>
            <category>Reciprocity</category>
            <description>Examines the tragedy of the commons in software - how projects collapse when everyone consumes and nobody contributes - and what healthy contribution cultures look like.</description>
            <content:encoded><![CDATA[<p>Examines the tragedy of the commons in software - how projects collapse when everyone consumes and nobody contributes - and what healthy contribution cultures look like.</p><p><a href="https://andrej.prus.dev/blog/the-philosophy-of-giving-back-why-open-source-sustainability-depends-on-contributors">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Senior Developers Think When Debugging: A Mental Model Breakdown</title>
            <link>https://andrej.prus.dev/blog/how-senior-developers-think-debugging-mental-model-breakdown</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-senior-developers-think-debugging-mental-model-breakdown</guid>
            <pubDate>Tue, 29 Jun 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Mental Models</category>
            <category>Troubleshooting</category>
            <category>Engineering</category>
            <description>Reveals the systematic reasoning process experienced engineers use - narrowing scope, isolating variables, and resisting the urge to guess.</description>
            <content:encoded><![CDATA[<p>Reveals the systematic reasoning process experienced engineers use - narrowing scope, isolating variables, and resisting the urge to guess.</p><p><a href="https://andrej.prus.dev/blog/how-senior-developers-think-debugging-mental-model-breakdown">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux User Management: Groups, sudo Policies &amp; PAM Configuration</title>
            <link>https://andrej.prus.dev/blog/linux-user-management-groups-sudo-policies-pam-configuration</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-user-management-groups-sudo-policies-pam-configuration</guid>
            <pubDate>Tue, 22 Jun 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>Users</category>
            <category>Groups</category>
            <category>sudo</category>
            <category>PAM</category>
            <description>Covers useradd, usermod, groupadd, /etc/sudoers syntax, sudo logging, password policies with PAM, and account expiration management.</description>
            <content:encoded><![CDATA[<p>Covers useradd, usermod, groupadd, /etc/sudoers syntax, sudo logging, password policies with PAM, and account expiration management.</p><p><a href="https://andrej.prus.dev/blog/linux-user-management-groups-sudo-policies-pam-configuration">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Fiber Introduction: Async Programming Without the Complexity</title>
            <link>https://andrej.prus.dev/blog/php-fiber-introduction-async-programming-without-complexity</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-fiber-introduction-async-programming-without-complexity</guid>
            <pubDate>Tue, 15 Jun 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.1</category>
            <category>Fibers</category>
            <category>Async</category>
            <description>Explains PHP 8.1 Fibers as lightweight coroutines, compares them to async/await patterns, and shows practical cooperative scheduling.</description>
            <content:encoded><![CDATA[<p>Explains PHP 8.1 Fibers as lightweight coroutines, compares them to async/await patterns, and shows practical cooperative scheduling.</p><p><a href="https://andrej.prus.dev/blog/php-fiber-introduction-async-programming-without-complexity">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Code Elegance Explained: What Senior Developers Mean When They Say Less Is More</title>
            <link>https://andrej.prus.dev/blog/code-elegance-explained-senior-developers-mean-less-more</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/code-elegance-explained-senior-developers-mean-less-more</guid>
            <pubDate>Wed, 02 Jun 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Elegance</category>
            <category>Simplicity</category>
            <category>Refactoring</category>
            <description>Defines elegance in software through concrete examples - minimal surface area, single responsibility, and expressive naming that removes the need for comments.</description>
            <content:encoded><![CDATA[<p>Defines elegance in software through concrete examples - minimal surface area, single responsibility, and expressive naming that removes the need for comments.</p><p><a href="https://andrej.prus.dev/blog/code-elegance-explained-senior-developers-mean-less-more">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring Linux swap: Size, Priority &amp; zram for Better Performance</title>
            <link>https://andrej.prus.dev/blog/configuring-linux-swap-size-priority-zram-better-performance</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-linux-swap-size-priority-zram-better-performance</guid>
            <pubDate>Sat, 08 May 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>Linux</category>
            <category>Swap</category>
            <category>zram</category>
            <category>Memory</category>
            <category>sysctl</category>
            <description>Explains swap partitions vs swapfiles, tuning swappiness and vfs_cache_pressure, and setting up compressed zram for low-memory systems.</description>
            <content:encoded><![CDATA[<p>Explains swap partitions vs swapfiles, tuning swappiness and vfs_cache_pressure, and setting up compressed zram for low-memory systems.</p><p><a href="https://andrej.prus.dev/blog/configuring-linux-swap-size-priority-zram-better-performance">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Domain-Driven Design in PHP: Entities, Value Objects &amp; Aggregates</title>
            <link>https://andrej.prus.dev/blog/domain-driven-design-php-entities-value-objects-aggregates</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/domain-driven-design-php-entities-value-objects-aggregates</guid>
            <pubDate>Thu, 06 May 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>DDD</category>
            <category>Domain Modeling</category>
            <description>Introduces DDD tactical patterns, showing how to model complex domains with PHP classes while keeping business logic framework-agnostic.</description>
            <content:encoded><![CDATA[<p>Introduces DDD tactical patterns, showing how to model complex domains with PHP classes while keeping business logic framework-agnostic.</p><p><a href="https://andrej.prus.dev/blog/domain-driven-design-php-entities-value-objects-aggregates">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-cli-tools-php-symfony-console-component/blog-building-cli-tools-php-symfony-console-component-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Make Your First Open Source Contribution Without Feeling Like an Imposter</title>
            <link>https://andrej.prus.dev/blog/how-to-make-your-first-open-source-contribution-without-feeling-like-an-imposter</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-make-your-first-open-source-contribution-without-feeling-like-an-imposter</guid>
            <pubDate>Fri, 23 Apr 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>First Contribution</category>
            <category>Pull Requests</category>
            <category>GitHub</category>
            <category>Career Growth</category>
            <description>A beginner-friendly walkthrough of finding a welcoming project, understanding contribution guidelines, and submitting a first pull request that gets merged.</description>
            <content:encoded><![CDATA[<p>A beginner-friendly walkthrough of finding a welcoming project, understanding contribution guidelines, and submitting a first pull request that gets merged.</p><p><a href="https://andrej.prus.dev/blog/how-to-make-your-first-open-source-contribution-without-feeling-like-an-imposter">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Implement JWT Authentication in Pure PHP Step by Step</title>
            <link>https://andrej.prus.dev/blog/how-to-implement-jwt-authentication-pure-php-step-by-step</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-implement-jwt-authentication-pure-php-step-by-step</guid>
            <pubDate>Sun, 18 Apr 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>JWT</category>
            <category>Authentication</category>
            <description>Builds a JWT auth flow from scratch without libraries, covering header/payload/signature generation, verification, and refresh tokens.</description>
            <content:encoded><![CDATA[<p>Builds a JWT auth flow from scratch without libraries, covering header/payload/signature generation, verification, and refresh tokens.</p><p><a href="https://andrej.prus.dev/blog/how-to-implement-jwt-authentication-pure-php-step-by-step">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-automated-testing-pyramid-php-unit-integration-e2e-pest/blog-automated-testing-pyramid-php-unit-integration-e2e-pest-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Art of Reading a Stack Trace: What Every Line Is Really Telling You</title>
            <link>https://andrej.prus.dev/blog/art-reading-stack-trace-what-every-line-really-telling-you</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/art-reading-stack-trace-what-every-line-really-telling-you</guid>
            <pubDate>Sat, 17 Apr 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Stack Traces</category>
            <category>Exceptions</category>
            <category>Error Handling</category>
            <description>Teaches developers to extract maximum signal from stack traces - reading frame order, spotting framework noise, and identifying the true origin of a failure.</description>
            <content:encoded><![CDATA[<p>Teaches developers to extract maximum signal from stack traces - reading frame order, spotting framework noise, and identifying the true origin of a failure.</p><p><a href="https://andrej.prus.dev/blog/art-reading-stack-trace-what-every-line-really-telling-you">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Performance Tuning: CPU, Memory &amp; I/O Optimization Techniques</title>
            <link>https://andrej.prus.dev/blog/linux-performance-tuning-cpu-memory-io-optimization-techniques</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-performance-tuning-cpu-memory-io-optimization-techniques</guid>
            <pubDate>Wed, 14 Apr 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Performance</category>
            <category>Linux</category>
            <category>CPU</category>
            <category>Memory</category>
            <category>IO</category>
            <category>sysctl</category>
            <description>Covers sysctl kernel parameter tuning, CPU governor settings, NUMA awareness, swappiness, and I/O scheduler selection for workloads.</description>
            <content:encoded><![CDATA[<p>Covers sysctl kernel parameter tuning, CPU governor settings, NUMA awareness, swappiness, and I/O scheduler selection for workloads.</p><p><a href="https://andrej.prus.dev/blog/linux-performance-tuning-cpu-memory-io-optimization-techniques">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Set Up a Linux VPN Server With WireGuard: Complete Tutorial</title>
            <link>https://andrej.prus.dev/blog/how-set-up-linux-vpn-server-wireguard-complete-tutorial</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-set-up-linux-vpn-server-wireguard-complete-tutorial</guid>
            <pubDate>Tue, 30 Mar 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>WireGuard</category>
            <category>VPN</category>
            <category>Ubuntu</category>
            <category>wg-quick</category>
            <description>Installs and configures WireGuard on Ubuntu, generates key pairs, sets up peer configs, enables IP forwarding, and automates with wg-quick.</description>
            <content:encoded><![CDATA[<p>Installs and configures WireGuard on Ubuntu, generates key pairs, sets up peer configs, enables IP forwarding, and automates with wg-quick.</p><p><a href="https://andrej.prus.dev/blog/how-set-up-linux-vpn-server-wireguard-complete-tutorial">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How Programming Languages Shape the Way Developers Think About Problems</title>
            <link>https://andrej.prus.dev/blog/how-programming-languages-shape-the-way-developers-think-about-problems</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-programming-languages-shape-the-way-developers-think-about-problems</guid>
            <pubDate>Mon, 15 Mar 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Language Evolution</category>
            <category>Programming Languages</category>
            <category>Software Design</category>
            <category>Type Systems</category>
            <category>Developer Thinking</category>
            <description>Argues that the language you work in daily does not just express your thinking - it actively constrains and moulds how you conceptualise solutions before you write a single line.</description>
            <content:encoded><![CDATA[<p>Argues that the language you work in daily does not just express your thinking - it actively constrains and moulds how you conceptualise solutions before you write a single line.</p><p><a href="https://andrej.prus.dev/blog/how-programming-languages-shape-the-way-developers-think-about-problems">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Why Simple Code Is Not the Same as Easy Code: A Developer&apos;s Perspective</title>
            <link>https://andrej.prus.dev/blog/why-simple-code-not-same-easy-code-developers-perspective</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/why-simple-code-not-same-easy-code-developers-perspective</guid>
            <pubDate>Sun, 14 Mar 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Simplicity</category>
            <category>Readability</category>
            <category>Maintainability</category>
            <description>Breaks down the cognitive gap between writing code that works and writing code that is effortlessly understandable by others.</description>
            <content:encoded><![CDATA[<p>Breaks down the cognitive gap between writing code that works and writing code that is effortlessly understandable by others.</p><p><a href="https://andrej.prus.dev/blog/why-simple-code-not-same-easy-code-developers-perspective">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.1 Enums Deep Dive: Pure, Backed, and Interface Implementation</title>
            <link>https://andrej.prus.dev/blog/php-81-enums-deep-dive-pure-backed-interface-implementation</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-81-enums-deep-dive-pure-backed-interface-implementation</guid>
            <pubDate>Wed, 03 Mar 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>PHP 8.1</category>
            <category>Enums</category>
            <category>Match</category>
            <description>Explores every aspect of PHP 8.1 enums, including pure vs backed enums, cases(), from(), tryFrom(), interface implementation, and use in match.</description>
            <content:encoded><![CDATA[<p>Explores every aspect of PHP 8.1 enums, including pure vs backed enums, cases(), from(), tryFrom(), interface implementation, and use in match.</p><p><a href="https://andrej.prus.dev/blog/php-81-enums-deep-dive-pure-backed-interface-implementation">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building CRUD APIs With Laravel Sanctum Authentication in 2021</title>
            <link>https://andrej.prus.dev/blog/building-crud-apis-laravel-sanctum-authentication-2021</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-crud-apis-laravel-sanctum-authentication-2021</guid>
            <pubDate>Wed, 24 Feb 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Sanctum</category>
            <category>APIs</category>
            <category>Authentication</category>
            <description>End-to-end tutorial creating a token-authenticated CRUD API with Laravel Sanctum, resource transformers, and form request validation.</description>
            <content:encoded><![CDATA[<p>End-to-end tutorial creating a token-authenticated CRUD API with Laravel Sanctum, resource transformers, and form request validation.</p><p><a href="https://andrej.prus.dev/blog/building-crud-apis-laravel-sanctum-authentication-2021">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-crud-apis-laravel-sanctum-authentication-2021/blog-building-crud-apis-laravel-sanctum-authentication-2021-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Log Management: rsyslog, logrotate &amp; Centralized Logging Setup</title>
            <link>https://andrej.prus.dev/blog/linux-log-management-rsyslog-logrotate-centralized-logging-setup</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-log-management-rsyslog-logrotate-centralized-logging-setup</guid>
            <pubDate>Thu, 18 Feb 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Monitoring</category>
            <category>Linux</category>
            <category>Logging</category>
            <category>rsyslog</category>
            <category>logrotate</category>
            <category>ELK</category>
            <description>Configures rsyslog for remote log forwarding, sets up logrotate policies, and introduces the ELK stack for centralized log aggregation.</description>
            <content:encoded><![CDATA[<p>Configures rsyslog for remote log forwarding, sets up logrotate policies, and introduces the ELK stack for centralized log aggregation.</p><p><a href="https://andrej.prus.dev/blog/linux-log-management-rsyslog-logrotate-centralized-logging-setup">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Open Source Culture Explained: What It Really Means to Build Software Together</title>
            <link>https://andrej.prus.dev/blog/open-source-culture-explained-what-it-really-means-to-build-software-together</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/open-source-culture-explained-what-it-really-means-to-build-software-together</guid>
            <pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Open Source</category>
            <category>Software Culture</category>
            <category>Maintainers</category>
            <category>Contributors</category>
            <category>Collaboration</category>
            <description>Introduces the values underpinning open source - radical transparency, shared ownership, and the belief that software improves faster when built in public.</description>
            <content:encoded><![CDATA[<p>Introduces the values underpinning open source - radical transparency, shared ownership, and the belief that software improves faster when built in public.</p><p><a href="https://andrej.prus.dev/blog/open-source-culture-explained-what-it-really-means-to-build-software-together">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Debugging as Detective Work: Why Hunting Bugs Is the Most Thrilling Part of Development</title>
            <link>https://andrej.prus.dev/blog/debugging-as-detective-work-why-hunting-bugs-most-thrilling-part-development</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/debugging-as-detective-work-why-hunting-bugs-most-thrilling-part-development</guid>
            <pubDate>Wed, 03 Feb 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Debugging</category>
            <category>PHP</category>
            <category>Troubleshooting</category>
            <category>Problem Solving</category>
            <category>Developer Workflow</category>
            <description>Draws a direct parallel between software debugging and criminal investigation - forming hypotheses, gathering evidence, and closing in on the culprit.</description>
            <content:encoded><![CDATA[<p>Draws a direct parallel between software debugging and criminal investigation - forming hypotheses, gathering evidence, and closing in on the culprit.</p><p><a href="https://andrej.prus.dev/blog/debugging-as-detective-work-why-hunting-bugs-most-thrilling-part-development">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Automating Linux Tasks With Cron and Systemd Timers: Full Guide</title>
            <link>https://andrej.prus.dev/blog/automating-linux-tasks-cron-systemd-timers-full-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/automating-linux-tasks-cron-systemd-timers-full-guide</guid>
            <pubDate>Mon, 25 Jan 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>cron</category>
            <category>systemd</category>
            <category>Automation</category>
            <category>Scheduling</category>
            <description>Compares cron and systemd timers, covers crontab syntax, environment variables, logging cron output, and monotonic vs realtime timers.</description>
            <content:encoded><![CDATA[<p>Compares cron and systemd timers, covers crontab syntax, environment variables, logging cron output, and monotonic vs realtime timers.</p><p><a href="https://andrej.prus.dev/blog/automating-linux-tasks-cron-systemd-timers-full-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Composer Best Practices: Autoloading, Version Constraints &amp; Monorepos</title>
            <link>https://andrej.prus.dev/blog/composer-best-practices-autoloading-version-constraints-monorepos</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/composer-best-practices-autoloading-version-constraints-monorepos</guid>
            <pubDate>Tue, 12 Jan 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>Composer</category>
            <category>PHP</category>
            <category>Autoloading</category>
            <category>Monorepos</category>
            <description>Essential Composer tips including PSR-4 autoloading, semantic versioning strategies, and managing a PHP monorepo with path repositories.</description>
            <content:encoded><![CDATA[<p>Essential Composer tips including PSR-4 autoloading, semantic versioning strategies, and managing a PHP monorepo with path repositories.</p><p><a href="https://andrej.prus.dev/blog/composer-best-practices-autoloading-version-constraints-monorepos">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-composer-best-practices-autoloading-version-constraints-monorepos/blog-composer-best-practices-autoloading-version-constraints-monorepos-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>The Beauty of Elegant Code: Why Simplicity Is the Hardest Skill to Master</title>
            <link>https://andrej.prus.dev/blog/beauty-elegant-code-simplicity-hardest-skill-master</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/beauty-elegant-code-simplicity-hardest-skill-master</guid>
            <pubDate>Fri, 08 Jan 2021 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Clean Code</category>
            <category>PHP</category>
            <category>Simplicity</category>
            <category>Refactoring</category>
            <category>Code Quality</category>
            <description>Explores why writing simple, readable code demands more discipline and experience than writing complex solutions, with real before/after examples.</description>
            <content:encoded><![CDATA[<p>Explores why writing simple, readable code demands more discipline and experience than writing complex solutions, with real before/after examples.</p><p><a href="https://andrej.prus.dev/blog/beauty-elegant-code-simplicity-hardest-skill-master">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Network Configuration: Static IP, DNS &amp; Netplan on Ubuntu</title>
            <link>https://andrej.prus.dev/blog/linux-network-configuration-static-ip-dns-netplan-ubuntu</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-network-configuration-static-ip-dns-netplan-ubuntu</guid>
            <pubDate>Mon, 14 Dec 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Networking</category>
            <category>Linux</category>
            <category>Ubuntu</category>
            <category>Netplan</category>
            <category>DNS</category>
            <category>Static IP</category>
            <description>Covers Netplan YAML syntax, setting static IPs, configuring DNS resolvers, bonding interfaces, and troubleshooting with ip and ss commands.</description>
            <content:encoded><![CDATA[<p>Covers Netplan YAML syntax, setting static IPs, configuring DNS resolvers, bonding interfaces, and troubleshooting with ip and ss commands.</p><p><a href="https://andrej.prus.dev/blog/linux-network-configuration-static-ip-dns-netplan-ubuntu">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Configure a LAMP Stack on Ubuntu: Apache, MySQL &amp; PHP Tuning</title>
            <link>https://andrej.prus.dev/blog/how-configure-lamp-stack-ubuntu-apache-mysql-php-tuning</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-configure-lamp-stack-ubuntu-apache-mysql-php-tuning</guid>
            <pubDate>Mon, 30 Nov 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Web Server</category>
            <category>LAMP</category>
            <category>Ubuntu</category>
            <category>Apache</category>
            <category>MySQL</category>
            <category>PHP-FPM</category>
            <description>Full LAMP installation and optimization: MPM worker tuning, MySQL InnoDB settings, PHP-FPM pools, and .htaccess security hardening.</description>
            <content:encoded><![CDATA[<p>Full LAMP installation and optimization: MPM worker tuning, MySQL InnoDB settings, PHP-FPM pools, and .htaccess security hardening.</p><p><a href="https://andrej.prus.dev/blog/how-configure-lamp-stack-ubuntu-apache-mysql-php-tuning">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8.0 New Features: Complete Developer Guide to Named Arguments, JIT and More</title>
            <link>https://andrej.prus.dev/blog/php-80-new-features-named-arguments-jit</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-80-new-features-named-arguments-jit</guid>
            <pubDate>Thu, 26 Nov 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP 8.0</category>
            <category>Named Arguments</category>
            <category>JIT</category>
            <category>Migration</category>
            <description>The biggest PHP release in years, with a practical breakdown of new syntax features, JIT compilation benefits, and migration tips.</description>
            <content:encoded><![CDATA[<p>The biggest PHP release in years, with a practical breakdown of new syntax features, JIT compilation benefits, and migration tips.</p><p><a href="https://andrej.prus.dev/blog/php-80-new-features-named-arguments-jit">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP 8 Match Expression vs Switch: Everything You Need to Know</title>
            <link>https://andrej.prus.dev/blog/php-8-match-expression-vs-switch</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-8-match-expression-vs-switch</guid>
            <pubDate>Sun, 22 Nov 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP 8</category>
            <category>Match Expression</category>
            <category>Switch</category>
            <description>Detailed comparison of the new match expression against switch, covering exhaustiveness, strict comparison, and return values.</description>
            <content:encoded><![CDATA[<p>Detailed comparison of the new match expression against switch, covering exhaustiveness, strict comparison, and return values.</p><p><a href="https://andrej.prus.dev/blog/php-8-match-expression-vs-switch">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide/blog-deploying-php-apps-aws-ec2-ecs-fargate-lambda-runtimes-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Disk Management: LVM, Partitions &amp; Filesystem Configuration</title>
            <link>https://andrej.prus.dev/blog/linux-disk-management-lvm-partitions-filesystem-configuration</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-disk-management-lvm-partitions-filesystem-configuration</guid>
            <pubDate>Thu, 22 Oct 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Storage</category>
            <category>Linux</category>
            <category>LVM</category>
            <category>Partitions</category>
            <category>Filesystems</category>
            <category>Administration</category>
            <description>Explains fdisk, parted, LVM physical volumes, volume groups, logical volumes, and resizing filesystems without downtime.</description>
            <content:encoded><![CDATA[<p>Explains fdisk, parted, LVM physical volumes, volume groups, logical volumes, and resizing filesystems without downtime.</p><p><a href="https://andrej.prus.dev/blog/linux-disk-management-lvm-partitions-filesystem-configuration">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Use Docker With PHP: Complete Local Development Setup Guide</title>
            <link>https://andrej.prus.dev/blog/how-to-use-docker-with-php-local-development-setup</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-use-docker-with-php-local-development-setup</guid>
            <pubDate>Mon, 05 Oct 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Tooling</category>
            <category>Docker</category>
            <category>PHP</category>
            <category>PHP-FPM</category>
            <category>Docker Compose</category>
            <description>Shows how to containerize a PHP app with PHP-FPM, Nginx, and MySQL using Docker Compose for reproducible dev environments.</description>
            <content:encoded><![CDATA[<p>Shows how to containerize a PHP app with PHP-FPM, Nginx, and MySQL using Docker Compose for reproducible dev environments.</p><p><a href="https://andrej.prus.dev/blog/how-to-use-docker-with-php-local-development-setup">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite/blog-database-indexing-strategies-php-apps-b-trees-full-text-composite-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Building a Real-Time Chat App With PHP WebSockets and Ratchet</title>
            <link>https://andrej.prus.dev/blog/building-real-time-chat-app-php-websockets-ratchet</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/building-real-time-chat-app-php-websockets-ratchet</guid>
            <pubDate>Thu, 17 Sep 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>WebSockets</category>
            <category>Ratchet</category>
            <category>Real-Time</category>
            <description>Full project walkthrough using the Ratchet library to implement pub/sub messaging, rooms, and authentication over WebSockets.</description>
            <content:encoded><![CDATA[<p>Full project walkthrough using the Ratchet library to implement pub/sub messaging, rooms, and authentication over WebSockets.</p><p><a href="https://andrej.prus.dev/blog/building-real-time-chat-app-php-websockets-ratchet">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches/blog-api-versioning-in-php-strategies-url-paths-header-based-approaches-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Setting Up a Linux Firewall With UFW: Rules, Logging &amp; Best Practices</title>
            <link>https://andrej.prus.dev/blog/setting-up-linux-firewall-ufw-rules-logging-best-practices</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/setting-up-linux-firewall-ufw-rules-logging-best-practices</guid>
            <pubDate>Wed, 09 Sep 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>UFW</category>
            <category>Firewall</category>
            <category>Ubuntu</category>
            <category>Hardening</category>
            <description>Practical UFW configuration covering allow/deny rules, application profiles, rate limiting, IPv6 support, and persistent rule management.</description>
            <content:encoded><![CDATA[<p>Practical UFW configuration covering allow/deny rules, application profiles, rate limiting, IPv6 support, and persistent rule management.</p><p><a href="https://andrej.prus.dev/blog/setting-up-linux-firewall-ufw-rules-logging-best-practices">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/site-og/site-og-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux systemd Services: Create, Enable &amp; Manage Custom Unit Files</title>
            <link>https://andrej.prus.dev/blog/linux-systemd-services-create-enable-manage-custom-unit-files</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-systemd-services-create-enable-manage-custom-unit-files</guid>
            <pubDate>Mon, 17 Aug 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>systemd</category>
            <category>Services</category>
            <category>Timers</category>
            <category>Sockets</category>
            <description>Shows how to write systemd service, timer, and socket unit files, configure restart policies, and use journalctl for log inspection.</description>
            <content:encoded><![CDATA[<p>Shows how to write systemd service, timer, and socket unit files, configure restart policies, and use journalctl for log inspection.</p><p><a href="https://andrej.prus.dev/blog/linux-systemd-services-create-enable-manage-custom-unit-files">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-php-sdk-http-client-abstraction-retries-test-fakes/blog-building-php-sdk-http-client-abstraction-retries-test-fakes-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Understanding PHP Traits: When to Use Them and When to Avoid Them</title>
            <link>https://andrej.prus.dev/blog/understanding-php-traits-when-to-use-avoid</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/understanding-php-traits-when-to-use-avoid</guid>
            <pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Core PHP</category>
            <category>PHP</category>
            <category>Traits</category>
            <category>Object-Oriented PHP</category>
            <category>Architecture</category>
            <description>Practical guidance on trait composition, method conflict resolution, and the design pitfalls developers commonly fall into.</description>
            <content:encoded><![CDATA[<p>Practical guidance on trait composition, method conflict resolution, and the design pitfalls developers commonly fall into.</p><p><a href="https://andrej.prus.dev/blog/understanding-php-traits-when-to-use-avoid">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions/blog-modern-php-development-workflow-git-ci-cd-docker-github-actions-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Unit Testing With PHPUnit: From Zero to 100% Code Coverage</title>
            <link>https://andrej.prus.dev/blog/php-unit-testing-with-phpunit-code-coverage</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-unit-testing-with-phpunit-code-coverage</guid>
            <pubDate>Tue, 14 Jul 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Testing</category>
            <category>PHPUnit</category>
            <category>PHP</category>
            <category>Code Coverage</category>
            <description>Comprehensive tutorial on writing unit, integration, and data-provider tests using PHPUnit, including mocking and assertion best practices.</description>
            <content:encoded><![CDATA[<p>Comprehensive tutorial on writing unit, integration, and data-provider tests using PHPUnit, including mocking and assertion best practices.</p><p><a href="https://andrej.prus.dev/blog/php-unit-testing-with-phpunit-code-coverage">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies/blog-building-multi-tenant-saas-apps-laravel-architecture-tenancy-strategies-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Configuring Nginx on Ubuntu 20.04: Virtual Hosts, SSL &amp; Reverse Proxy</title>
            <link>https://andrej.prus.dev/blog/configuring-nginx-ubuntu-20-04-virtual-hosts-ssl-reverse-proxy</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/configuring-nginx-ubuntu-20-04-virtual-hosts-ssl-reverse-proxy</guid>
            <pubDate>Fri, 03 Jul 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Web Server</category>
            <category>Nginx</category>
            <category>Ubuntu</category>
            <category>TLS</category>
            <category>Reverse Proxy</category>
            <category>Let&apos;s Encrypt</category>
            <description>Complete Nginx setup guide - server blocks, Let&apos;s Encrypt TLS, HTTP/2, Gzip compression, and proxying to upstream application servers.</description>
            <content:encoded><![CDATA[<p>Complete Nginx setup guide - server blocks, Let&#039;s Encrypt TLS, HTTP/2, Gzip compression, and proxying to upstream application servers.</p><p><a href="https://andrej.prus.dev/blog/configuring-nginx-ubuntu-20-04-virtual-hosts-ssl-reverse-proxy">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-laravel-api-development/page-laravel-api-development-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Optimizing MySQL Queries in PHP: Indexes, Joins and Execution Plans Explained</title>
            <link>https://andrej.prus.dev/blog/optimizing-mysql-queries-php-indexes-joins-execution-plans</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/optimizing-mysql-queries-php-indexes-joins-execution-plans</guid>
            <pubDate>Tue, 02 Jun 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Database</category>
            <category>MySQL</category>
            <category>PHP</category>
            <category>Query Optimization</category>
            <category>Indexes</category>
            <description>Deep-dive into slow-query diagnosis, index strategies, and using EXPLAIN to drastically cut database round-trip time.</description>
            <content:encoded><![CDATA[<p>Deep-dive into slow-query diagnosis, index strategies, and using EXPLAIN to drastically cut database round-trip time.</p><p><a href="https://andrej.prus.dev/blog/optimizing-mysql-queries-php-indexes-joins-execution-plans">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans/blog-optimizing-mysql-queries-php-indexes-joins-execution-plans-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux File Permissions Explained: chmod, chown &amp; ACLs in Depth</title>
            <link>https://andrej.prus.dev/blog/linux-file-permissions-chmod-chown-acls-depth</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-file-permissions-chmod-chown-acls-depth</guid>
            <pubDate>Thu, 28 May 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-08T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Administration</category>
            <category>Linux</category>
            <category>Permissions</category>
            <category>chmod</category>
            <category>chown</category>
            <category>ACL</category>
            <description>Demystifies octal and symbolic permission notation, setuid/setgid/sticky bits, and extended ACLs for fine-grained access control.</description>
            <content:encoded><![CDATA[<p>Demystifies octal and symbolic permission notation, setuid/setgid/sticky bits, and extended ACLs for fine-grained access control.</p><p><a href="https://andrej.prus.dev/blog/linux-file-permissions-chmod-chown-acls-depth">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-linux-file-permissions-chmod-chown-acls-depth/blog-linux-file-permissions-chmod-chown-acls-depth-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-linux-file-permissions-chmod-chown-acls-depth/blog-linux-file-permissions-chmod-chown-acls-depth-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>PHP Security Checklist 2020: Protect Your App From XSS, CSRF and SQL Injection</title>
            <link>https://andrej.prus.dev/blog/php-security-checklist-2020-xss-csrf-sql-injection</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/php-security-checklist-2020-xss-csrf-sql-injection</guid>
            <pubDate>Wed, 20 May 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>PHP</category>
            <category>XSS</category>
            <category>CSRF</category>
            <category>SQL Injection</category>
            <description>A complete, actionable security checklist covering the OWASP Top 10 vulnerabilities with PHP-specific remediation code snippets.</description>
            <content:encoded><![CDATA[<p>A complete, actionable security checklist covering the OWASP Top 10 vulnerabilities with PHP-specific remediation code snippets.</p><p><a href="https://andrej.prus.dev/blog/php-security-checklist-2020-xss-csrf-sql-injection">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-php-security-checklist-2020-xss-csrf-sql-injection/blog-php-security-checklist-2020-xss-csrf-sql-injection-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Configure SSH on Linux: Keys, Port Change &amp; Fail2Ban Setup</title>
            <link>https://andrej.prus.dev/blog/how-configure-ssh-linux-keys-port-change-fail2ban-setup</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-configure-ssh-linux-keys-port-change-fail2ban-setup</guid>
            <pubDate>Sun, 12 Apr 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>SSH</category>
            <category>OpenSSH</category>
            <category>Fail2Ban</category>
            <description>Step-by-step guide to generating SSH key pairs, disabling password authentication, changing the default port, and blocking brute-force attempts with Fail2Ban.</description>
            <content:encoded><![CDATA[<p>Step-by-step guide to generating SSH key pairs, disabling password authentication, changing the default port, and blocking brute-force attempts with Fail2Ban.</p><p><a href="https://andrej.prus.dev/blog/how-configure-ssh-linux-keys-port-change-fail2ban-setup">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-how-configure-ssh-linux-keys-port-change-fail2ban-setup/blog-how-configure-ssh-linux-keys-port-change-fail2ban-setup-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-how-configure-ssh-linux-keys-port-change-fail2ban-setup/blog-how-configure-ssh-linux-keys-port-change-fail2ban-setup-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Master PHP Dependency Injection: A Practical Guide with Real Examples</title>
            <link>https://andrej.prus.dev/blog/master-php-dependency-injection-practical-guide</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/master-php-dependency-injection-practical-guide</guid>
            <pubDate>Tue, 07 Apr 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Architecture</category>
            <category>PHP</category>
            <category>Dependency Injection</category>
            <category>Testing</category>
            <description>Explains constructor, setter, and interface injection with concrete examples, showing how DI improves testability and flexibility.</description>
            <content:encoded><![CDATA[<p>Explains constructor, setter, and interface injection with concrete examples, showing how DI improves testability and flexibility.</p><p><a href="https://andrej.prus.dev/blog/master-php-dependency-injection-practical-guide">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide/blog-integrating-stripe-payments-laravel-subscriptions-webhooks-guide-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Laravel vs Symfony in 2020: Which PHP Framework Should You Choose?</title>
            <link>https://andrej.prus.dev/blog/laravel-vs-symfony-2020-php-framework</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/laravel-vs-symfony-2020-php-framework</guid>
            <pubDate>Wed, 11 Mar 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Laravel</category>
            <category>Symfony</category>
            <category>PHP Frameworks</category>
            <category>Architecture</category>
            <description>An objective, data-driven comparison of Laravel and Symfony covering performance benchmarks, ecosystem, and learning curve.</description>
            <content:encoded><![CDATA[<p>An objective, data-driven comparison of Laravel and Symfony covering performance benchmarks, ecosystem, and learning curve.</p><p><a href="https://andrej.prus.dev/blog/laravel-vs-symfony-2020-php-framework">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/page-services-laravel/page-services-laravel-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>Linux Server Initial Setup: Complete Security Configuration Guide for Beginners</title>
            <link>https://andrej.prus.dev/blog/linux-server-initial-setup-complete-security-configuration-guide-beginners</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/linux-server-initial-setup-complete-security-configuration-guide-beginners</guid>
            <pubDate>Thu, 05 Mar 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-07T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>Security</category>
            <category>Linux</category>
            <category>Server Security</category>
            <category>SSH</category>
            <category>UFW</category>
            <category>Ubuntu</category>
            <category>Hardening</category>
            <description>Covers first-login hardening steps: creating sudo users, disabling root SSH, configuring UFW firewall, and enabling automatic security updates.</description>
            <content:encoded><![CDATA[<p>Covers first-login hardening steps: creating sudo users, disabling root SSH, configuring UFW firewall, and enabling automatic security updates.</p><p><a href="https://andrej.prus.dev/blog/linux-server-initial-setup-complete-security-configuration-guide-beginners">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-linux-server-initial-setup-complete-security-configuration-guide-beginners/blog-linux-server-initial-setup-complete-security-configuration-guide-beginners-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-linux-server-initial-setup-complete-security-configuration-guide-beginners/blog-linux-server-initial-setup-complete-security-configuration-guide-beginners-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
        <item>
            <title>How to Build a REST API in PHP Without a Framework in 2020</title>
            <link>https://andrej.prus.dev/blog/how-to-build-rest-api-php-without-framework-2020</link>
            <guid isPermaLink="true">https://andrej.prus.dev/blog/how-to-build-rest-api-php-without-framework-2020</guid>
            <pubDate>Mon, 03 Feb 2020 00:00:00 GMT</pubDate>
            <atom:updated>2026-05-06T00:00:00.000Z</atom:updated>
            <dc:creator>Andrej Prus</dc:creator>
            <author>hello@prus.dev (Andrej Prus)</author>
            <category>APIs</category>
            <category>PHP</category>
            <category>REST API</category>
            <category>Native PHP</category>
            <category>Architecture</category>
            <description>Step-by-step tutorial building a lightweight, dependency-free REST API using only native PHP and best-practice folder structure.</description>
            <content:encoded><![CDATA[<p>Step-by-step tutorial building a lightweight, dependency-free REST API using only native PHP and best-practice folder structure.</p><p><a href="https://andrej.prus.dev/blog/how-to-build-rest-api-php-without-framework-2020">Read the full article on andrej.prus.dev</a></p>]]></content:encoded>
            <media:content url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp" medium="image"/>
            <media:thumbnail url="https://andrej.prus.dev/assets/images/optimized/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories/blog-database-migrations-best-practices-laravel-rollbacks-seeds-factories-1200.webp"/>
            <source url="https://andrej.prus.dev/feed.xml">Senior Laravel Developer Insights</source>
        </item>
    </channel>
</rss>
