warning: Creating default object from empty value in /var/drupal/modules/taxonomy/ on line 33.

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.

Workshop: Debugging PHP Applications

Conference: PHP Benelux 2018, Antwerp, Belgium
Title: Debugging PHP Applications
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

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ć

Web Summer Camp Croatia: Writing API clients with HTTPlug

Conference: Web Summer Camp, Croatia
Title: Writing API clients with HTTPlug
Links: slides, tutorial repository
Co-Presenter: Márk Sági-Kazár

This was a 3 hour tutorial with many exercises the participants could do.

Open PHP stack trace links in PhpStorm

Inspired by a tweet from Wouter, i wanted to configure my setup to open stacktrace links directly in PhpStorm. Turned out there was more involved than i thought at first. Documentation is sparse and confusing, so i want to record the steps i needed here. Basically you need to configure xdebug.file_link_format and make your system handle a new protocol. Its less complicated than it sounds:

Configure XDebug

Just configure the xdebug extension in your php.ini to set
xdebug.file_link_format = pstorm://%f:%l

Webmardi Fribourg: Introduction to Symfony2

Conference: Webmardi Fribourg, 3.7.2012
Title: Symfony2 - Powerful and flexible web application framework in state of the art PHP
Links: Slides

Symfony2 introduction. Followed by a Liip techtalk a week later aimed at people knowing Symfony2 a bit, focussing on using the various Symfony2 components standalone.

Symfony Live Paris 2012: Agile and Symfony

Conference: Symfony Live Paris 2012
Title: Agile and Symfony
Links: Slides,

In this talk I share our experiences at Liip with agile development in Symfony2. I focus on technical aspects of agility that will be helpful whether you use Scrum, Kanban or some other agile process. Agility is not limited to program code, there are also ways to handle data model changes. I will talk about our take on unit and functional tests with the WebTestCase, about the Doctrine Migrations project and automated deployment.

Additionally, I did a lightning talk about Symfony CMF dynamic routing during this conference.

phpDay Italy 2012: Step By Step: Making a website fly with Assetic, Varnish and ESI

Conference: phpDay Italy 2012
Title: Step By Step: Making a website fly with Assetic, Varnish and ESI
Links: Slides,

Starting with a demo web site that is not optimized, i will demonstrate step by step how the user experience can be improved. Improving the speed the end user experiences in his browser is more than writing efficient code. The goal is to reduce the time between the initial request and the moment the browser actually shows something. I will show how to improve javascript and css loading and how to use the caching proxy Varnish. With Edge Side Includes (ESI) it can even cache partly personalized pages.

One Konferenz Zürich: Web-Massenware der Zukunft

My first talk in swiss german ever - on popular request :-)

Conference: One Konferenz Zürich, 9.5.2012
Title: Web-Massenware der Zukunft die heute schon eingesetzt werden kann (together with Gerhard Andrey and Christian Stocker)
Links: Slides

I presented the PHP content repository as one of the things that should become available more and more easily in the future.

Syndicate content