Skip to main content

Latest Articles

Taming the XML beast!

Imagine a world ... in which you didn't have to deal with all PHP's strange XML quirks. The people following me on Twitter might have noticed that I don't like the XML tools that PHP currently provides. My main frustrations with the built-in tools can be divided in 2 big items: The lack of error handling and the bloated APIs.

Read on ...

07 Feb 2021 | Comments | Tags: XML PHP

Run composer tasks in parallel

Composer has a built-in way of running multiple composer scripts by declaring a script alias. This alias runs all specified scripts one by one and fails if one of the scripts fails. To save you some time, I've written the veewee/composer-run-parallel plugin that can run multiple composer scripts in parallel and won't stop before all tasks have been executed.

Read on ...

02 Dec 2020 | Comments | Tags: composer parallel

Let GrumPHP fix your code!

One of the most requested features is the ability to automatically fix broken code. Since previously we could not do this in a controlled an safe way, we decided that this won't be a GrumPHP feature. In the new GrumPHP version (0.19.0), we rewrote the task runner system. Now it is possible to do these kind of code manipulations. Let's see how it works...

Read on ...

07 Jun 2020 | Comments | Tags: grumphp

Running GrumPHP tasks in parallel

Last week, we launched a new version of GrumPHP. One of the main new features inside this release is the ability to run your tasks in parallel. This feature will save you a lot of waiting, both during pre-commit and on the CI environments!

Read on ...

06 Jun 2020 | Comments | Tags: grumphp parallel

Optimizing PHP performance by using fully-qualified function calls

Today, a little conversation on Twitter escalated rather quickly. Apparently PHP runs function calls differently depending on namespaced or non namespaced context. When calling functions in a namespaced context, additional actions are triggered in PHP which result in slower execution. In this article, I'll explain what happens and how you can speed up your application.

Read on ...

21 Dec 2016 | Comments | Tags: php performance

Writing your first NodeJS Lambda function

Last week I was playing around with writing some custom Slack slashcommands and cronjobs. Originally, I started writing these integrations with PHP. Since slack requires a publically available endpoint and I did not want to set up a server for these scripts, I decided to take a look at AWS Lambda. This Amazon service makes it possible to run scripts serverless. The scripts are triggered based on triggers inside of AWS. In this artile you can find out how to get started with writing lambda functions.

Read on ...

30 Jul 2016 | Comments | Tags: nodejs lambda serverless

GrumPHP approves Bitbucket Pipelines!

Today, my invitation for Bitbucket Pipelines Beta got accepted! For those who haven't heard about it: Pipelines is a Continuous Delivery tool integrated in Bitbucket. When you push your changes to your Bitbucket repository, it will spin up a Docker container and run the actions you specify. I was quite exited about the concept and immediately started to set up an automated test scenario with GrumPHP.

Read on ...

15 Jun 2016 | Comments | Tags: php grumphp docker

Authenticating with X.509 client certificates

Last week, I was diving in different authentication systems for API's. One of the better ways of authentication is through X.509 client certificates. This one is a bit is harder to set-up, but sure is secure, manageable and powerful. While searching for documentation on the subject, I was surprised there weren't a lot of good articles. In this article, I will try to explain every step as easy as possible.

Read on ...

07 Dec 2015 | Comments | Tags: ssl authentication symfony php

Hijacking your code with streams

Lately, you might have noticed that streams are getting more important in the PHP scene. They are for example widely used in PSR-7 and implemented in Diactoros. Yesterday I was scrolling down the issues list of phpspec and bumped in on a pull request. This pull request shows that it is possible to convert code in-memory and later require the modified content to be executed. Wow, that is awesome! Let's take a look at it.

Read on ...

26 Oct 2015 | Comments | Tags: php streams

Replacing service dependencies with proxies

When using the Zend Framework 2 service manager, it is possible to create shared services that will be loaded only once. In some situations however, it is very hard to switch the already injected dependencies in this service. You could mark the service as unshared even if this is often unnecessary. Another solution is to wrap the service with a proxy object and use the proxy instead of the service.

Read on ...

11 Oct 2014 | Comments | Tags: zf2 proxy doctrine

Generating ZF2 template maps on the fly

One of the performance boosters in Zend Framework 2 is using template_map instead of template_path_stack in the view manager. While developing, it is easier to use the stack. This is because you don't have to add a mapping every time you create a new view. At the end of the development you might forget to transform the stack into a template map. This is why it is useful to never use the stack and automate the generation of the template_map array instead.

Read on ...

19 Aug 2014 | Comments | Tags: grunt zf2

Writing your first Grunt plugin

For one of my projects, I needed a tool to list all used translations keys from a PHP project. Because I want to keep the translation database clean, I decided to create a Grunt plugin. There was one big problem... How do you create this plugin? So I started to read the documentation, blog posts, etc. and noticed that the documentation was pretty confusing. Let me take you on a tour through my first plugin.

Read on ...

27 Apr 2014 | Comments | Tags: grunt plugin

Three-way data binding in AngularJS

One of the cool features in AngularJS is the two-way data binding. When you change a property of an object, the value is instantly changed in every view or service that is using this property. A while ago, I saw a video about the combination of AngularJS and Firebase. This combination makes it possible to create three-way data binding in AngularJS.

Read on ...

06 Apr 2014 | Comments | Tags: angular firebase angularfire

PHPBenelux 2014

Last weekend, the annual PHPBenelux conference took place. With a small delegation of the phpro crew, I went to Kontich for 2 days filled with talks, fun and pleasure. In this article you can find a small summary of the talks that inspired me.

Read on ...

27 Jan 2014 | Comments | Tags: conference php php-benelux

Validating your PHP code on the fly

It's amazing how much time you can loose while running PHP tests. First you alter your code or test. Next you start your test and wait for it to finish. Finally you find out you messed up and start the process all over again. In this article I am going to show you how to automate PHP testing, so you can focus on adding business value to your application.

Read on ...

21 Jan 2014 | Comments | Tags: grunt phpspec zf2 php

Grand Opening!

With a new year, come some new resolutions. I was already thinking of creating a blog for quite some time, but the new year forced me to finally get this site up and running. So why did I start this blog? Not to tell you who I am, but to inform you about some cool stuff I encounter during the development of web applications.

Read on ...

14 Jan 2014 | Comments | Tags: blog jekyll yeoman grunt

whois VeeWee


Hi there!

Glad you made it to my blog. Please feel free to take a look around. You will find some interesting stuff, mostly about web development and PHP.

Still can't get enough of me? Quick! Take a look at my Speakerdeck, Twitter or Github account.