Skip to content

Blog

Insights into my everyday programming life and other interesting technical tidbits

March 2025

Published on Mar 25, 2025 · approx. 2 min read

Symfony Rate Limiter: API Throttling with Token Bucket and Fixed Window

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.

Read More →
Published on Mar 10, 2025 · approx. 1 min read

PHP 8.4 in Practice: Property Hooks, Asymmetric Visibility and More

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.

php
Read More →

February 2025

Published on Feb 20, 2025 · approx. 1 min read

Doctrine ORM: Detecting and Solving the N+1 Problem

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.

Read More →
Published on Feb 5, 2025 · approx. 1 min read

Live Validation with Symfony and HTMX

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.

Read More →

January 2025

Published on Jan 15, 2025 · approx. 2 min read

Symfony 7 Upgrade Guide: Migrating from Symfony 6 to 7

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.

Read More →
Published on Jan 1, 2025 · approx. 4 min read

Welcome to My New Blog

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.

Read More →