Prometheus Service Discovery using Puppet

In this blog post I would like to share how we use some neat Puppet features and modules to install Prometheus and to let it automagically discover the services it should monitor. Introduction At Moxio we prefer to work smart instead of hard since there’s more to life than just work. We also really value […]

Mutation testing in PHP

Recently I spent an afternoon experimenting with mutation testing in PHP. In this post I would like to share the background, the main idea of mutation testing, and the lessons I’ve learned from it. Moxio Academy At Moxio we regularly schedule a Moxio Academy session. That means we put our normal work aside for an […]

Creating a design system – from project to process

When we started building a design system we approached it as a project, but as we all know a design system should be always evolving. Therefore it would be a never-ending project. And a never ending project.. that’s something nobody really wants. In this blog I will share how we started our design system as […]

Finding memory issues in PHP programs – Part 2

The cause of a memory issue is often hard to find. In the previous post, we looked at two methods for finding the culprits of a memory issue. In case you missed it, check it out! In this post, we will look at another tool for finding memory leaks: php-memprof, created by Arnaud Le Blanc. […]

Your design system is up and running – what’s next?

Big steps have been made since we first started with our design system project. It has become a well-oiled process and everyone is familiar with the tool. We were curious to know how the rest of the team felt about working with it. Time for some internal research! Through a series of interviews, card sorting sessions […]

Best practices for PHP exception handling

Handling errors or other non-‘happy path’ situations is essential when creating robust PHP applications. While errors were the main construct to do so in PHP 4, exceptions have been around since PHP 5. They should nowadays be considered the main mechanism for handling alternative or exceptional paths. It seems that these alternative paths still don’t […]

Finding memory issues in PHP programs – Part 1

“Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 528384 bytes).” If this error sounds familiar, this post is for you. The problem with this message is that it does not tell you a lot: it does not tell you where all the memory was allocated. Locating the places where a lot […]

Start testing with PHPT tests in PHPUnit

Over the years, automated testing has become an established practice in software development. It thus has also become an essential skill to learn for any developer. In the past few months, I have talked to several developers who had recently started with testing in PHP. Some of them expressed they found their testing framework of […]

Quality control tools for front-end development

A couple of months ago, inspired by our PHP_Codesniffer sniffs, which helps our back-end programmers adhere to a certain code-style but also find potential bugs, and with the development of our design system around the corner, I had a look at what options we had to improve our front-end code-style. In this article I will […]

Moving individual MySQL tables on disk

Update 19-01-2019: We originally performed this table migration process using MariaDB (version 10.1) rather than ‘vanilla’ MySQL. The same steps should work for MySQL. However, due to an open bug (bug report) they currently fail on the IMPORT TABLESPACE step. Until that bug is fixed, one can use the workaround with a temporary symlink as described […]