PHPBenelux Conference 2017 is an annual PHP oriented conference in Antwerp, Belgium. We offer two days of stellar tutorials and talks, epic social events and a lineup of the best local and international businesses involved with PHP.

Friday 27th January 2017

09:00 Browser Testing Wizardry with Codeception
Workshop by Michael Bodnarchuk in Tutorial room (3 hours, 30 minutes)

How would you test UI of a complex website? A real user experience. For this to make we will need to write automation scenarios for browser. This can be done with Selenium + PHPUnit or Behat or Codeception. But that’s just the beginning of a journey! Come to this tutorial to learn about: using WebDriver module of Codeception for acceptance testing dealing with asynchonous nature of JavaScript in browser using Codeception Recorder extension to debug a test step by step working with Selenium Webdriver API using facebook/php-webdriver library testing Single Page Applications different ways to run browser testing on a CI server and parallel testing

Tactical DDD (just better OOP?)
Workshop by Matthias Noback in Tutorial room (3 hours, 30 minutes)

A deep dive into the technical building blocks of your domain model… We’ll cover Domain-Driven Design patterns like entities, value objects, repositories and domain events. Besides the basics, we’ll cover in detail different guidelines for modelling your aggregates. All of this is called ‘tactical DDD’ and it might just turn out to be about the fundamentals of object-oriented programming too! This workshop will lead you straight to the core of programming and ways in which you can improve your applications in general.

Basic CQRS and Event Sourcing with Prooph
Workshop by Marco Pivetta in Tutorial room (3 hours, 30 minutes)

CQRS and Event Sourcing are challenging if approached for the first time, and especially if done from scratch. We help you installing, configuring and getting Prooph to run. We’ll build a fairly simple event-sourced aggregate in order for you to understand how to organize things inside CQRS/ES stack, and how to massively simplify some problems that usually cause very big performance issues when put at scale.

My app is secure... I think
Workshop by Wim Godden in Tutorial room (3 hours, 30 minutes)

With more and more sites falling victim to data theft, you’ve probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we’ll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We’ll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.

Diving Into Symfony3
Workshop by Andreas Hucks in Tutorial room (3 hours, 30 minutes)

While Symfony is a modern full-stack framework that powers many high-profile sites today, it is also a collection of components. Let’s see how Symfony is used stand alone and take a look at the most common features you will use. We’ll also see how the basic components at Symfony’s core are designed, and what they do for other open source projects, and what they can do for your legacy code.

PHP 7 Compliance Workshop
Workshop by Damien Seguy in Tutorial room (3 hours, 30 minutes)

When migrating, we often need to review old code and target only interesting issues. This session will connect the backward incompatibilities and new features to actual location in the code, relying on static analysis to process a large code base quickly. Based on the accumulated experience of the tools, we will review the issues, diagnose criticality, select the best fixes, and prioritize tasks. All tools used will be open source, and you can try them at home for more validation.

Learn To Test Like A Grumpy Programmer
Workshop by Chris Hartjes in Tutorial room (3 hours, 30 minutes)

In the middle of Web 3.0 it’s become obvious that a very large percentage of developers are aware that there are tools available that allow them to write automated tests for the code they write. But you don’t write tests. Never have. You feel a little bad about it but you tell yourself that it looks really tough to get into and you have a hard deadline that doesn’t have any time for you to learn to use these tools. What if you could learn how to write tests from someone who has been using them for a long time and also knows how to explain it in a way that cuts down on the fear and anxiety while teaching you what you need to go to get started immediately? That’s what Chris Hartjes, long-time PHP testing evangelist, wants to do for you. In this workshop Chris starts you off from the point of never having written a unit test and guides you through what tests really are. Then he will show you PHPUnit works and what features are the ones you really need to know. Next you will walk through using Test Driven Development using some code katas and leave with a solid, practical foundation that you can take back to your regular job and actually use. Testing your code is hard and might require you to relearn some closely-held practices. Let a grumpy programmer fix that for you!

Burnout your keyboard - get out the most of PhpStorm
Workshop by Emii Khaos in Tutorial room (3 hours, 30 minutes)

PhpStorm is a great and almighty IDE. It has plenty of features and plugins, but if you don’t get familiar with all the shortcuts and features it will slow you down. This workshop I will demonstrate you all the useful shortcuts, how you create new live templates which saves you plenty of keystrokes, encourage you to use good settings and how you share them in your team and recommend you the best plugins. After the workshop you should definitely feel a productivity boost working with PhpStorm and be able to concentrate on your code and not hassle with the IDE anymore.

Tutorial lunch
Social Event by PHPBenelux in Social area (30 minutes)

Lunch for tutorial ticket owners

Welcome & Introduction
Social Event by PHPBenelux in A (10 minutes)

Practical info from your crew

Using Open Source for Fun and Profit
Keynote by Gary Hockin in A (1 hour)

10 years ago I was a lonely developer sitting in a small room quietly turning out code between 9am and 5pm, Monday to Friday. Fast-forward to now and you’ll see me standing in front of audiences all around the world talking to developers about numerous topics.”Why are you bragging like that at me?” I hear you ask. Because it could happen to you too. The question I always ask myself is “How the hell did that happen?!?!”. The truth is that the only reason I’ve managed to advance my career so far in a decade is because of the people that make up the communities of open source projects. Not only do open source projects save you time and money, but the friendships and support groups that can be made within these communities is, frankly, staggering. Join me as I chart my journey from wage slave to conference speaker, and look at how you can leverage the power of open source to make real friends, real money, and real happiness.

14:40 Dip Your Toes in the Sea of Security
Talk by James Titcumb in A (1 hour)

Security is an enormous topic, and it’s really, really complicated. If you’re not careful, you’ll find yourself vulnerable to any number of attacks which you definitely don’t want to be on the receiving end of. This talk will give you just a taster of the vast array of things there is to know about security in modern web applications, such as writing secure PHP web applications and securing a Linux server. Whether you are writing anything beyond a basic brochure website, or even developing a complicated business web application, this talk will give you insights to some of the things you need to be aware of.

Debugging Your Set-Up
Talk by Derick Rethans in B (1 hour)

In this session we will look at low-level (Linux) system debugging tools to find out what is going on (or wrong!) with your PHP environment, although the techniques are also valid for other programs besides PHP. We will cover debugging crashes with gdb, checking out memory leaks with valgrind, and many other tools to find out what is going wrong, and hopefully, figure out why. This session teaches tools to help out with tracking down bugs, and provides information on how to get better at debugging connection issues, crashes, files not being written, etc. The session is also valuable for people who want to help out with providing good bug reports for Open Source projects.

Functional structures in PHP
Talk by Marcello Duarte in C (1 hour)

Back in the ’40s, Samuel Eilenberg and Saunders Mac Lane started developing an entire new branch of mathematics: Category Theory. This was 10 years after Lambda calculus and 10 years before Lisp. Mathematics offers a powerful and concise language; we can represent a lot of complexity with short equations like E=mc2. This session will explore how programming can harness maths’ capacity for conciseness and expression, borrowing from Category Theory. We’ll discover algebraic data types that can impact the way we code tremendously. You’ll also learn about functors, monads, applicatives, semigroups and monoids and how they can be used in a PHP context.

Friday afternoon break
Social Event by PHPBenelux in Social area (20 minutes)

A quick refreshment

Code Archaeology: Becoming Indiana Jones
Talk by Michael Heap in A (1 hour)

Code archaeology is one of the most important skills you’ll ever learn as a developer. How many times have you been thrown into projects with no environment setup, no documentation, and very little support from coworkers? Being able to quickly work out how an application is structured so that you can start making changes is a sought after skill for many employers. In this talk, we’ll take an open source project that we’ve never seen before and work through the steps required to get it up and running so that we can start working on features. Once you know the steps, they can be applied to any project in any language to get you contributing in no time.

Make Legacy great again!
Talk by Donatas Aleksandravičius in B (1 hour)

Working with legacy code is one of more important skills for a developer. But it’s frightening, messy, hard to untangle and basically “magic” all around. Though it doesn’t have to be this way! Let me show you how to start loving legacy and apply some tricks to make it a much greater experience for you and your fellow developers. With this talk I want to share my knowledge on how to start dealing with legacy, how to break less things and be more confident in changing it, how to embrace and start enjoying your adventure with legacy, examples and tips/tricks on how to deal with day to day situations and how to apply modern day principles on legacy code. This won’t be a silver bullet, but should put you on good track to start enjoying legacy code and reap nice fruits from it. This also won’t be a talk which spends more time explaining that principles and tests are good for you, I think we all know that and when hearing “legacy code” in the talk title developers expect more.. concrete and actionable help with their daily life.

Serving 30,000,000 Requests an Hour in the Cloud
Talk by Terrence Ryan in C (1 hour)

You’ve written an application and now the worst thing that can happen to you has come about – People are using it! You now have load spikes to deal with. You can scale up to deal with the excess traffic, but what do you do when your load is variable? How do you do that, and stay on budget? This session is a case study on getting an App Engine app to scale to serve 30,000,000 requests an hour. It will take you through the architecture, the code changes and the technology trade offs to get to that level of traffic.

Write history, keep a diary (Uncon)
Talk by Jachim Coudenys in Tutorial room (1 hour)

Nowadays developers, and others, have the habit to use Git or other version control systems when writing software. While the benefits of this are mostly seen by means of pull/merge requests, easy "undo" functionality, team collaboration and others, the real benefit is history. When did we change this piece of code, and more importantly: why? By using clever commit message and branch strategies, you can reconstruct the way your or your colleagues' brain was thinking a year ago! It will help you pinpoint the exact ticket where a client requested a specific change and by who it was sanctioned. Start keeping a diary today, and write history!

17:10 A recommendation engine in your PHP applications
Talk by Michele Orselli in A (1 hour)

Nowadays a lot of websites try to guess what we could like:\n”Recommendation for you in books”\n”People you may like”\nSounds familiar, isn’t it? Wouldn’t be cool if you could do the same in your application? Well, this session is for you! In the first part of this talk recommendation systems will be introduced, focusing on collaborative filtering algorithms (CR). After that we’ll dive in, an open source machine learning server for software developers to create predictive features, such as personalization, recommendation and content discovery. In the last part we’ll cover the integration details with a PHP application

How I (ab)used PHP with the help of ReactPHP
Talk by Stijn Vannieuwenhuyse in B (1 hour)

PHP is one of the most accessible and commonly used languages in computer programming. It’s used for building websites, web applications, micro services and loads of other stuff. Normally we would not use it to control hardware. But let that be the showcase of this talk. I’ll show you how I (ab)used PHP to control hardware used during track and field competitions. It involves LED-panels, serial-to-ethernet-­convertors and the use of reactphp, an event-driven non-blocking I/O library.

Elastic scaling in a (micro)service oriented architecture
Talk by Bastian Hofmann in C (1 hour)

Splitting an application up into multiple independent services can be a good way to keep it scaling and ensure stability and developer productivity in larger, growing teams. But just splitting the codebase, creating APIs and deploying the code on some servers is not enough, somehow your services need to know where and how other services are accessible. Classical approaches like hardcoding everything in every service or having a central load-balancer can quickly lead to problems in terms of scalability and maintainability. In this talk I’ll show how we at ResearchGate tackled this challenge. With the help of tools like Consul and haproxy we created a setup that allows us to quickly boot and shutdown services. This ensures that all servers are utilized optimally and load spikes can be reacted upon quickly and automatically.

Creating a realtime dashboard with PHP and websockets (Uncon)
Talk by Freek Van der Herten in Tutorial room (50 minutes)

On the wall mounted TV in our office a dashboard is displayed. At a glance we can see what the current tasks for each member of our team are, which important events are coming up, which music is playing, if it will rain in the next 30 minutes, ... and much more. In this talk I'll explain how we leveraged both Laravel and Vue to build the dashboard. After demonstrating the dashboard itself we'll take a deep dive in the code. We'll take a look at the entire flow: the grid system, broadcast events, the Pusher service, some cool Vue mixins and much more. After this talk you'll be able to setup a dashboard using our code available at

He's not the Messiah, he's a very naughty programmer!
Talk by Matt Cockayne in A (1 hour)

We’ve all been there at some point or another, a client walks into the room and demands… a shrubbery. And while nobody expects the Spanish Inquisition you can be sure that we will spend this talk taking a look at situations that will arise during your project life-cycle and find humorous ways to deal with them through the magic that is Python. And we don’t mean the programming language! We talk about how project managers will keep insisting that the parrot is still alive, why “Romanes eunt domus” is not the best name for a variable and that the Ministry of Silly (array) Walks should be founded ASAP. This is a humorous dig at the development life-cycle and shows how sometimes we can take things a bit too seriously. We should enjoy our jobs a lot more and how to manage our reactions when presented with some of the more frustrating parts of the job. With a tongue firmly in cheek and lots of clips from the best of Python we will end the session looking on the bright side of life.

Keep your users up-to-date in real-time with WebSockets!
Talk by Ondřej Mirtes in B (1 hour)

Live document collaboration, playing cooperative and competitive games, updating sports scores, booking seats. Stateless and belated nature of HTTP requests is not a perfect match for these and other similar use cases. WebSockets offer immediate delivery of messages in two-way communication between the client and the server. Instead of periodic polling for new messages, they are pushed to the receiver over TCP/IP connection. Implementing WebSockets is not limited to technologies like node.js but has also been possible in PHP for quite some time with impressive results. In this talk, I will introduce this technology and tell the audience how to successfully adopt it in their PHP applications while avoiding problems and pitfalls.

Python for PHP developers
Talk by Joshua Thijssen in C (1 hour)

A carpenter with only a hammer in its toolbox will always be a lousy carpenter, no matter how cool and awesome that hammer is. PHP is an awesome language to do a lot of cool things with but it should not be the only tool in your toolbox. And when it comes to other tools / languages in a PHP developer’s toolbox, Python is probably a very good choice. During this talk I will give a very quick introduction in the possibilities of Python from a PHP developer’s point of view: What is Python’s alternative for composer? Why are there only public properties and methods in Python classes, and is the world still spinning? And what kind of frameworks and tools are there in Python land? These and more questions we will discuss during the tour, and finally give you some idea’s on what you can do with Python (better).

How to start with Docker (Uncon) in Tutorial room (45 minutes)

Shows some tips & tricks on how to start with docker for php projects.

Friday evening social event
Social Event by PHPBenelux in Social area (20 minutes)

Time to mingle with likeminded folks and have some fun

Saturday 28th January 2017

09:00 Beyond patterns & principles - writing good OO code
Talk by Matthias Noback in A (1 hour)

Of course, you should read all you can about SOLID, Design patterns, Patterns of Enterprise Application Architecture, etc. Once you have a basic understanding of these topics you still have to write that code though, and write it well too! What is good code? Are there some guidelines, or rules of thumb, which you can follow while making your everyday coding decisions? In this talk I’ll cover many of these coding guidelines, which aren’t usually covered by patterns or principles books. They should help you write better code and give you a richer vocabulary for reviewing other people’s code. Some of the subjects that we’ll discuss are: state, mutability, CQS, one-method objects, domain-first, API-driven, functional programming influences, object boundaries, (de)serialization, and many more!

Expect the un-expected: How to handle errors gracefully
Talk by Bastian Hofmann in B (1 hour)

Even though you tested your application perfectly errors and bugs will still happen in production, especially if other services or databases go down or are under high load. Thus it is very important to see errors happing and to be able to react to them quickly. In this talk I’ll introduce you to efficient ways for monitoring and logging for errors and show how you can handle them if they happen, covering deployment strategies, using intelligent circuit breakers and gracefully reducing functionality.

The secrets of Cryptography
Talk by Christopher Riley in C (1 hour)

Alice and Bob have secrets they want to talk about without Eve being able to listen in. Worse yet, the mischievous Mallory delights in changing messages sent between parties. In such a hostile environment how can Alice talk to Bob without their messages being overheard and how can she be sure that it was Bob that sent the message in the first place? This talk will take a brief look at historic codes and ciphers before taking a look at modern day Cryptography. If you want to be able to know the difference between a block cipher and a stream cipher or get a glimpse into the mathematics behind public key Cryptography this talk is for you.

10:10 CQRS & event sourcing in the wild
Talk by Michiel Rook in A (1 hour)

CQRS & event sourcing are currently very popular topics in the PHP community, with good reason. However, most blogs and talks focus on the theory, simple applications or introductions to one of the frameworks currently available, not necessarily the challenges of using and maintaining it in production. This session bridges that gap and looks at some of the pitfalls of a real-world deployment. I’ll discuss topics like concurrency & scale, refactoring events and updating read models. Attend this talk to learn from my experiences and be better prepared when you face these challenges.

Divide and Conquer - Your Business Code and your Framework
Talk by Andreas Hucks in B (1 hour)

Separated layers are one of the fundamental principles of software design. Your framework is just the topmost layer, and your business code should not depend on it. While we will touch a few package design basics, the focus is on how to actually DO it: Expose the user accounts in your model to your framework without depending on it. Separate form input validation from entities. Isolate ORM-specific code in bridges. We’ll also take a look at Deptrac, a tool that helps you to to visualize and stick to that separation during your project’s lifetime.

Caching the right way, increase your application performance and validate it with profiling
Talk by André ®ømcke in C (1 hour)

Three part talk to show how to greatly increase the performance of your PHP application. First part cover cache topics such as invalidation technics, cache tagging, cache stamped protection and why the new Symfony Cache Component performs better than most other cache libraries. Second part expand to cover the world of advance Http caching techniques with Varnish including Vary, Grace, and cache tagging invalidation with cached stamping protection. Third part ties it all together by using different profiling tools like blackfire and JMeter to be able to verify that the changes you have done actually makes a differance.

Elastic Search & Spatial (Uncon)
Talk by Frederik Wouters in Tutorial room (45 minutes)

Elastic Search Spatial Introduction Slides: - Topics: - Indexing locations - Elasticsearch = Schemaless - Searching locations - Sorting locations (by distance) - Scoring locations (by distance) - Filtering locations (by distance) - De warmste week (DEMO) - dagelijkse kost (DEMO)

Saturday morning break
Social Event by PHPBenelux in Social area (20 minutes)

A quick refreshment

11:40 Going crazy with caching: Caching pages of logged in users
Talk by David Buchmann in A (1 hour)

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 class.

Extremely defensive PHP
Talk by Marco Pivetta in B (1 hour)

Resistant, highly testable, safe and maintainable code: or not? There are a thousand ways to break your code, and a lot of ways to prevent that from happening. Let’s explore defensive programming and learn how to protect our code from invalid usage.

Locate all the things
Talk by Derick Rethans in C (1 hour)

In this talk you will learn how to effectively store, retrieve and display geospatial data, such as roads, points of interests and more. First we will be importing an OpenStreetMap dataset covering London into MongoDB. This is not trivial due to the amount of data. After importing, we will look at which types of queries we can run to find things. Either by predicates, or with geospatial queries. And last we will have a look at how to display the data that we’ve requested, through a website using the Leaflet mapping library.

Laravel design patterns (Uncon)
Talk by Bobby Bouwman in Tutorial room (20 minutes)

Uncon Talk

Giving birth to an elePHPant (Uncon)
Talk by Mark Baker in Tutorial room (20 minutes)

Uncon talk

Social Event by PHPBenelux in Social area (1 hour)

All ticket owners

Time Management For Grumpy Programmers
Talk by Chris Hartjes in A (1 hour)

I don’t have enough time” is a cry that echoes across social media and online chat rooms. Work deadlines, family obligations, hobbies that don’t involve computers — they all are taking out chunks of the time we have available to us. But there is one immutable fact –we all have the same amount of time available, some of us just find different ways to use it. In this session learn how long-time grumpy programmer Chris Hartjes organizes and makes decisions about how to spend his time. Business owner, involved work-from-home parent, conference speaker, podcaster, collectable card game enthusiast – Chris does this all and more without feeling super-stressed about it. Was he born with this super power? Not at all. The talk will cover how Chris plans his life, his preferred tools, and strategies for figuring out what to do and when to do it. It is possible to get a lot done and not become a workaholic in the process. Sit back, relax, and let a grumpy programmer show you how to maximize your time.

Asynchronous processing with RabbitMQ
Talk by Ondřej Mirtes in B (1 hour)

Developers of modern web applications strive for fast response times and efficiency. One of the ways to achieve them is to postpone performing costly and potentially failing operations like sending an e-mail after the HTTP request is complete and the user has seen that his intended action has been successful. This is called asynchronous task processing. In the past it was usually achieved with periodically executed scripts by Cron. This solution requires inserting data about tasks into a persistent storage like a relational database and lock the data to prevent duplicate execution. Tasks are not performed instantly but within the next run of a script. It’s also not easy to scale task processing to multiple executors at the same time. This approach became popular because of limited capabilities of shared webhosts. But in the last years it has been more and more difficult to make excuses for preferring Cron over alternative approaches thanks to decreasing prices of VPSes. Message queues do not share the problems of Cron-executed scripts – they offer instant task processing and easy scalability. But at the same time this concept can be more difficult to grasp and creates new troubles in different areas – mainly deployment and integration into existing codebases. In this talk, I will dive into specifics, advantages and disadvantages of developing a web application with the help of RabbitMQ or a similar technology, and share everything we had to do to be able to produce and consume hundreds of thousands messages a day within a large legacy PHP codebase of an application that serves >200k daily visitors.

The true value of objects
Talk by Stijn Vannieuwenhuyse in C (1 hour)

Although the latest PHP versions provide us with enough types and keywords to enable object oriented development, the language itself is not truly object oriented. In pure object oriented languages, like Java, almost everything is an object. Even primitives have their object equivalent. Concepts that first look like simple values, can in fact be modelled as objects. This enables us to add a lot of behavior to them. These so called Value Objects make our code more readable, elegant, maintainable and dry. We will explore the possibilities and advantages of these Value Objects together, guided by some real world code samples.

Sprints, stories & other nonsense (Uncon)
Talk by Frank van de Brink in Tutorial room (20 minutes)

Uncon talk

GPG and the temple of doom (Uncon)
Talk by Dennis de Greef in Tutorial room (20 minutes)

Uncon talk

14:50 Connecting people - Identity in your platform
Talk by Rowan Merewood in A (1 hour)

Passwords are bad. We all know it, but we also know you’re not going to build a service that doesn’t use them – not if you like paying the rent. However, we can do a lot better. We’ll take a whirlwind tour through the aspects of connecting people to your service, from generating passwords, not using passwords at all, creating users with one tap, identity providers, automatic cross-device sign-in, and password managers. Sign-in should be simple.

PHP without frameworks
Talk by Patrick Allaert in B (1 hour)

What does Java, Python, Ruby,… have in common that PHP doesn’t? They are general purpose languages while PHP is primarily designed for web development! That said, it means you can use PHP as a framework, but should you? What are the consequences of going that way? In this session, we are going to investigate the building blocks of frameworks (Routing, MVC, Dependency Injection,…) leveraging features that PHP provides natively and how a project can be realised with PHP as the only framework while respecting principles like: “Don’t reinvent the wheel”, KISS, DRY, YAGNI, …

Caching with PSRs
Talk by Hannes Van De Vreken in C (1 hour)

In this talk you will learn what PSR-6 is, why it is designed like it is, and how to use it. From the provided interfaces, the virtual package on, to the implementations available. Everything will be explained for both beginners and more experienced developers. We will dive into implementations, cache stampede protection, all using libraries we can find on We will also show how to start using it today in our current applications by using adapters. The entire talk will be accompanied with code samples and live demos, showing both working and failing caching systems.

Code profiling with Xdebug and KCacheGrind (Uncon)
Talk by Robert Basic in Tutorial room (20 minutes)

Code profiling with Xdebug and KCacheGrind (Uncon) Learn how to use Xdebug and KCacheGrind to profile PHP applications to find and inspect performance issues.

GoPHPer - Introduction Go for PHP developers (Uncon)
Talk by Frederick Vanbrabant in Tutorial room (40 minutes)

Uncon talk

Saturday afternoon break
Social Event by PHPBenelux in Social area (20 minutes)

A quick refreshment

16:10 Bridging the designer-developer gap
Talk by Nicole Saidy in A (1 hour)

It’s no surprise that designers and developers tend to be separate teams. Designers are all about creativity and art; developers are about logic and effectiveness. Yet what we don’t realize is that both of them have one trait in common: to solve problems. Both have to work together to make their product work. Learn how to better communicate with designers through tips and tricks to help you see things from a designer’s perspective, for less headaches & a smarter workflow.

Kafka will get the message across, guaranteed.
Talk by David Zuelke in B (1 hour)

Apache Kafka is a special kind of message broker. It offers not only massive scalability and fault tolerance, but also a unique set of guarantees around message ordering and delivery, which is why it’s often described as a “distributed transaction log”. Its general-purpose nature has led to quick adoption by startups and major enterprises alike, as the capabilities it provides allow for a broad range of applications in modern system architectures. A key challenge in (micro-)service architectures is ensuring that individual components can communicate reliably, whether it is for guaranteed delivery of billing information, low latency in detection of security-related events, or high-bandwidth storage to an analytics environment. Kafka not only greatly simplifies these operations, it gives developers a chance to rethink the data flows between components and build powerful pipelines for information processing and interchange, moving messaging into the center of their architectures. This presentation will introduce the basic concepts and general architecture of Kafka, and then focus heavily on potential use cases both for systems and services that produce data, as well as for those that consume it – including ones written in PHP, of course!

The Stateful ElePHPant
Talk by Rick Kuipers in C (1 hour)

State machines and the state pattern seem to be pretty underestimated in the PHP world. Most examples found are of doors and other objects that have no application in most of our projects. Starting the talk I will be explaining what the state pattern is and how it’s used in a game. Then we’ll be discovering what this can do for us in the world of web applications. Following that we’re taking a brief look at the state machine, how it’s different from the pattern and why it’s useful to us. Instead of simply presenting you these concepts I prefer showing practical examples so you can see theory put to practice. You will be walking away from this talk with a solid understanding of the state pattern/state machine and the knowledge on when you should apply these concepts.

Testing your API with Apiary and Dredd (Uncon)
Talk by Dries Vints in Tutorial room (30 minutes)

In this short demo I'm going to show you how you can set up a basic specification with API Blueprint and validate that specification against your API using Dredd & Apiary

Voodoo PHP (Uncon)
Talk by Marco Pivetta in Tutorial room (30 minutes)

Uncon talk

Saturday evening social
Social Event by PHPBenelux in Social area (5 hour)

Time to mingle with likeminded folks and have some fun