Detailed overview

Abstraction, Encapsulation, Polymorphism, and Interfaces: whether you’ve been programming in PHP for years or are just starting your journey, these terms can be overwhelming. Not only that, people that already understand it act like it’s so easy and they talk right over the simple questions and never explain the basic concepts in a way that

In this workshop we’ll dive into the topic of Autonomous Service development, with a sandbox project containing several interdependent services. These projects send messages to each other, and they call each other to retrieve data. In other words, they’re not autonomous at all. We’ll figure out some ways in which we can invert dependencies and

In this 3 hour tutorial session, you’ll learn how to quickly get started with Symfony 4 and build you very first small application. To get the most of it, we’ll try to cover as many topics as possible in 3 hours : Installing Symfony and third party free plugins with Symfony Flex, Configuring the application

You’ve probably been to a couple talks, about how to do “asynchronous things” with PHP. What the experts don’t tell you is that the hard part starts when you need to build an application. Sure, there are tools for starting an HTTP server or connecting to a web socket. But what about when you need

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

Internet of Things, City of Things, Smart Cities,… they’re all vague descriptions for the same thing : a collection of networked devices providing or consuming information. But how do these devices work and how can a web developer not only use their data, but actually work with the devices directly ? We’ll have a look

Modeling complex problems is hard and often leads to very complicated code. Controllers, repositories, services, conditions, forms – client’s business requirements sometimes infiltrate all these layers, everything is mixed together, making code really difficult to read, understand and develop. When you want extend business logic, but you need to dig in tens (or even hundreds)

Building PHP applications using Domain-driven design techniques results in code that is easier to modify, maintain, and test, and a better user experience. Once you try DDD, you will never design software in the same way again. In this tutorial, we will start by learning how to build a strong ubiquitous language with stakeholders. Then,

The much hyped “Microservice Architecture” tells us to design our services to be autonomous. Let’s find out what this means and how we can achieve it. In this talk I will guide you through the fascinating world of asynchronous communication, event-driven systems and distributed data.

You might have heard of Domain Driven Design. You may have heard DDD is a tool to write readable and change-ready code. You may have even heard DDD comes with a lot of talking, and modelling, and customers… Starting with DDD sounds big, and scary, doesn’t it? But getting started is not scary! Come find

For the last few years, PHP community has been buzzing about ES/CQRS, pretty much there was a talk on every conference. Now it’s time to see how it worked out for me in practice. ES/CQRS is a different approach to building applications from what we all have been thought to do for years. I’m not

Step-by-step debugging with Xdebug is no secret for you? Perfect then, because we won’t talk about it. We will rather see tools that let you know what’s really happening in your PHP code, like the phpdbg debugger, phptrace, process tracing tools like: strace, ltrace, the Linux inotify mechanism, tcpdump/wireshark for network analysis or MySQL Proxy

We all make mistakes, as much as we try to write flawless code, every now and then an error slips through. In order to reduce this number we do code reviews to ensure the code meets certain standards and to see if the feature was properly implemented. But how do you do a good code

This session will cover the developments of the JavaScript / ECMAScript language in recent years, to give you a quick update on how JavaScript can be written in 2018. The pace of the JS community has remained very high for several years now, and it is often easy to be overwhelmed by the amount of

In this session let me introduce you to Disco, a PSR-11 compatible, annotation-based Dependency Injection container. Disco does not use an external configuration file but uses a standard PHP class with some meta data attached to configure your services. I will guide you through the journey of setting up Disco for a new project as

Largely ignored under PHP5, the SPL (Standard PHP Library) offered a powerful toolbox for developers, ranging from it’s horrendously named collection of Iterators, and a series of Interfaces allowing us to build our own, to DataStructures, and Object Oriented file handling classes. Fast and powerful, the SPL provided a stable and well-tested library of classes

Keeping your web application secure and free from vulnerabilities is hard work, even if you know the OWASP Top 10. In this talk I will show tools, best practices and patterns to help you with this, so that you can find security issues before an attacker does and even prevent them in the first place.

What is your greatest tool in your toolbox? Your brain! Sure, you could sharpen this tool and promote your project the normal way, with hard work and years of slow, incremental progress. Or you could use some of the brain’s built-in cheat codes and just hack your way to success. Along with learning, our brains

From chatbots to your home thermostat, it seems like machine learning algorithms are everywhere nowadays. How about understanding how this works now? In this talk, you will learn about the basics of machine learning through various basic examples, without the need for a PhD or deep knowledge of assembly. At the end of this talk,

We have all seen some pretty interesting things happen when using floats. You might even know how to get around most of these problems. But why do these problems occur? Why do floats become so inaccurate when working with really small, or really large numbers? In this talk, we will take a look at decimal

If it works doesn’t imply it’s good. Improving the internal structure of a project is important for many reasons. Refactor also means simplify the debug processes, tuning up performances and make the code readable to avoid a gradual spaghetti project failure. This talk shows some important bad code smells, how to assign priorities, tools useful

It’s about building a development team that can rely on each other. Which phases does a team go through when it’s growing? How do you work with each other, what are the unwritten rules. How can you build routines, get better at estimating. Why is the principal developer as important as the newly joined junior

Have you heard about the two hardest things in computer science? It’s cache invalidation and naming things. I want to focus on the second one. Let’s see common examples of both good and bad naming. What’s the common part of each of them? What’s makes names good? Can we settle on good enough or should

Most of us use Design Patterns on a daily basis without noticing. Design patterns are commonly defined as solutions to recurring design problems. Frameworks like Laravel use Design Patterns throughout the codebase to keep structure and maintainability. In this talk we will explore 3 to 4 Design Patterns used in Laravel. Once we have a

Want to build software that is more testable, easier to modify, and has fewer lines of code? Architecting with more immutable objects that are always in a valid state is the most important lesson I have learned in building better software applications. Using immutable value objects will lead to less checking, fewer bugs, more DRY

Symfony has a wide userbase today. Most who work with Symfony on a daily basis have configured their own services, are fluent in configuring routing and validators. But what is actually going on under the hood? What happens when the configuration is parsed? What is a cache warmup? What happens to a request before hitting

This prototype works, but it’s not pretty, and now it’s in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it’s imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review

Many developers get lost in the hype of object oriented design. They miss out on how expressive and succinct their code could be if they tried functional programming. Take Monads, for instance. Many developers haven’t even heard the name, much less are able to describe what Monads are and how they can be useful in

I’m the maintainer of a very popular open-source PHP package – PHPMailer. In December 2016, two critical vulnerabilities were found in PHPMailer, affecting potentially millions of sites. I’d been involved in reporting minor security issues in the past, but nothing of this magnitude, and never at the receiving end. I found myself at the start

Congratulations! Your team has chosen a coding standard to use and you’re well on your way to a consistent code style for all your projects. But… there are some extra things you’d like to check for, some rules you really can’t be bothered with and some which sort of fit your needs, but not completely.

In recent years we’ve seen a growing awareness of privacy issues, particularly in the wake of Edward Snowden’s revelations. The 2015 collapse of the safe harbour agreement (making it illegal to store data on EU citizens in the US) was patched up with Privacy Shield in 2016, but that’s on shaky ground too. The new

What would the perfect test suite look like? Well it would definitely fully test every bit of functionality. It would run lightning fast. And the test suite would be quick to write. That sounds great right? Unfortunately these 3 goals work against each other. Increasing test coverage will increase the time spent writing and executing

One of the most recent new features of PHP is Anonymous Classes, introduced with PHP version 7. But what are Anonymous Classes? How do you use them? And what would you use them for? Let’s take a look behind the mask, and find out. Anonymous Classes were introduced to PHP7 with very little fanfare, and

Content Security Policies are another tool we should have in our security toolbelt to help protect users of our sites. In this session you’ll learn what they are, why they’re needed, how they work and the limitations on what they can & cannot do to protect users. You’ll see a demo of attacks a CSP

Everybody is using Docker. Pull an image in minutes and start multiple containers in seconds. Great! Unfortunately the public containers are normally not ready for an immediate use as a custom development system: Maybe the debugger is missing, the vhost is not configured correctly, or something app-specific has to be installed first. In this session,

A look into the internals of PHP; How it came to be, how it works, and how PHP 7 leapt far out in front of its predecessor on performance and memory consumption with some thoughts on what’s next for PHP 8.

Different jobs require different tools. There are times where PHP isn’t the right tool for the job. When those times arise, Go can be a great alternative tool to use. Go is a compiled programming language created by Google and used in emerging tools like Docker, and Kubernetes. This session will take you through the

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.