Termine in 2018

07.02.2018

Domain-Driven Design (DDD) has become a major trend, maybe even a buzzword. The idea of (more) collaboration between developers and domain experts, however, is not new, but has already been a part of the Agile Manifesto. To be honest, "agile" does not work very well in most companies. We will try to analyze why this is the case, and ponder the question whether DDD can fix that.

Weiter zum Vortrag

13.02.2018

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!

Weiter zum Vortrag

28.02.2018

Viele einfache und automatisierte Tests an der Basis, wenige komplexe und vielleicht sogar manuelle Tests an der Spitze: so sieht eine Testpyramide aus. Zumindest in der Theorie, die Praxis sieht in vielen Projekten ein wenig anders aus. Schließlich kostet Unit Tests schreiben ja erst mal viel Zeit und damit Geld, oder? In diesem Vortrag erfahrt ihr, wie ihr das mit dem Testen in der Praxis sinnvoll und richtig macht und worauf es wirklich ankommt.

Weiter zum Vortrag

02.03.2018

Der Workshop richtet sich an Software-Entwickler, die bereits Erfahrungen mit dem Einsatz von PHP haben. Aufgrund der hohen Informationsdichte werden in diesem Workshop keine Praxisübungen durchgeführt. Sie benötigen für den Workshop keinen Laptop. Neben zahlreichen kleineren Neuerungen, dank derer PHP 7 im Entwickleralltag einfach mehr Spaß macht, lernen Sie die wichtigsten beiden neuen Features kennen: das um Scalar Type Declarations und Return Type Declarations erweiterte Typsystem sowie die verbesserte Behandlung von Fehlern. Sie erfahren, mit welchen Test- und Migrationsstrategien Sie Ihre Anwendung am besten für PHP 7 vorbereiten und welche Werkzeuge Ihnen dabei helfen. Wir erläutern auch, welche (veralteten) Code-Konstrukte in PHP 7 nicht mehr funktionieren und welche Klippen Sie umschiffen müssen, damit auch ältere Anwendungen problemlos unter PHP 7 laufen. Schließlich zeigen wir, wie eine zeitgemäße Systemarchitektur für eine PHP 7-Anwendung aussieht und wie Sie das Deployment ihrer Software gestalten können. Wir gehen auch der Frage nach, wie man die Aktualisierung auf PHP 7 Vorgesetzten oder Kunden vermitteln kann.

Weiter zum Vortrag

07.03.2018

Gratulation! Du hast Deinen Legacy-Monolithen erfolgreich abgelöst. Und zwar nicht durch einen verteilten Monolithen aus Microservices, die alle von einander abhängen, sondern durch in sich geschlossene Systeme (Self-Contained Systems), die zwar miteinander kollaborieren, sich aber keine Infrastruktur teilen. Nun gilt es, nur noch eine Frage zu beantworten: wie testest Du Deine neue Software? In diesem Vortrag erfährst Du die Antwort!

Weiter zum Vortrag

Domain-Driven Design (DDD) ist mindestens zu einem Trend, wenn nicht sogar zu einem Buzzword geworden. Dass Entwickler (mehr) mit Fachexperten zusammenarbeiten sollten, ist allerdings nicht neu, sondern steht so schon im agilen Manifest. Nun funktioniert "agil" in den meisten Unternehmen nicht besonders gut, wenn man ehrlich ist. Wir analysieren, warum das so ist, und gehen der Frage nach, ob DDD das reparieren kann.

Weiter zum Vortrag

20.03.2018

Domain-Driven Design (DDD) has become a major trend, maybe even a buzzword. The idea of (more) collaboration between developers and domain experts, however, is not new, but has already been a part of the Agile Manifesto. To be honest, "agile" does not work very well in most companies. We will try to analyze why this is the case, and ponder the question whether DDD can fix that.

Weiter zum Vortrag

05.04.2018

Congratulations, you successfully replaced your legacy monolith. And not just with a distributed monolith comprised of microservices that depend on each other, but rather with an assembly of self-contained systems that do not share infrastructure. There is just one question left to answer: how do you test an application that consists of self-contained systems? Come to this meetup and learn the answer!

Weiter zum Vortrag

14.04.2018

Congratulations! You finally managed to convince the business that there really is no way to add this important new feature to the old legacy code base without causing major disruptions. But where to go from here? Completely rewriting the old monolithic application that does a gazillion things from scratch may seem tempting but is a gigantic effort with an unforeseeable outcome. Discover a way out of legacy hell by learning about architectural patterns as well as concrete technical solutions that enable you to gradually move functionality into new software components without the impediments of a full rewrite.

Weiter zum Vortrag

03.05.2018

Wer sicher sein will, dass Software richtig funktioniert, muss sie laufend testen. Das kann man entweder immer wieder manuell tun und entsprechende Kosten in Kauf nehmen, oder man automatisiert die Tests. Die Teilnehmer dieses Workshops lernen, wie sie das Werkzeug PHPUnit, den Standard für Testautomatisierung in der PHP-Welt, in ihren Entwicklungsprozess integrieren.

Weiter zum Vortrag

27.05.2018

If you want to be sure that your software works correctly then you need to continuously test it. Automated tests save you from pressing F5 in the browser all the time as well as from using debug statements such as var_dump() in your code. They are also cheaper than manual tests and easier to implement than you may think. How do I test my code with as little effort as possible? How do I execute as few lines of code as possible to test what I am really interested in? And what does this have to do with clean code? Attendees of this session will learn why they should include PHPUnit into their set of development tools.

Weiter zum Vortrag

04.06.2018

Event Storming is an emerging group modeling technique using sticky notes and verbal communication that is not only extremely efficient, but also easy to learn, and fun to do. This workshop introduces you to Event Storming with a strong focus on process design. Rather than talking a lot of theory, we will quickly dive into a group exercise and start modeling a real-life business problem, which will lead to valuable insights and is likely to spark off a lot of interesting discussions. We will not stop there, however, but also turn the model into working PHP code using Domain-Driven Design techniques and patterns, so bring your laptop with a working PHP environment. To conclude the day, we will demonstrate how to integrate the code with your favorite framework. This workshop might forever change the way you write code, so do not miss out on it.

Weiter zum Vortrag

No matter how experienced you are as a developer: you can always improve. This workshop teaches advanced coding techniques through live coding. First up, we will solve some interesting coding problems that the audience has defined (it's only live if nobody knows the problem beforehand!). In the second segment, we will write code in a test-driven fashion. In the afternoon, it is your turn to write code. You will work on an interesting non-trivial coding exercise while being individually coached by the trainer. It's your choice whether you want to try test-driven development, write code first, then tests, or write no tests at all. The latter, however, might earn you some angry looks from the trainer ;-) We will touch on domain-driven design, test-driven development, clean code and SOLID principles, and might even throw in a few design patterns. Every question will be answered! Make sure to bring a laptop with your favourite development environment (current version of PHP, an IDE, and PHPUnit). Attendees should have a good working knowledge of PHP, at least basic OOP skills, and be familiar with the basics of PHPUnit. No frameworks or other third-party code will be needed.

Weiter zum Vortrag

05.06.2018

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.

Weiter zum Vortrag

When introduced in PHP, namespaces where seen as a mere convenience: shorter class names, yet no danger of collisions. Focusing on technicalities, strict rules like PSR-0 or PSR-4 were established to define how namespaces are to be structured and mapped into a directory layout. Since then, developers blindly follow these rules, ignoring the original concept of namespaces and the benefits they can offer. It’s time to change that.

Weiter zum Vortrag

Congratulations, you successfully replaced your legacy monolith. And not just with a distributed monolith comprised of microservices that depend on each other, but rather with an assembly of self-contained systems that do not share infrastructure. There is just one question left to answer: how do you test an application that consists of self-contained systems? Come to this session and learn the answer!

Weiter zum Vortrag

Powerful load balancer and revese proxy, classic webserver or flexible gateway to PHP-FPM, the NGINX web server software is on its way to becoming the de-facto standard for high performance web serving. But how to configure all these powerful features? Single-Sign On, Request Chaining, Dynamic Backend Selection and more: this session will show configuration tips for beginners, tweaks for experts, and Lua scripting for the crazy!

Weiter zum Vortrag

Command/Query Responsibility Segregation (CQRS) and Event Sourcing might become new buzzwords in the PHP community. But what exactly is all the fuzz about, and should you care? This talk provides a comprehensive introduction, and will enable you to decide whether CQRS and Event Sourcing might be the right choice for you.

Weiter zum Vortrag

06.06.2018

Design Patterns are blueprints for common problems. Knowing patterns and being able to use them will help you to writte better code faster. In addition, once you are familiar with certain patterns, you will also spot them in other people's code. Last but not least, patterns are a common language for developers that will improve communication in your team. We will introduce five design patterns (Command, Strategy, Factory, Template Method, and Chain of Responsibility) every web developer should know and use. We will show example code, and discuss when and where to use each pattern.

Weiter zum Vortrag

The FastCGI Process Manager (PHP-FPM) evolved from a third-party patch to the de-facto standard for running web applications with PHP. By default, though, the configuration shipped with most distributions is designed for minimal resource consumption. And while production servers can operate using these settings even under relatively high load without problems for a while, getting the most out of FPM requires some tuning. Preparing the PHP stack for high load situations and monitoring the performance, optimizing the runtime for specific types of requests, or hardening the security of your environment – there is much to consider.

Weiter zum Vortrag

Was macht sauberen Code aus? Wie wird Code richtig gut? Und wie schreibt man richtig guten Code? In diesem Workshop lernt Ihr das nicht nur, sondern Ihr könnt es auch direkt in die Praxis umsetzen! Am Vormittag demonstriert Sebastian Bergmann den Einsatz von Domain-Driven Design und Test-Driven Development, natürlich nicht ohne auch über Themen wie Clean Code oder die SOLID-Prinzipien zu sprechen. Am Nachmittag arbeitet Ihr in Paaren und setzt das Gelernte in die Praxis um. Wir schließen den Tag ab mit einer Review-Runde, in der Ihr Feedback zu Eurem Code bekommt. Um von diesem Workshop wirklich profitieren zu können, bringst Du bitte Dein eigenes Laptop mit Deiner gewohnten Entwicklungsumgebung mit. Neben IDE (oder Texteditor) brauchst Du eine aktuelle Version von PHP und PHPUnit. Frameworks oder Third-Party-Code wird nicht benötigt.

Weiter zum Vortrag

07.06.2018

Vom PHP-Projekt gibt es aktuell nur für PHP 7.1 sowie PHP 7.2 Bugfixes und im Dezember endet der Security Support für PHP 5.6 und PHP 7.0. Höchste Zeit also, sich einmal anzuschauen, was beim Upgrade auf aktuelle PHP-Versionen zu beachten ist. In diesem Vortrag lernt Ihr unter anderem, was man schon heute über PHP 7.3 sowie PHP 8 wissen kann und wie man sich darauf vorbereitet, damit einen die Änderungen später nicht unvorbereitet erwischen.

Weiter zum Vortrag

21.06.2018

Implementing the business logic of your application in the object-oriented fashion requires more than knowing your favorite framework inside out and extending a controller base class. Avoiding tight coupling to the framework and hidden dependencies, we will develop business logic in a decoupled, fully tested and extensible way. Following the domain-driven design approach and test-driven development principles, we will develop a fully tested application. Most of the day, attendees will work in groups that are individually coached by the trainers. As we progress from understanding and documenting requirements to writing unit tests and working production code, we might even feel inclined to make use of some modern concepts like Command Query Responsibility Segregation (CQRS) and Event Sourcing. Please bring a laptop with PHP 7.2 and PHPUnit 7.2, and a decent IDE. We will need no web server, so please make sure that you can run PHP at the command line, and are able to execute tests with PHPUnit. We will need to frameworks or other third-party code.

Weiter zum Vortrag

22.06.2018

Developers usually have their favourite framework. But when did they choose it, and why? Was the decision rational, or rather emotional? This talk will not name "the best framework", but rather give the attendees a good background on how and why to choose frameworks and third-party-code in general. Topics covered include code quality, metrics, sustainability, and performing a general project assessment.

Weiter zum Vortrag

25.07.2018

Design Patterns are blueprints for common problems. Knowing patterns and being able to use them will help you to writte better code faster. In addition, once you are familiar with certain patterns, you will also spot them in other people's code. Last but not least, patterns are a common language for developers that will improve communication in your team. We will introduce five design patterns (Command, Strategy, Factory, Template Method, and Chain of Responsibility) every web developer should know and use. We will show example code, and discuss when and where to use each pattern.

Weiter zum Vortrag

03.08.2018

Am Erscheinungstag von PHPUnit 7.3 erklärt Sebastian Bergmann bei der PHP User Group Köln, was es in/seit PHPUnit 7 Neues gibt.

Weiter zum Vortrag

06.08.2018

Design Patterns are blueprints for common problems. Knowing patterns and being able to use them will help you to writte better code faster. In addition, once you are familiar with certain patterns, you will also spot them in other people's code. Last but not least, patterns are a common language for developers that will improve communication in your team. We will introduce five design patterns (Command, Strategy, Factory, Template Method, and Chain of Responsibility) every web developer should know and use. We will show example code, and discuss when and where to use each pattern.

Weiter zum Vortrag

23.08.2018

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.

Weiter zum Vortrag

26.08.2018

Contrary to popular belief, no code is untestable. Sure, writing unit tests for well-crafted code that follows the SOLID principles is easy. But what about legacy code residing in some god class with implicit dependencies and no separation of concerns? We will show you that it is possible to write tests for even the worst code by explaining the why, the what, the how, and the when of software testing while looking at real-world examples.

Weiter zum Vortrag

29.08.2018

No matter how experienced you are as a developer: you can always improve. This workshop teaches advanced coding techniques through live coding. First up, we will solve some interesting coding problems that the audience has defined (it's only live if nobody knows the problem beforehand!). In the second segment, we will write code in a test-driven fashion. In the afternoon, it is your turn to write code. You will work on an interesting non-trivial coding exercise while being individually coached by the trainer. It's your choice whether you want to try test-driven development, write code first, then tests, or write no tests at all. The latter, however, might earn you some angry looks from the trainer ;-) We will touch on domain-driven design, test-driven development, clean code and SOLID principles, and might even throw in a few design patterns. Every question will be answered! Make sure to bring a laptop with your favourite development environment (current version of PHP, an IDE, and PHPUnit). Attendees should have a good working knowledge of PHP, at least basic OOP skills, and be familiar with the basics of PHPUnit. No frameworks or other third-party code will be needed.

Weiter zum Vortrag

12.09.2018

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.

Weiter zum Vortrag

21.09.2018

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 framework or libraries to really get to the bottom of things. Make sure to bring your laptop!

Weiter zum Vortrag

26.09.2018

If you want to be sure that your software works correctly then you need to continuously test it. Automated tests save you from pressing F5 in the browser all the time as well as from using debug statements such as var_dump() in your code. They are also cheaper than manual tests and easier to implement than you may think. The attendees of this full-day workshop will learn how to write and execute tests as well as how to integrate automated tests into their development process.

Weiter zum Vortrag

28.09.2018

Join Sebastian Bergmann, the creator of PHPUnit, to learn how PHPUnit works, why it works like that, why he wishes it did not work like that, and what he is doing about it.

Weiter zum Vortrag

05.10.2018

Event Storming is an emerging group modeling technique using sticky notes and verbal communication that is not only extremely efficient, but also easy to learn, and fun to do. This workshop introduces you to Event Storming with a strong focus on process design. Rather than talking a lot of theory, we will quickly dive into a group exercise and start modeling a real-life business problem. We will not stop there, however, but also turn the model into working PHP code using Domain-driven Design techniques and patterns.

Weiter zum Vortrag

06.10.2018

The FastCGI Process Manager (PHP-FPM) evolved from a third-party patch to the de-facto standard for running web applications with PHP. By default, though, the configuration shipped with most distributions is designed for minimal resource consumption. And while production servers can operate using these settings even under relatively high load without problems for a while, getting the most out of FPM requires some tuning. Preparing the PHP stack for high load situations and monitoring the performance, optimizing the runtime for specific types of requests, or hardening the security of your environment – there is much to consider.

Weiter zum Vortrag

15.10.2018

No matter how experienced you are as a developer: you can always improve. This workshop teaches advanced coding techniques through live coding. First up, we will solve some interesting coding problems that the audience has defined (it's only live if nobody knows the problem beforehand!). In the second segment, we will write code in a test-driven fashion. In the afternoon, it is your turn to write code. You will work on an interesting non-trivial coding exercise while being individually coached by the trainer. It's your choice whether you want to try test-driven development, write code first, then tests, or write no tests at all. The latter, however, might earn you some angry looks from the trainer ;-) We will touch on domain-driven design, test-driven development, clean code and SOLID principles, and might even throw in a few design patterns. Every question will be answered! Make sure to bring a laptop with your favourite development environment (current version of PHP, an IDE, and PHPUnit). Attendees should have a good working knowledge of PHP, at least basic OOP skills, and be familiar with the basics of PHPUnit. No frameworks or other third-party code will be needed.

Weiter zum Vortrag

16.10.2018

We all know how to test domain logic in isolation from framework, database, and template rendering. While testing framework and database interaction can be considered to be solved problems, there is room for improvements when it comes to the testing of views and their templates. Attendees of this presentation will learn how to decouple domain logic from views and make the latter convenient and fun to work with.

Weiter zum Vortrag

In March 2018, the haveibeenpwned.com password database contained about 501 Million hashes of known, stolen passwords. Yet, despite the fact companies obviously fail to securely store passwords and despite the majority of users still reusing a limited set of passwords for their online accounts, passwords are the predominant means of authentication. The brand new W3C Candidate Recommendation "Web Authentication", WebAuthn for short, is supported by all major browser vendors and strives to make passwords a thing of the past. Get ready for the future and learn what WebAuthn is about, how you can use and implement it for your site today.

Weiter zum Vortrag

You probably have a love/hate relationship with the GDPR, just like me. It may do a great job protecting our privacy, but honestly, even that remains to be seen. For most companies, getting ready for May 25th was ... challenging. Now, as software architects and developers we must take responsibility and rethink many aspects of how we used to design and build systems. What does privacy by design really mean? How can we implement the right to erasure, especially in an event-driven world, and most importantly, how can we prove to data protection authorities that we did things right? This presentation will provide you with a good mix of proven tactics, educated guesses, and some speculation. Do not expect complete solutions for everything (yet), but there may well be some eye-opening moments.

Weiter zum Vortrag

17.10.2018

Before the start of development comes the gathering of requirements. This daunting task with the seemingly endless discussions. Followed by the creation of epics, user stories or tickets which will change over and over again - even when development has already begun. We can do better than this: With Event Storming, an unlimited modeling space and all the key stakeholder in the same room. Let's get started with efficient Domain-Driven Design!

Weiter zum Vortrag

Good performance is a key success factor for public-facing software on the internet. Over the years, we have gotten pretty good at scaling content delivery, usually through a combination of heavy caching, cloud computing, and reverse proxies. But the world is changing rapidly, creating an increasing demand for personalization. Being able to deliver a highly personalized customer experience is very different from publishing static content. This talk goes in depth on how personalization challenges established best practices to build high performance web applications, and provides you with proven solution blueprints.

Weiter zum Vortrag

If you want to be sure that your software works correctly then you need to continuously test it. Automated tests save you from pressing F5 in the browser all the time as well as from using debug statements such as var_dump() in your code. They are also cheaper than manual tests and easier to implement than you may think. How do I test my code with as little effort as possible? How do I execute as few lines of code as possible to test what I am really interested in? And what does this have to do with clean code? Attendees of this session will learn why they should include PHPUnit into their set of development tools.

Weiter zum Vortrag

Join Sebastian Bergmann, the creator of PHPUnit, to learn how PHPUnit works, why it works like that, why he wishes it did not work like that, and what he is doing about it.

Weiter zum Vortrag

18.10.2018

Currently, the PHP project actively supports PHP 7.1 and PHP 7.2. The security support for PHP 5.6 and PHP 7.0 ends in December 2018. Now is the time to prepare for this year's PHP 7.3 and plan for next year's PHP 7.4. Attendees of this presentation will learn everything they need to know about PHP 7.3 and how to keep up with PHP's development so that they will not be surprised, at least not in a bad way, when PHP 7.4 and PHP 8 come out.

Weiter zum Vortrag

24.10.2018

Wer sicher sein will, dass Software richtig funktioniert, muss sie laufend testen. Das kann man entweder immer wieder manuell tun und entsprechende Kosten in Kauf nehmen, oder man automatisiert die Tests. Die Teilnehmer dieses Workshops lernen, wie sie das Werkzeug PHPUnit, den Standard für Testautomatisierung in der PHP-Welt, in ihren Entwicklungsprozess integrieren.

Weiter zum Vortrag

25.10.2018

Was macht sauberen Code aus? Wie wird Code richtig gut? Und wie schreibt man richtig guten Code? In diesem Workshop lernt Ihr das nicht nur, sondern Ihr könnt es auch direkt in die Praxis umsetzen! Zunächst demonstriert Sebastian Bergmann den Einsatz von Domain-Driven Design und Test-Driven Development, natürlich nicht ohne auch über Themen wie Clean Code oder die SOLID-Prinzipien zu sprechen. Danach arbeitet Ihr in Paaren und setzt das Gelernte in die Praxis um. Wir schließen den Tag ab mit einer Review-Runde, in der Ihr Feedback zu Eurem Code bekommt. Um von diesem Workshop wirklich profitieren zu können, bringst Du bitte Dein eigenes Laptop mit Deiner gewohnten Entwicklungsumgebung mit. Neben IDE (oder Texteditor) brauchst Du eine aktuelle Version von PHP und PHPUnit. Frameworks oder Third-Party-Code wird nicht benötigt.

Weiter zum Vortrag

26.10.2018

There has been much talk lately about Event-Driven architectures, Domain-Driven Design, CQRS, and Event Sourcing in particular. Even though those concepts are somehow related, understanding them does not get easier when mixing them up. In this workshop, we will go in-depth with Event Sourcing, briefly touching on related concepts to understand how they relate. Do you believe one could create a full-blown persistence solution with less than 400 lines of code? With Event Sourcing, we can. Come and see for yourself, we will code a working solution live in less than half a day. In the afternoon, it will be your turn to write code and put Event Sourcing to work yourself. While working on the exercise, you will be individually coached by the trainer. Every question will be answered! Make sure to bring a laptop with your favourite development environment (the current version of PHP, an IDE, and PHPUnit). Attendees should have a good working knowledge of PHP, decent OOP skills, and be familiar with the basics of PHPUnit. No frameworks or other third-party code will be needed.

Weiter zum Vortrag

27.10.2018

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.

Weiter zum Vortrag

08.11.2018

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.

Weiter zum Vortrag