<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Wunner Software Blog (EN)</title>
        <link>https://www.wunner-software.de/en/blog</link>
        <description>Technical articles and insights from web development with Shopware and Symfony.</description>
        <language>en</language>
        <atom:link href="https://www.wunner-software.de/en/blog/feed.xml" rel="self" type="application/rss+xml"/>
        <lastBuildDate>Sat, 02 May 2026 09:08:11 +0000</lastBuildDate>
                <item>
            <title>My Claude Code Setup Is Now Open Source: 40+ Skills, 18 Rules, Safety Hooks</title>
            <link>https://www.wunner-software.de/en/blog/claude-code-webdev-collection</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/claude-code-webdev-collection</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[After months of intensive Claude Code usage, I&#039;ve published my complete setup as an open-source repository: skills for Shopware, Symfony, PHP, TypeScript, Vue and Svelte, 18 coding rules, safety hooks and MCP servers — with a one-command installer.]]></description>
                                    <category>ki</category>
                        <category>tooling</category>
                        <category>open-source</category>
                                </item>
                <item>
            <title>Claude Opus 4.7: Benchmark Reality vs. Marketing Promises</title>
            <link>https://www.wunner-software.de/en/blog/claude-opus-4-7-benchmark-reality</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/claude-opus-4-7-benchmark-reality</guid>
            <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Anthropic released Claude Opus 4.7 celebrating record benchmarks. A look at the independent numbers reveals: GPT-5.4 beats it in several categories, there are regressions compared to its predecessor, and the new tokenizer makes it effectively more expensive. A sober assessment.]]></description>
                                    <category>ki</category>
                        <category>meinung</category>
                                </item>
                <item>
            <title>From .NET 3.5 to Modern ASP.NET Core: A Structured Learning Path</title>
            <link>https://www.wunner-software.de/en/blog/dotnet-core-learning-path</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/dotnet-core-learning-path</guid>
            <pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The path from .NET 3.5 to modern ASP.NET Core: From async/await through Entity Framework Core to SignalR and Docker. A structured learning path in 7 phases.]]></description>
                                    <category>csharp</category>
                        <category>dotnet</category>
                        <category>programmierung</category>
                        <category>karriere</category>
                                </item>
                <item>
            <title>Java Since Java 8: What Has Changed? A Guide for Getting Back In</title>
            <link>https://www.wunner-software.de/en/blog/java-since-java8-guide</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/java-since-java8-guide</guid>
            <pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[From Java 8 to Java 21: The most important innovations at a glance. Records, Virtual Threads, Pattern Matching and why Oracle is no longer the only JDK provider.]]></description>
                                    <category>java</category>
                        <category>programmierung</category>
                        <category>karriere</category>
                                </item>
                <item>
            <title>PHP Security Pitfalls: Why $_SERVER[&#039;REQUEST_URI&#039;] in Forms is Dangerous</title>
            <link>https://www.wunner-software.de/en/blog/php-security-pitfalls</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/php-security-pitfalls</guid>
            <pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[A look at common security pitfalls in PHP: From XSS to SQL injection to insecure password storage.]]></description>
                                    <category>php</category>
                        <category>security</category>
                        <category>webentwicklung</category>
                                </item>
                <item>
            <title>openSUSE Leap 16.0: What&#039;s New and What Replaces YaST2</title>
            <link>https://www.wunner-software.de/en/blog/opensuse-leap-16</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/opensuse-leap-16</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[openSUSE Leap 16.0 introduces a new installer, SELinux by default, Wayland-only desktops and retires YaST. Plus: concrete migration steps for production servers running nginx, PHP-FPM, Docker and CrowdSec.]]></description>
                                    <category>linux</category>
                        <category>opensuse</category>
                        <category>server</category>
                                </item>
                <item>
            <title>Integrating Svelte 5 and Vite into a Symfony Project</title>
            <link>https://www.wunner-software.de/en/blog/svelte-vite-symfony</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/svelte-vite-symfony</guid>
            <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[How to integrate Svelte 5 with TypeScript and Vite into an existing Symfony/Twig project — including the Runes API, WaveSurfer.js and Playwright tests.]]></description>
                                    <category>svelte</category>
                        <category>typescript</category>
                        <category>symfony</category>
                        <category>vite</category>
                                </item>
                <item>
            <title>PHPUnit Complete Handbook in German</title>
            <link>https://www.wunner-software.de/en/blog/phpunit-handbook-german</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/phpunit-handbook-german</guid>
            <pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The German-language PHPUnit handbook: From installation through assertions, data providers and mocking to CI/CD integration with GitHub Actions, GitLab CI and Bitbucket Pipelines.]]></description>
                                    <category>php</category>
                        <category>testing</category>
                        <category>phpunit</category>
                                </item>
                <item>
            <title>My Production Server Setup with openSUSE Leap</title>
            <link>https://www.wunner-software.de/en/blog/server-setup-opensuse</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/server-setup-opensuse</guid>
            <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[From bare-metal server at Hetzner to a hardened production system: nginx with Brotli, PHP-FPM, RabbitMQ, CrowdSec, SSH tarpit and automated backups.]]></description>
                                    <category>devops</category>
                        <category>linux</category>
                        <category>nginx</category>
                        <category>security</category>
                                </item>
                <item>
            <title>DDEV for Symfony and Shopware: The Perfect Local Development Environment</title>
            <link>https://www.wunner-software.de/en/blog/ddev-development-environment</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/ddev-development-environment</guid>
            <pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Why DDEV is the best choice for PHP development: zero-config setup, multi-project operation and how to run Playwright tests directly in the container.]]></description>
                                    <category>devops</category>
                        <category>docker</category>
                        <category>symfony</category>
                        <category>shopware</category>
                                </item>
                <item>
            <title>CSRF in Symfony and Why Shopware Dropped It</title>
            <link>https://www.wunner-software.de/en/blog/symfony-security</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/symfony-security</guid>
            <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[CSRF protection is standard in Symfony – but Shopware 6 deliberately chose against it. Why? And how do you properly handle MySQL locking and parallel JavaScript requests?]]></description>
                                    <category>symfony</category>
                        <category>php</category>
                        <category>security</category>
                        <category>shopware</category>
                                </item>
                <item>
            <title>E2E Testing with Playwright for PHP Websites</title>
            <link>https://www.wunner-software.de/en/blog/e2e-testing-playwright</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/e2e-testing-playwright</guid>
            <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Playwright isn&#039;t just for SPAs: How to reliably test Symfony pages, multilingual navigation and async JavaScript components.]]></description>
                                    <category>testing</category>
                        <category>typescript</category>
                        <category>devops</category>
                                </item>
                <item>
            <title>SCSS + Bootstrap 5 Build Pipeline Without Webpack</title>
            <link>https://www.wunner-software.de/en/blog/scss-bootstrap-build-pipeline</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/scss-bootstrap-build-pipeline</guid>
            <pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Why I skip Webpack for my Symfony projects and use a lean Node.js build pipeline with SCSS, asset copying and Brotli compression instead.]]></description>
                                    <category>css</category>
                        <category>tooling</category>
                        <category>webentwicklung</category>
                                </item>
                <item>
            <title>CI/CD Pipelines for PHP Projects with GitHub Actions</title>
            <link>https://www.wunner-software.de/en/blog/ci-cd-pipelines</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/ci-cd-pipelines</guid>
            <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[How to set up an automated build and deployment pipeline for your PHP project with GitHub Actions.]]></description>
                                    <category>devops</category>
                        <category>tooling</category>
                                </item>
                <item>
            <title>Effective Testing with PHPUnit: Symfony Projects and Shopware 6 Plugins</title>
            <link>https://www.wunner-software.de/en/blog/testing-with-phpunit</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/testing-with-phpunit</guid>
            <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[How to build solid test coverage in Symfony and Shopware 6 with PHPUnit – from unit tests to integration tests to E2E tests with Playwright.]]></description>
                                    <category>php</category>
                        <category>testing</category>
                        <category>symfony</category>
                        <category>shopware</category>
                                </item>
                <item>
            <title>Vibe Coding: How AI Agents Are Changing Software Development</title>
            <link>https://www.wunner-software.de/en/blog/vibe-coding-ai-agents</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/vibe-coding-ai-agents</guid>
            <pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Vibe coding — coined by Andrej Karpathy — is changing how solo developers build software. An honest account of Claude Code, Cursor and others, the strengths of these tools, and why openClaw remains a security risk despite the hype.]]></description>
                                    <category>ki</category>
                        <category>vibe-coding</category>
                        <category>tools</category>
                        <category>claude-code</category>
                        <category>sicherheit</category>
                                </item>
                <item>
            <title>Migrating from Shopware 5 to Shopware 6: A Practical Guide</title>
            <link>https://www.wunner-software.de/en/blog/shopware-6-migration</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-6-migration</guid>
            <pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Experiences and strategies from real migration projects – what works, what doesn&#039;t, and what to watch out for.]]></description>
                                    <category>shopware</category>
                        <category>ecommerce</category>
                        <category>php</category>
                                </item>
                <item>
            <title>REST API Design: Best Practices for Symfony Projects</title>
            <link>https://www.wunner-software.de/en/blog/api-design-best-practices</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/api-design-best-practices</guid>
            <pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Proven patterns and conventions for REST API design in Symfony – from URL structure to error handling.]]></description>
                                    <category>php</category>
                        <category>symfony</category>
                        <category>architektur</category>
                                </item>
                <item>
            <title>Progressive Web Apps with Symfony: Service Workers, Offline Capability, and GDPR</title>
            <link>https://www.wunner-software.de/en/blog/pwa-with-symfony</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/pwa-with-symfony</guid>
            <pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Progressive Web Apps (PWAs) bring app-like experiences to the web: offline capability, push notifications, and fast load times. This article shows how to implement PWA features in a Symfony application while remaining GDPR compliant.]]></description>
                                    <category>symfony</category>
                        <category>pwa</category>
                        <category>frontend</category>
                                </item>
                <item>
            <title>PHP Performance Tips for Production Applications</title>
            <link>https://www.wunner-software.de/en/blog/php-performance-tips</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/php-performance-tips</guid>
            <pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Practical tips for PHP performance optimization – from OPcache configuration to efficient database queries.]]></description>
                                    <category>php</category>
                        <category>performance</category>
                                </item>
                <item>
            <title>Server Monitoring with Grafana and Prometheus: Metrics, Dashboards, and Alerting</title>
            <link>https://www.wunner-software.de/en/blog/monitoring-grafana-prometheus</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/monitoring-grafana-prometheus</guid>
            <pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Grafana and Prometheus are the standard duo for server monitoring. This article shows how to set them up, which metrics matter, and how to get automatic notifications for critical conditions.]]></description>
                                    <category>devops</category>
                        <category>monitoring</category>
                        <category>server</category>
                                </item>
                <item>
            <title>Docker-based Development Environments with DDEV</title>
            <link>https://www.wunner-software.de/en/blog/docker-development-environment</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/docker-development-environment</guid>
            <pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Why I rely on DDEV for local PHP development and how to set up a complete development environment in minutes.]]></description>
                                    <category>devops</category>
                        <category>docker</category>
                        <category>tooling</category>
                                </item>
                <item>
            <title>Bun as a Node.js Replacement: Faster, Simpler, Compatible?</title>
            <link>https://www.wunner-software.de/en/blog/bun-nodejs-replacement</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/bun-nodejs-replacement</guid>
            <pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Bun is a new JavaScript runtime that claims to be faster than Node.js, with a built-in package manager, test runner, and bundler. What can Bun actually do, and when does switching make sense?]]></description>
                                    <category>javascript</category>
                        <category>tools</category>
                                </item>
                <item>
            <title>Symfony Messenger in Production: systemd Service, RabbitMQ and nginx HTTP/2 Push</title>
            <link>https://www.wunner-software.de/en/blog/symfony-messenger</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/symfony-messenger</guid>
            <pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[From local development to production-ready setup: How to run Symfony Messenger with RabbitMQ, a custom systemd service and nginx HTTP/2 server push.]]></description>
                                    <category>symfony</category>
                        <category>php</category>
                        <category>architektur</category>
                        <category>devops</category>
                                </item>
                <item>
            <title>Git Hooks and Husky: Automatically Enforcing Code Quality</title>
            <link>https://www.wunner-software.de/en/blog/git-hooks-husky</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/git-hooks-husky</guid>
            <pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Git hooks automatically execute scripts — e.g., before a commit is created. With Husky, lint-staged, and PHP CS Fixer, you can ensure only clean code enters the repository.]]></description>
                                    <category>git</category>
                        <category>devops</category>
                                </item>
                <item>
            <title>Renovate Bot: Automatic Dependency Updates for PHP and JavaScript</title>
            <link>https://www.wunner-software.de/en/blog/renovate-bot</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/renovate-bot</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Outdated dependencies are a security risk. Renovate Bot automates updating composer.json, package.json, and more — with configurable auto-merge rules and grouping strategies.]]></description>
                                    <category>devops</category>
                        <category>tools</category>
                                </item>
                <item>
            <title>C# LINQ for Database Queries: Comparison with Doctrine DQL and Entity Framework Core</title>
            <link>https://www.wunner-software.de/en/blog/csharp-linq</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/csharp-linq</guid>
            <pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[LINQ (Language Integrated Query) enables type-safe database queries directly in C#. Combined with Entity Framework Core, it&#039;s the Symfony Doctrine equivalent in the .NET world. This article shows parallels and differences.]]></description>
                                    <category>csharp</category>
                        <category>dotnet</category>
                                </item>
                <item>
            <title>ASP.NET Core Minimal APIs: REST APIs Without Controllers</title>
            <link>https://www.wunner-software.de/en/blog/aspnet-core-minimal-apis</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/aspnet-core-minimal-apis</guid>
            <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[ASP.NET Core Minimal APIs enable REST APIs with minimal boilerplate — no controllers, no attribute decoration. Ideal for microservices and for PHP developers exploring C#.]]></description>
                                    <category>csharp</category>
                        <category>dotnet</category>
                        <category>api</category>
                                </item>
                <item>
            <title>Gradle vs. Maven: Which Build Tool for Java Projects?</title>
            <link>https://www.wunner-software.de/en/blog/gradle-vs-maven</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/gradle-vs-maven</guid>
            <pubDate>Mon, 18 Aug 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Maven and Gradle are the two dominant build tools in the Java ecosystem. Maven is declarative and convention-based, Gradle is programmatic and flexible. This article clarifies which tool is better suited for which scenario.]]></description>
                                    <category>java</category>
                        <category>build-tools</category>
                                </item>
                <item>
            <title>Java Records, Pattern Matching, and Sealed Classes: Modern Java Features</title>
            <link>https://www.wunner-software.de/en/blog/java-records-pattern-matching</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/java-records-pattern-matching</guid>
            <pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Java Records, Pattern Matching for switch, and Sealed Classes are the key features of recent Java LTS versions. They make Java code more concise and type-safe — similar to PHP 8.x enums and readonly properties.]]></description>
                                    <category>java</category>
                                </item>
                <item>
            <title>Spring Boot for PHP Developers: Parallels to Symfony and Your First REST API</title>
            <link>https://www.wunner-software.de/en/blog/spring-boot-for-php-developers</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/spring-boot-for-php-developers</guid>
            <pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[If you know Symfony, you&#039;ll feel at home in Spring Boot. Dependency injection, annotations, REST controllers, and database access — the concepts are familiar, only the syntax is Java. This article shows the direct parallels.]]></description>
                                    <category>java</category>
                        <category>spring-boot</category>
                                </item>
                <item>
            <title>Shopware 6 Theme Development: SCSS, Twig Overrides, and Storefront Customizations</title>
            <link>https://www.wunner-software.de/en/blog/shopware-theme-development</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-theme-development</guid>
            <pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Shopware 6 themes are built on Bootstrap 5 with a clever Twig override system. This article explains how to build custom themes, SCSS customization, and the most important Storefront extension points.]]></description>
                                    <category>shopware</category>
                        <category>frontend</category>
                        <category>scss</category>
                                </item>
                <item>
            <title>Shopware 6 Performance Tuning: Getting the Most Out of Elasticsearch, Redis, and HTTP Cache</title>
            <link>https://www.wunner-software.de/en/blog/shopware-performance-tuning</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-performance-tuning</guid>
            <pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Shopware 6 offers three powerful performance tools: Elasticsearch, Redis, and HTTP Cache. This article shows how to configure them correctly and what pitfalls to avoid.]]></description>
                                    <category>shopware</category>
                        <category>performance</category>
                                </item>
                <item>
            <title>Shopware 6 App System vs. Plugin: What&#039;s the Difference and Which Should You Use?</title>
            <link>https://www.wunner-software.de/en/blog/shopware-app-vs-plugin</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-app-vs-plugin</guid>
            <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Shopware 6 offers two extension models: the classic plugin (PHP code in the shop process) and the new app system (external services via webhook). This post explains the differences and helps you decide which to use.]]></description>
                                    <category>shopware</category>
                        <category>architektur</category>
                                </item>
                <item>
            <title>Shopware 6 Flow Builder: Automating Business Processes Without Code</title>
            <link>https://www.wunner-software.de/en/blog/shopware-flow-builder</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-flow-builder</guid>
            <pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[The Shopware 6 Flow Builder enables automating business processes via drag &amp; drop — from email notifications to tagging. Custom flow actions via plugins make the system infinitely extensible.]]></description>
                                    <category>shopware</category>
                                </item>
                <item>
            <title>Shopware 6: Custom Entities with the Data Abstraction Layer (DAL)</title>
            <link>https://www.wunner-software.de/en/blog/shopware-custom-entity</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/shopware-custom-entity</guid>
            <pubDate>Tue, 08 Apr 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Shopware 6 uses its own Data Abstraction Layer (DAL) instead of Doctrine ORM, allowing plugins to extend existing entities at runtime. This post shows how to create custom entities, define associations and use entity extensions.]]></description>
                                    <category>shopware</category>
                        <category>php</category>
                                </item>
                <item>
            <title>Symfony Rate Limiter: API Throttling with Token Bucket and Fixed Window</title>
            <link>https://www.wunner-software.de/en/blog/symfony-rate-limiter</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/symfony-rate-limiter</guid>
            <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[The Symfony Rate Limiter protects APIs and endpoints from overload and abuse. This post explains token bucket, fixed window and sliding window — with concrete examples for login protection and API throttling.]]></description>
                                    <category>symfony</category>
                        <category>api</category>
                        <category>sicherheit</category>
                                </item>
                <item>
            <title>PHP 8.4 in Practice: Property Hooks, Asymmetric Visibility and More</title>
            <link>https://www.wunner-software.de/en/blog/php-84-new-features</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/php-84-new-features</guid>
            <pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[PHP 8.4 introduces property hooks for computed properties, asymmetric visibility for controlled write access, and new array functions. This article shows how to put these features to practical use in real projects.]]></description>
                                    <category>php</category>
                                </item>
                <item>
            <title>Doctrine ORM: Detecting and Solving the N+1 Problem</title>
            <link>https://www.wunner-software.de/en/blog/doctrine-n-plus-1-problem</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/doctrine-n-plus-1-problem</guid>
            <pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[The N+1 problem is the most common performance anti-pattern in Doctrine projects. This post explains how it occurs, how to detect it, and how to solve it efficiently with join fetching, batch loading and QueryBuilder.]]></description>
                                    <category>php</category>
                        <category>doctrine</category>
                        <category>performance</category>
                                </item>
                <item>
            <title>Live Validation with Symfony and HTMX</title>
            <link>https://www.wunner-software.de/en/blog/symfony-htmx-live-validation</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/symfony-htmx-live-validation</guid>
            <pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[HTMX enables live validation of Symfony forms without a JavaScript framework. Fields are validated server-side on blur and the result is embedded directly into the page — progressive enhancement at its best.]]></description>
                                    <category>symfony</category>
                        <category>htmx</category>
                        <category>frontend</category>
                                </item>
                <item>
            <title>Symfony 7 Upgrade Guide: Migrating from Symfony 6 to 7</title>
            <link>https://www.wunner-software.de/en/blog/symfony-7-upgrade-guide</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/symfony-7-upgrade-guide</guid>
            <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Symfony 7 requires PHP 8.2 as a minimum, removes deprecated features and introduces new ones. This guide walks through migrating a Symfony 6 project to version 7 step by step.]]></description>
                                    <category>symfony</category>
                        <category>php</category>
                        <category>migration</category>
                                </item>
                <item>
            <title>Welcome to My New Blog</title>
            <link>https://www.wunner-software.de/en/blog/welcome-to-my-new-blog</link>
            <guid isPermaLink="true">https://www.wunner-software.de/en/blog/welcome-to-my-new-blog</guid>
            <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
            <description><![CDATA[Who is behind Wunner Software? 14 years of web development, two stints as an employee at former clients, a hobby as a DJ streamer and a Hetzner server running openSUSE. A personal introduction.]]></description>
                                    <category>webentwicklung</category>
                        <category>karriere</category>
                        <category>linux</category>
                        <category>dj</category>
                                </item>
            </channel>
</rss>
