Termine in 2015

28.01.2015

The SOLID principle gives us guidelines on how to write maintainable code. MVC ist probably one of the most commonly used design patterns; almost every web framework is MVC. We will analyze the five SOLID principles and put them into context with MVC. Strong project relevance and a few anecdotes are guaranteed.

Weiter zum Vortrag

01.02.2015

Every eight weeks a new version of PHPUnit is released. In this session we discuss features that were added recently to help with writing and running tests. The development of new features is not limited to the PHPUnit core anymore, though. Thanks to Composer there is a thriving ecosystem of plugins available that can be used with ease to make your testing effort more effective. We will have a look at the most commonly used plugins and close with an outlook on the future of PHPUnit.

Weiter zum Vortrag

13.02.2015

Back in the days the LAMP stack did satisfy the needs of the web, making it the big success we all know. But today's applications more often than not require a scalability, security and performance this classic environment can hardly provide. In this session we will have a look at a modern web stack leveraging state-of-the-art components like nginx, php-fpm, redis and more.

Weiter zum Vortrag

One of the most important tasks in software testing is to find the right scope for each test case. What can be covered with unit tests and when are system-level end-to-end tests useful? What are functional tests, integration tests, or edge-to-edge tests? How do you test non-functional aspects such as performance? And where do experiment-driven and test-driven development fit in? We will discuss which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

Weiter zum Vortrag

Join a picturesque tour of a scenic river, flowing through different countries, and finally into the Black Sea. Learn about timber rafting in former times and today. And find out what the hell all this has to do with software architecture.

Weiter zum Vortrag

16.02.2015

Domain logic is the heart and soul of software. It is responsible for representing concepts of the business domain and its rules, providing a foundation for implementing the required processes and workflows. Tangling domain logic with application logic, for instance by coupling it tightly to a framework, leads to software that is hard to test, a pain to maintain, and not flexible enough for changing requirements. These problems can be avoided by inverting the relationship between domain logic and framework. Applying the concepts and practices of domain-driven design leads to applications which are independent of frameworks, independent of any particular persistence technology, and independent of the user interface. It is precisely this independence which makes applications testable: unit tests, edge-to-edge tests and end-to-end tests can all be easily and effectively implemented when the architecture is solid and sound. This two-day training event will be held on February 16-17 2015 in Montréal, right before ConFoo. The attendees will learn how to apply domain-driven design to implement testable applications with PHP. The focus of this training will be on live coding, taking the attendee's questions and feedback into account. Your trainers Sebastian Bergmann, Arne Blankerts, and Stefan Priebsch are world-renowned PHP professionals with combined and complementary expertise in the areas of strategic planning, architecture, quality assurance, systems infrastructure and IT security. Covered training topics include: Domain-Driven Design, Command Query Responsibility Segregation (CQRS), Event Sourcing, Unit Testing, Test-Driven Development, Experiment-Driven Development.

Weiter zum Vortrag

19.02.2015

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

20.02.2015

It is said that the beauty of testing is found not in the effort but in the efficiency. Knowing what should be tested is beautiful, and knowing what is being tested is beautiful. Code Coverage, which is a measure used to describe the degree to which the code is tested, can help with the latter. PHPUnit has had support for code coverage analysis for a long time. This is one of the features that is extended and improved with each release of PHPUnit. This session, presented by the creator of PHPUnit, will cover all aspects of PHPUnit's code coverage functionality in depth. Attendees of this session will learn how to leverage this important functionality more effectively to augment and guide their testing effort.

Weiter zum Vortrag

26.03.2015

Software is never perfect. Failures of software make the news, damage the reputation of companies, and cost money in lost revenue. Testing software early and in a small scope is good, a high degree of test automation is even better. If only it were that simple. In reality, not all code is easy (enough) to test. Sebastian Bergmann, creator of PHPUnit, will open his bag of tricks and demonstrate how you can test code that is hard to test. Stefan Priebsch, a proven expert on software architecture and design, will show how you can avoid these tricks by making untestable code testable. Together they will show how to write clean and testable code, including unit tests, in a live pair programming session.

Weiter zum Vortrag

28.03.2015

It has been argued that Test-Driven Development bears the risk of losing the focus on business value. Domain-Driven Design is an approach to software development that puts a strong focus on business value. Combining ideas of Domain-Driven Design and Test-Driven Development leads to a formalized representation of the ubiquitous language through production code and tests. We will show you how this works.

Weiter zum Vortrag

Traditional content management systems conflate two diverse requirements into one single software: content creation and content delivery. This combined approach leads to complex systems that can hardly be optimized for either use case. This presentation will acquaint you with the concept of a two-stack CMS as well as a proof-of-concept implementation based on Neos and other components.

Weiter zum Vortrag

08.05.2015

For years, the concepts and ideas of open spaces and unconference have become ever more popular in the PHP community. About time to adapt them for tutorials! Join Arne Blankerts and Sebastian Bergmann for this participant-driven workshop. Based on the interests and questions of the attendees we will create an agenda that may include topics such as software architecture, domain-driven design, object-oriented programming, test-driven development, quality assurance, modern and secure infrastructure, automated deployment, and continuous delivery. We invite you to bring your own problems and topics in order to get the most value out of this training!

Weiter zum Vortrag

21.05.2015

The analysis of code coverage is a feature that is extended and improved with each release of PHPUnit. In this session we will cover all aspects of PHPUnit's code coverage functionality in depth. You will learn how to leverage this important functionality more effectively to augment and guide your testing efforts.

Weiter zum Vortrag

22.05.2015

The goal of all tests is to discover problems as early as possible. Depending on the context, the same test can be used to answer different questions about the quality of the software under test. Using the three dimensions of goal, scope, and notation is one approach to categorize tests. Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

Weiter zum Vortrag

07.06.2015

It has been argued that Test-Driven Development bears the risk of losing the focus on business value. Domain-Driven Design is an approach to software development that puts a strong focus on business value. Combining ideas of Domain-Driven Design and Test-Driven Development leads to a formalized representation of the ubiquitous language through production code and tests. Sebastian Bergmann, creator of PHPUnit, and Stefan Priebsch, a proven expert on software architecture and design, will show how you this works in a live pair programming session. The attendees of this workshop will then apply the demonstrated concepts and techniques under the guidance of the two trainers. Bring a laptop with PHP!

Weiter zum Vortrag

08.06.2015

The goal of all tests is to discover problems as early as possible. Depending on the context, the same test can be used to answer different questions about the quality of the software under test. The three dimensions of goal, scope, and notation are one approach to categorize tests. Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

Weiter zum Vortrag

09.06.2015

Visibility is one of OOP's killer features. Objects can have secrets, thus allowing us to create non-public code that can safely be modified. We will cover method and attribute visibility and explore which combinations work best, and which ones to avoid.

Weiter zum Vortrag

Using tried and established frameworks spares you from reinventing solutions others already spent time and effort on implementing. At some point, however, a framework upgrade is in order, and this is not always a smooth process. How can we take advantage of existing code, without coupling our code too tightly to the framework? This session will provide answers and strategies for successful long-term framework usage.

Weiter zum Vortrag

A web application only generates revenue if it is available to users. This is why changes are traditionally deployed when most users sleep. The distribution and activation of a new software release need to be decoupled to make roll-outs during regular business hours feasible. In this talk we will show how to automate all the steps required to get a new version of a PHP web application into production without downtime.

Weiter zum Vortrag

10.06.2015

The new application is ready and could actually go into production – if only someone would have set up the production server already. Or do you even need multiple machines? But how to distribute the services then? And didn't we aim for redundancy to have high availability anyway? Before you make your hardware dealer happy or scale up into the cloud, you should determine what you really need. This talk will give you some pointers on how to design and plan a matching system architecture.

Weiter zum Vortrag

17.06.2015

Unser Legacy-Code entspricht natürlich nicht den heutigen Standards und Best Practices. Wenn wir nur Zeit hätten, dann könnten wir das alles aufräumen; alles neu zu schreiben ist schließlich kein gangbarer Weg. Wie können wir das Aufräumen an unsere Kunden (oder den Chef) "verkaufen"? Dieser Vortrag zeigt strategische Refactoring-Ansätze auf, mit denen man effektiv mit PHP-Altlasten umgehen kann. Wir werden keinen Code zeigen, sondern über Konzepte sprechen und erläutern, wie man diese "verkauft".

Weiter zum Vortrag

Das SOLID-Prinzip gibt uns Regeln an die Hand, wartbaren Code zu schreiben. MVC ist vermutlich eines der meist verwendeten Entwurfsmuster; nahezu jedes Web-Framework folgt dem MVC-Prinzip. Wir sehen uns die verschiedenen SOLID-Prinzipien im MVC-Kontext an – Projektbezug und die eine oder andere Anekdote aus der Praxis sind dabei garantiert.

Weiter zum Vortrag

26.06.2015

Cross Site Scripting, or short XSS, is a security vulnerability as old as the web. Despite continuous efforts to educate developers to properly escape values before outputting though XSS are still a common problem. To mitigate XSS attacks at the browser level Mozilla developed a new by now W3C standard called Content Security Policy (CSP). This talk will introduce you to the feature set of the CSP, to what degree current browsers already support it and how easy it is to enhance the security of your own web application.

Weiter zum Vortrag

Back in the days the LAMP stack did satisfy the needs of the web, making it the big success we all know. But today's applications more often than not require a scalability, security and performance this classic environment can hardly provide. In this session we will have a look at a modern web stack leveraging state-of-the-art components like nginx, php-fpm, Redis and more.

Weiter zum Vortrag

The goal of all tests is to discover problems as early as possible. Dependening on the context, the same test can be used to answer different questions about the quality of the software under test. The three dimensions of goal, scope, and notation are one approach to categorize tests. Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

Weiter zum Vortrag

04.07.2015

Das Ziel aller Tests ist es, Probleme so früh wie möglich zu erkennen. Dieselben Tests können genutzt werden, um verschiedene Fragen der Software-Qualität zu beantworten. Entlang der drei Dimensionen Zielsetzung, Ausführungskontext und Notation können Tests kategorisiert werden. In diesem Vortrag lernst Du, welche Aspekte einer Applikation getestet werden sollten und wie diese Tests verständlich aufgeschrieben, effektiv implementiert und schnell ausgeführt werden können, um verlässliche Ergebnisse zu erhalten.

Weiter zum Vortrag

15.07.2015

Using tried and established frameworks spares you from reinventing solutions others already spent time and effort on implementing. At some point, however, a framework upgrade is in order, and this is not always a smooth process. How can we take advantage of existing code, without coupling our code too tightly to the framework? This session will provide answers and strategies for successful long-term framework usage.

Weiter zum Vortrag

Back in the days, the LAMP stack did satisfy the needs of the web, making it the big success we all know. But today's applications more often than not require scalability, security, and performance this classic environment can hardly provide. In this session, we will have a look at a modern web stack leveraging state-of-the-art components like Nginx, PHP-FPM, Redis, and more.

Weiter zum Vortrag

08.09.2015

A web application only generates revenue if it is available to users. This is why changes are traditionally deployed when most users sleep. The distribution and activation of a new software release need to be decoupled to make roll-outs during regular business hours feasible. In this talk we will show how to automate all the steps required to get a new version of a PHP web application into production without downtime.

Weiter zum Vortrag

25.09.2015

It has been argued that Test-Driven Development bears the risk of losing the focus on business value. Domain-Driven Design is an approach to software development that puts a strong focus on business value. Combining ideas of Domain-Driven Design and Test-Driven Development leads to a formalized representation of the ubiquitous language through production code and tests. Sebastian Bergmann, creator of PHPUnit, and Stefan Priebsch, a proven expert on software architecture and design, will show how you this works in a live pair programming session. The attendees of this workshop will then apply the demonstrated concepts and techniques under the guidance of the two trainers. Bring a laptop with PHP!

Weiter zum Vortrag

26.09.2015

More than a decade since the original release of PHP 5, the language's next major version, PHP 7, brings with it opportunities and challenges for developers. The attendees of this session will learn how to prepare their code for PHP 7 in order to leverage its performance improvements as well as its new functionality offerings as soon as possible and with the least amount of risk.

Weiter zum Vortrag

The SOLID principle gives us guidelines on how to write maintainable code. MVC ist probably one of the most commonly used design patterns; almost every web framework is MVC. We will analyze the five SOLID principles and put them into context with MVC. Strong project relevance and a few anecdotes are guaranteed.

Weiter zum Vortrag

29.09.2015

Mehr als ein Jahrzehnt sind seit dem ersten Release von PHP 5 vergangen. Nun steht mit PHP 7 die nächste große Version vor der Tür, die Entwickler viele neue Möglichkeiten bietet, sie aber auch vor die eine oder andere Herausforderung stellt. In diesem Vortrag lernst Du, wie Du Deinen Code auf PHP 7 vorbereiten kannst, damit so schnell und mit so geringem Risiko wie möglich sowohl von den Performance-Verbesserungen als auch von den neuen Spracheigenschaften profitieren kannst.

Weiter zum Vortrag

Klassische Content-Management-Systeme jonglieren mit zwei gegensätzlichen Anforderungen: Die Verwaltung von Inhalten und deren Auslieferung an Endbenutzer. Ein derartiges System ist allerdings komplex und kann für keine der beiden Anforderungen wirklich optimiert werden. Ein Two-Stack CMS vermeidet dieses Problem. Dieser Vortrag stellt dieses Konzept vor und zeigt eine mögliche Umsetzung unter Verwendung von Neos und weiteren quelloffenen Komponenten.

Weiter zum Vortrag

Endlich, das neue Feature ist fertig! Jetzt muss das Ganze nur noch auf die Server. Wer zieht denn dieses Mal das kurze Streichholz und muss sich für 3 Uhr den Wecker stellen? Genügt eine Downtime von einer Stunde? Hoffentlich gibt es keine Probleme, sonst brauchen wir mindestens zwei Stunden. Klingt vertraut, aber kann man halt nicht ändern? Von wegen! Denn mit den richtigen Werkzeugen und einer verlässlichen Automatisierung wird jedes Deployment zum Kinderspiel. Egal ob Aktualisierung der Linux-Distribution, Deployment der eigenen Anwendung oder Anpassung der Konfiguration – Hand in Hand mit der Paketverwaltung des Betriebssystems lassen sich mit erstaunlich wenig Aufwand selbst komplexeste Umgebungen vollständig automatisiert erstellen und pflegen.

Weiter zum Vortrag

02.10.2015

Am Erscheinungstag der neuen Major Version von PHPUnit erklärt Sebastian Bergmann bei der PHP User Group Köln/Bonn, was es Neues gibt, warum statt PHPUnit 4.9 nun PHPUnit 5.0 erschienen ist und was das mit PHP 7 zu tun hat. Darüber hinaus wird es einen Ausblick auf die Versionen PHPUnit 5.1 (Dezember 2015) bis PHPUnit 6.0 (August 2016) geben.

Weiter zum Vortrag

08.10.2015

Every eight weeks a new version of PHPUnit that adds new functionality is released. These releases do not break backwards compatibility, making it easy for developers to update. The October 2015 release, PHPUnit 5.0, however, needs to break backwards compatibility to prepare PHPUnit for PHP 7. We will discuss how PHPUnit had to be adapted for PHP 7, how PHPUnit benefits from PHP 7, what additional changes PHPUnit 5 brings with it, and we'll close with a look ahead to PHPUnit 6.

Weiter zum Vortrag

PHP gives developers a great deal of freedom to achieve their goals. In larger-scale projects, PHP also provides you with a lot of rope to hang yourself with, and short cycles of rapid development can quickly turn into years of maintenance nightmare. We will discuss five rules that every PHP developer and aspiring craftsman should know and stick to.

Weiter zum Vortrag

15.10.2015

Mehr als ein Jahrzehnt sind seit dem ersten Release von PHP 5 vergangen. Nun steht mit PHP 7 die nächste große Version vor der Tür, die Entwickler viele neue Möglichkeiten bietet, sie aber auch vor die eine oder andere Herausforderung stellt. In diesem Vortrag lernst Du, wie Du Deinen Code auf PHP 7 vorbereiten kannst, damit so schnell und mit so geringem Risiko wie möglich sowohl von den Performance-Verbesserungen als auch von den neuen Spracheigenschaften profitieren kannst.

Weiter zum Vortrag

16.10.2015

When Node.js made its first appearance in 2009 many declared that to be the end of PHP. Yet today, about 6 years later, both environments are very much alive and kicking! Even better: Combining the two may very well be the answer to the needs of the next generation of web applications. This talk will introduce you to a system- and software-architecture that combines Node.js, PHP and Redis into a truly powerful web stack.

Weiter zum Vortrag

17.10.2015

Cross Site Scripting (XSS) is a security vulnerability as old as the web. Despite continuous efforts to educate developers to properly escape values before outputting, though, XSS vulnerabilities are still a common problem. The Content Security Policy (CSP) was developed to mitigate XSS attacks at the browser-level. This talk will introduce you to the feature set of this W3C standard, to what degree current browsers already support it, and how easy it is to enhance the security of your own web application based on various practical examples and common scenarios.

Weiter zum Vortrag

26.10.2015

Do you still remember Telnet? The software used before there was SSH? Would you still consider using it to access any of your servers? Why then do you still use plain HTTP? It's not only a good idea to completely switch to HTTPS because search engines are starting to favor encrypted websites. This talk will get you ready for it! We'll check how to properly configure the web server, what to look for with PHP, and how to work around common problems and pitfalls.

Weiter zum Vortrag

Creating software for the web requires to quickly react to massive changes with regards to number of users, and the amount of data to deal with. Those requirements are challenging and rather different from "classical" software solutions. This session gives an overview over current trends in web-related software architecture, and outlines their benefits and drawbacks.

Weiter zum Vortrag

Traditional content management systems conflate two diverse requirements into one single software: content creation and content delivery. This combined approach leads to complex systems that can hardly be optimized for either use case. This presentation will acquaint you with the concept of a two-stack CMS as well as a proof-of-concept implementation based on Neos and other components.

Weiter zum Vortrag

27.10.2015

More than a decade since the original release of PHP 5, the language's next major version, PHP 7, brings with it opportunities and challenges for developers. The attendees of this session will learn how to prepare their code for PHP 7 in order to leverage its performance improvements as well as its new functionality offerings as soon as possible and with the least amount of risk.

Weiter zum Vortrag

28.10.2015

There is legacy code. And there is this shiny new architecture, that would make your life easier. Unfortunately, starting from scratch is not an option, and refactoring old code bears unpredictable risks. This session shows concepts and strategies to implement bridge technologies that close the gap between old and new code and architectures.

Weiter zum Vortrag

This is the story of one of programming's great unsung heroes. I mean you've seen him, but you never knew who he was. You've cheered for him and cried for him and women have wanted to die for him. But did he ever get any credit, or the girl? No! He's what we call a test double. Test doubles lead an interesting, yet sometimes underappreciated life as dummies, stubs, spies, or mocks in the shadow of "real" objects. The audience will learn how to use Prophecy, a powerful mocking library for PHP, effectively with PHPUnit for designing and testing clean, modern PHP code.

Weiter zum Vortrag

Every eight weeks a new version of PHPUnit that adds new functionality is released. These releases do not break backwards compatibility, making it easy for developers to update. The October 2015 release, PHPUnit 5.0, however, needs to break backwards compatibility to prepare PHPUnit for PHP 7. We will discuss how PHPUnit had to be adapted for PHP 7, how PHPUnit benefits from PHP 7, what additional changes PHPUnit 5 brings with it, and we'll close with a look ahead to PHPUnit 6.

Weiter zum Vortrag

29.10.2015

Having automated the process for testing a new version of your software and getting it into production, deployment has lost its terror. Instead of torturing your mind with questions such as "Am I sure that I have not forgotten anything?" you simply push the proverbial button and everything is fine. If at all, the only question that remains is whether or not you really need such a button. In this workshop you will learn all the steps necessary, from build automation over continuous integration to automated deployment. All the while taking into account that the release of a new version must not cause any downtime, must not impact active user sessions, and may have to handle the migration of database schemas. Under the guidance of Sebastian Bergmann and Arne Blankerts you will implement these steps in a virtual machine. Therefore your successful participation in this training depends on you bringing a laptop.

Weiter zum Vortrag

17.11.2015

Drupal. Joomla. Laravel. Magento. NEOS. TYPO3. WordPress. Symfony. Zend Framework. No matter which standard solution you're extending with custom modules or which framework you use for building your custom application, there are common challenges you're faced with when you want to embed testing in your development process. Based on the interests and questions of the attendees, we will create an agenda for this participant-driven tutorial that may include, for instance, building testable applications (and testing them) and testing strategies for custom extension development.

Weiter zum Vortrag

20.11.2015

Every eight weeks, a new version of PHPUnit is released. In this session, we discuss features added recently to help with writing and running tests. The development of new features is no longer limited to the PHPUnit core. Thanks to Composer, a thriving ecosystem of plugins is available that can be easily used to make your testing efforts more effective. We will examine the most commonly used plugins and close with a discussion of the future of PHPUnit.

Weiter zum Vortrag