What an incredible 2018 and 2019 for the PHP community! Part of the PHP Core Team that was working for Zend left. Some of them found excellent companies and they are rocking more than ever, like Nikita at JetBrains. PHP 7.4 is about to be released, and PHP 8 has been branched. Laravel and Symfony have healthy growth. JIT is part of the imminent future, and I/O non-blocking frameworks are getting more often adopted in production.
09:15 |
Opening Keynote
Keynote by Rasmus Lerdorf (45 minutes) It is a real privilege to have the creator of the PHP language kicking off the return of the conference with an inspiring keynote! Rasmus will talk about all the shiny new things in PHP 7.4 and PHP 8 we all love but the keynote will also cover important things in our careers such as motivation, burn-out and focusing on things that really matter |
10:00 |
From Helpers to Middleware
Talk by Marco Pivetta (45 minutes) Over the past decade, we've seen frameworks bloom, die, be replaced and re-born. We've seen good practices, anti-patterns and generally styles of coding come and go. What's the takeaway from the last decade of framework development? Where are we going? What should we explore next? We'll look at a brief history of frameworks, at which practices emerged from the various communities, and which of them survived and evolved, as well as recommendations to keep pushing forward. |
11:15 |
Microservices gone wrong
Talk by Anthony Ferrara (45 minutes) Microservices are the latest architectural trend to take the PHP community by storm. Is it a good pattern? How can you use it effectively? In this talk, we'll explore real world experience building out a large scale application based around microservices - what worked really well, what didn't work at all, and what we learned along the way. Spoiler alert - we got a lot wrong. |
12:00 |
Serverless PHP applications with Bref
Talk by Matthieu Napoli (45 minutes) Running PHP used to be as simple as copying the files onto a shared host via FTP. What if we could get back to something that simple, but gain in security, performance and scalability as well? Let's see if serverless lives up to this promise! We will check out AWS Lambda and Bref, an open source solution for building serverless PHP applications. |
14:45 |
Knock knock, who's there? Authenticating your single page apps using JSON Web Tokens.
Talk by Sam Bellen (45 minutes) When it comes to writing code, there’s nothing we take more serious than authentication and security. Modern single page applications bring along new challenges. By using solutions like the OpenID Connect protocol and JSON Web Tokens we can improve the user experience when authenticating with your apps, providing a seamless authentication process. In this talk I will try to explain in depth, the way JSON Web Tokens work and can be used to secure your single page apps. I will explain the difference between using opaque tokens and JWTs. The talks will also give an overview of a modern authentication flow and a step by step breakdown of how it works exactly. No specific previous knowledge is required, but it helps the audience has some experience with authenticating users. |
15:30 |
Developing cacheable PHP applications
Talk by Thijs Feryn (45 minutes) Most of us are familiar with HTTP, but when it actually comes to creating cacheable web content, there is still a lot to be learned. In this presentation I will show you how to leverage specific mechanism to achieve a good hit rate without losing touch with some of the challenges of real-life web projects. Keywords: cache control, cache variations, conditional requests, stateful content, HTTP fragments, invalidation. The goals is to empower developers to control the behavior of reverse caching proxies like Varnish, Content Delivery Networks, or even browser cache, using the power of HTTP. |
16:45 |
PHP Performance Trivia
Talk by Nikita Popov (45 minutes) This talk discusses various issues of low-level PHP performance, such as: When is it more efficient to use arrays or objects? What causes catastrophic garbage collection? Does adding type annotations make PHP faster or slower? I will answer these types of question with a (shallow) dive into PHP internals, touching on various topics like value representation, bytecode optimization and GC. |
17:30 |
Get GOing with a new language
Talk by Kat Zien (45 minutes) Learning more than one programming language is key to becoming a better developer. It is like adding a new tool to your toolbox. The more tools you have, the easier and quicker you’ll be able to tackle whatever job you need to do. You’ll also be able to use the right tool for the job, and who doesn’t like that?! I picked up Go a few years ago as it was becoming more popular among developers. Coming from a PHP background, I had no idea what channels or goroutines were or how is concurrency different from parallelism. I’ve got to say, it was a whole new world. Very different, but very cool. I was hooked! By happy coincidence, my company was looking to rewrite a legacy PHP app in Go. It was over 2000 lines of procedural and messy PHP4 with more downtime than I’m willing to admit to. I took on this project, and soon enough we had a much faster, more maintainable and much more reliable app for our customers. Go gave us options we would not have in PHP. The goal of this talk is to give you a good idea of what Go is and how it compares with PHP. We’ll look at the language itself as well as the tooling and communities around it. Even if you’re not sold on Go by the end of it, I hope you’ll leave inspired to go out there and learn whatever language you wanted to look into next. |
09:15 |
Advanced Web Application Architecture
Talk by Matthias Noback (45 minutes) Web application frameworks are indispensable. You wouldn't want to deal with raw HTTP messages yourself, nor build your own router, or ORM. But if you're not careful, a framework will take over your entire project. Business logic and framework-specific code will end up being mixed together, in controllers, services and entities. Not being able to describe the use cases of your application without also talking about HTTP, or SQL, leads to hard-to-test and hard-to-change application code. Your core code will be tied to your framework, which endangers the future of the project in the long term. In this talk I'll explain how to make a clean separation between your own business logic and the code that makes your application's use cases available to the world outside. We'll discuss architectural concepts like "layers" and "ports & adapters", and how applying them will make your application flexible enough to deal with a constantly changing environment. |
10:00 |
Working with Webhooks
Talk by Lorna Mitchell (45 minutes) In an increasingly connected world, APIs are key to great tools and effective workflows. What is better than an API? A webhook of course! Webhooks are a key building block of a modern application, allowing systems to exchange data in response to events. This session covers the basic theory of webhooks and shows some examples of how to handle them in your own applications. We'll also talk about when webhooks are a helpful design choice, and some pitfalls to look out for when you're working with them! This session is recommended for anyone interested in teaching their applications to play nicely with others. |
11:15 |
Supercharge your apps with ReactPHP & PHP-PM
Talk by Albert Casademont (45 minutes) Have you ever wondered how to enhance your app’s performance after fine-tunning the very last bit of your current PHP stack? Maybe it’s time to think of an alternative! Let me convince you to ditch your PHP-FPM server and embrace the world of ReactPHP! Yes, you’ve heard of ReactPHP, but that’s “too experimental” for you. Guess, what: it’s not, thanks to PHP-PM, a ReactPHP process manager, you can give your app a nice performance boost with an alternative production-ready application server. Prepare yourself to dive into the lifecycle of a PHP request (compilation, opcode generation, memory allocation, execution, IO...) and to understand why there’s not much more room for performance improvements using the current stacks. We will also discuss the pros and cons of the ReactPHP + PHP-PM approach using a Symfony 4 app as an example, including developer experience and deployment options with containers. |
12:00 |
It's all about the goto
Talk by Derick Rethans (45 minutes) Don't worry, this is not about the goto keyword. In this presentation, I am showing you some of the inner workings of PHP. We are going to look at how different language keywords and constructs are handled internally. Basically, everything is converted to goto, but the how and why, is not as simple as it seems! We'll also have a look at what sort of optimisations opcache does to make your code run faster. This is a very in depth talk, mostly interesting to people that want to know how PHP works internally. Expect lots of wonkyness, a form of assembly, and trees. |
14:45 |
Develop microservices in PHP
Talk by Enrico Zimuel (45 minutes) In this talk I'll present how to develop microservices in PHP using Expressive framework + Swoole extension, to run PHP as HTTP server from the command line. Moreover, I'll present how to monitor and logging microservices using Elasticsearch and Kibana, part of the ELK stack. |
15:30 |
Mutation Testing - Better code by making bugs
Talk by Théo Fidry (45 minutes) Do you test your code? What about your tests? Your tests are code, you need to write, refactor and maintain them. How do you know you added enough tests to capture the behaviour of an untested application in order to refactor it safely? Discover Mutation Testing, a fun tool to make your code better by introducing bugs. |
16:45 |
Nuclear powered software security
Talk by Christopher Riley (45 minutes) It seems to be almost a weekly occurrence that another company makes the news headlines for being hacked and in the process disclosing sensitive user data and company secrets. These security meltdowns can cause catastrophic effects to the company in lost user trust and huge costs putting things right. A nuclear power plant is considered one of the most dangerous things mankind has built, yet they very rarely go wrong. The systems engineering that goes into making nuclear power plants safe is a fascinating topic to study but on the surface it seems entirely irrelevant to PHP developers. In this talk I'm going to show you how this level of safety is achieved, what happens when it goes wrong and then see what lessons we, as PHP developers, can learn from it to help us secure our applications from meltdown. |
17:30 |
Coming back to the monolith
Talk by Manel Sellés (45 minutes) Many teams think that breaking the monolith and migrating to microservices will solve all of the coupling and scalability problems we have in our code. This also happened to us and we suffered the most painful parts of microservices, without even having the benefits. After that, we started to develop focusing on decoupling and separation of contexts, but without putting ourselves any infrastructure barrier. This talk will explain architecture problems suffered at Ulabox, taking into account factors like team size or enterprise objectives, and which is our proposal to evolve our architecture. |