Herzlich willkommen auf meiner Webseite. Ich schreibe hier über Open Source Software, mit der ich bei meiner Arbeit oder Privat zu tun habe, selbst Programmiertes wie zum Beispiel Processing.org Spielereien und weiteres mehr. Entsprechend sind die Beiträge wild durcheinander. Bitte die "Themen" auf der linken Seite verwenden wenn dich nur ein Bereich interessiert.

Hi and welcome on my website. I write about Open Source Tools that I get in contact with, either at work or privatly and about stuff I program myself, for example some Processing.org Applications and more. The content is mixed in topics and languages. Please use the "Themen" menu on the left if you want to filter for specific content.

Doctrine and Generated Columns

Using a smart SQL query with subqueries, we reduced the time to build a data export by a factor of (at least) 50. On the development system with little data, we got from the response from 11 seconds to about 0.25 seconds.

To make this possible, we had to use a generated column to be able to create an index on a field inside a JSON column. Doctrine does not know Generated Columns, so we had to hide the column and index from the Doctrine Schema Generator.

PSR-18: Abstracting HTTP clients in PHP

Conference: PHP Benelux 2019, Antwerp, Belgium
Title: PSR-18: Abstracting HTTP clients in PHP
Links: slides, demo

PSR-18 defines how to send PSR-7 requests without binding your code to a specific client implementation. This is particularly interesting for reusable libraries that need to send HTTP requests but don’t care about specific client implementations.

Going crazy with Varnish: Caching pages of logged in users

Conference: Symfony Con 2018, Lisbon, Portugal
Title: Going crazy with Varnish: Caching pages of logged in users
Links: slides

You know how HTTP caching works but need more? In this talk we look into ways to cache personalized content. We will look at Edge Side Includes (ESI) to tailor caching rules of fragments, and at the user context concept to differentiate caches not by individual user but by permission groups. A big help to leverage this concept is the FOSHttpCache in combination with either Varnish or the Symfony HttpCache reverse proxy.

Bash pour les devs PHP

Conference: Forum PHP 2018, Paris, France
Title: Bash pour les développeurs et développeuses PHP
Links: slides

HTTP Caching with Varnish

Conference: PHP Romania 2018, Cluj, Romania
Title: HTTP Caching with Varnish
Links: slides

With the Varnish caching proxy you can make websites blazingly fast, while also handling a lot more load. The key is to understand how cache handling in HTTP works. We will also look at concepts like cache invalidation and cache tagging, as well as advanced concepts like Edge Side Includes (ESI). A lot of this talk is applicable regardless of the programming language of your backend. Examples will use the PHP library FOSHttpCache and sometimes the Symfony FOSHttpCacheBundle.

Beyond REST maturity levels: Insights from building a real life, high-load REST API

Conference: PHP Benelux 2018, Antwerp, Belgium
Title: Beyond REST maturity levels: Insights from building a real life, high-load REST API
Links: slides

Implementing a REST API is not only about designing correct resource URLs. I will talk about the software and system engineering part it takes to build a data API. I will show concrete examples from a project where we gather data from dozens of different services and systems and build a real-time capable data store. The main technology stack is Symfony, Elasticsearch and Varnish.

Workshop: Debugging PHP Applications

Conference: PHP Benelux 2018, Antwerp, Belgium
Title: Debugging PHP Applications
Links: joind.in
Format: 3 hours interactive workshop.

Sooner or later, an application will have errors. Some of them will be your fault, or that of a teammate. Others stem from third party libraries you are using. We want to be able to locate the cause of the error as quickly as possible. In this workshop, we will do exercises that will help you debug your applications more efficiently as well as writing them in a way that they get easier to debug.

We will look at the following topics:

- reading stack traces
- how to search through the code base
- writing good exception messages

Decoupling an application with message queues

Conference: Symfony Con 2017, Cluj, Romania
Title: Decoupling an application with message queues
Links: slides, joind.in

Quick response times are crucial. Time consuming tasks triggered in web requests should be executed asynchronously, if at all possible. In this talk I will give a short overview of what message queues are and then show a case study how we split up an application into smaller services and how we use message queues to coordinate the services.

Hands-on: HTTP caching with Varnish

Conference: Web Summer Camp 2017, Rovinj, Croatia
Title: Hands-on: HTTP caching with Varnish
Links: slides
This workshop was held together with Hrvoje Knežević

Syndicate content