Dates in 2019

January 17, 2019

Decomposing a problem into several microservices is difficult. Too many have failed and ended up with a distributed monolith. Let us take a step back and understand when and why we need to create a microservice, and where we should put the boundaries. Challenging some established practices, we will take a fresh look at different integration strategies, and come up with a simplified approach that hopefully gives us better results.

More details

January 18, 2019

Mel Conway's famous law states that organizations designing systems are constrained to produce systems that mimic the communication structures of the organizations. Digitalization, however, changes organizations fundamentally, for example through the introduction of agile methods, more autonomy, and a transition from management to leadership. We will discuss how this affects the way we should model software in Domain-Driven Design.

More details

February 15, 2019

Eigentlich wollte Rasmus Lerdorf vor 24 Jahren nur die Besucher seiner Webseite zählen. Wie kam es dazu, dass heute circa 80 Prozent aller Webseiten PHP verwenden? Wie wird PHP weiterentwickelt? Wie kann man zu PHP beitragen? Was können Entwicklerinnen und Entwickler von PHP 7.4 und PHP 8 erwarten? Diese und andere Fragen beantwortet der Vortrag von Sebastian Bergmann, der seit fast 20 Jahren zur Professionalisierung der Softwareentwicklung mit PHP beiträgt.

More details

February 21, 2019

Die richtige Software entwickeln. Das Richtige testen. Zum richtigen Zeitpunkt. Mit dem passenden Werkzeug sowie den richtigen Kniffen, wie man es effektiv und effizient einsetzt. In diesem Vortrag gehen wir unter anderem den folgenden Fragen nach: Was will ich testen? In welchem Rahmen muss ich es testen? Wie formuliere ich den Test?

More details

March 14, 2019

Getter methods retrieve state, while setter methods change state. We all know that. HTTP GET requests retrieve state, while HTTP POST requests change state. We all know that. Then why have we built so many applications with a single object model, blatantly ignoring this separation? Turns out that creating a separate model for reading and writing makes a lot of sense. But how can we introduce this concept into legacy applications? This presentation shows how to do it, and what is in it for you.

More details

March 20, 2019

Entgegen landläufiger Meinung ist kein Code untestbar. Sicherlich macht es mehr Spass, Unit Tests für sauberen, nach SOLID-Prinzipien erstellten Code zu schreiben. Aber was ist mit Legacy Code, der mit zahlreichen Abhängigkeiten aufwartet und sich nicht um die Trennung der Verantwortlichkeiten schert? Sebastian Bergmann zeigt, dass es möglich ist, Tests selbst für den miserabelsten Code zu schreiben. Anhand von Beispielen aus der Praxis zeigt er das Warum, Was, Wie und Wann des Testens von Software.

More details

March 21, 2019

Developers need tools to be productive. In this session, Sebastian Bergmann presents an overview of the tools every PHP developer needs to know. For instance, we will have a look at dephpend, php-cs-fixer, phpstan, phan, and PHPUnit. Tools are not an end unto themselves, though. Therefore we will also discuss how these tools fit into your development process.

More details

June 03, 2019

Domain-Driven Design, CQRS, and Event Sourcing. Big words that obviously require an equally big tech stack to be applied – with bleeding edge frameworks, lots of tools, and a complex infrastructure to run it all. Or not? In this workshop, we will create a solid, event-sourced web application from scratch. We will not rely on any frameworks or libraries to really get to the bottom of things. Make sure to bring your laptop!

More details

What makes up clean code? How does code turn out well? And how do you write really good code? In this workshop you will not only learn the answers to these questions. You will have the opportunity to immediately apply what you learn in a practical exercise. First, Sebastian Bergmann will show how Domain-Driven Design and Test-Driven Development can be used to solve problems. Needless to say that we will cover topics such as Clean Code and SOLID along the way. Coached by Sebastian Bergmann, you will then work in pairs on additional features for the software he developed during the live coding. We will round up the day with a review where you will get feedback on the code you created. You will need to bring your own laptop to really benefit from this workshop. A recent version of PHP 7 and PHPUnit as well as your IDE of choice are all that is needed. No frameworks or third-party code are required.

More details

June 04, 2019

In an API-driven world, being and staying reachable is a crucial success factor. And while, of course, misbehaving client applications and users could be dealt with by simply adding more servers and thus making your (cloud) provider happy, restricting the API access to reasonable rates may be a more cost efficient way. Learn how to limit access rates to your API without changing a single line of backend code!

More details

In 2018 the W3C released the candidate recommendation for the new Web Authentication Standard "WebAuthn". Already supported by all major browser vendors, it strives to make passwords as well as phishing a thing of the past. Given that haveibeenpwned.com’s database contains over 500 million stolen credentials, the switch away from passwords should happen sooner rather than later. Are you prepared to support the new means of authentication? Get ready for the future and learn what WebAuthn is about, how it works, and how to leverage its potential for your site today using PHP and JavaScript.

More details

In an event-driven world, asynchronous processing at scale is essential to guarantee a rapid execution of jobs. And seemingly impossible to do without a big tech stack – including bleeding edge frameworks, lots of tools, and a complex infrastructure to run it all. In this session we’ll showcase how simple, plain, and easy an asynchronous processing stack can be set up and implemented, using well-known, almost boring technology.

More details

While PHPUnit is not difficult to set up and writing tests with it is easy, you will get better results and save development time if you know the tips and tricks to leverage PHPUnit more effectively. This session, presented by the creator of PHPUnit, teaches best practices you can use to ensure that your unit testing effort is efficiently implemented.

More details

So you must be the worst developer in the house, because you are the only one who does not understand that piece of elaborate, complex, carefully obfuscated code? Well, after some asking around, it turns out that nobody has a clue what that code does, or why it even exists. There might be opinions, but unfortunately there is more than one, so does the loudest developer’s voice "win"? We will analyze where code that nobody understands comes from, understand why we cannot accept it, and discuss why you are not the worst developer admitting that you do not understand a piece of code, but may in fact be one of the smartest.

More details

You are still on PHP 5? If not, this talk is not for you. What exactly keeps you from deploying PHP 7 to production? If you already know, this talk will provide you with proven tactics to get your application ready for PHP 7 and migrate successfully. If you are not sure, what the shopstopper really is, you will learn how to analyze the status quo, develop a plan on how to migrate and sell the whole project to your boss or customer.

More details