Dates in 2014

February 02, 2014

Parts of the PHP community take pride in code that is of high quality and well tested. Outside of the PHP community the prejudice against the language and its ecosystem still prevails. Quality Assurance in general and Unit Testing in particular have come a long way since the inception of PHPUnit thirteen years ago: simple PHP programming has evolved into software engineering with PHP. Join Sebastian Bergmann, the creator of PHPUnit, as he shares his experience on how PHPUnit is used in different communities and projects, and what's been learnt along the way.

More details

February 24, 2014

A clean architecture lays the foundation for 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. Attendees of this two-day training event at ConFoo will learn how to design and implement testable applications with PHP. Each development step will be explained in-depth while a testable application is built, based on a detailed specification for a non-trivial web application that must deal with asynchronous processing and concurrency issues. Covered training topics include: domain modeling, command query responsibility segregation, event sourcing, unit testing, test-driven development and experiment-driven development. Just as a clean architecture is the basis for independent, testable applications, a strong training is the foundation for independent, effective application developers. thePHP.cc's Sebastian Bergmann, Arne Blankerts, and Stefan Priebsch are world-renowned PHP professionals with combined and complementary expertise in the areas of structure-building, strategic planning and IT security. Don't miss this opportunity to learn from these industry leaders in this highly interactive and entertaining training event.

More details

February 26, 2014

PHP developers must consider a variety of factors to ensure the utmost security of their software. Programming errors are not always to blame for failures; conceptual flaws and simple configuration mistakes risk rendering an implementation useless. In this talk, security expert Arne Blankerts provides PHP-specific solutions to common problems. Since security hazards are best avoided, there is a strong emphasis on detection of sources of trouble.

More details

February 28, 2014

User tracking is easy: just use Google Analytics, which also supports A/B tests. Done. But wait! Are you sure you want Google to have all your data, and depend on an external service for crucial functionality to improve the user experience? In this presentation, the speakers will explain why user tracking and A/B testing should be self-implemented, and present strategies and concepts to successfully do that.

More details

In Open Source, they say, all good work starts by scratching a developer's personal itch. They also say that to solve an interesting problem you have to find problems that are of interest to you. Sebastian Bergmann has been working on Open Source software in the PHP ecosystem for over decade. Join him for this session to learn how a problem a single user of a software has is turned into a solution that brings benefit to all users of the software.

More details

March 11, 2014

Object-Oriented Programming inevitably leads to dependencies on other objects; a problem commonly resolved by applying Dependency Injection (DI). But not every implementation represents an ideal solution for every reality. In this talk, Arne Blankerts discusses factories and locators while demonstrating common mistakes when using so-called "dependency injection containers". Programmers are provided with a more comprehensive view of Dependency Injection.

More details

March 29, 2014

You can build your software right – with 100% code coverage and high internal quality – and still fail to build the right software, the one the customer wants. How can you test that you are building the right software, and the right way? Developers (should) love unit tests. Other project stakeholders love acceptance tests. But which of these tests should drive the development? This session elucidates what Acceptance Test-Driven Development (ATDD), Behavior-Driven Development (BDD), and Test-Driven Development (TDD) are about, what their strengths and weaknesses are, and how you can find the right test mix for your project.

More details

May 16, 2014

Websites are under siege. Constantly. Either by deliberate attacks or due to probing scripts, looking for new victims. Most frameworks provide solutions to counter common attack vectors, ensuring that otherwise typical mistakes do not lead into a vulnerability. But there is more to writing secure applications than basic input sanitizing and output escaping. Insecure data persistence, flaws in the handling of authentication and authorization, or trivial implementation quirks may render any protection mechanism useless. In this training you will learn the rules you need to follow when developing applications that are secure by design. You will also learn how to implement those rules, protecting your users as well as your site from harm.

More details

Using tried and established frameworks spares you from reinventing solutions others already spent time and effort on implementing. While relying on these proven solutions can support you in getting your software into production faster, tight coupling of your code with the framework should be avoided: To make testing easy and efficient, to stay independent of third-party release cycles, and of course to reduce maintenance efforts. In this training you will learn how to maximize the benefit of using a framework while staying independent enough from it to minimize the risks of coupling your application too tightly to it.

More details

May 31, 2014

You can build your software right – with 100% code coverage and high internal quality – and still fail to build the right software, the one the customer wants. How can you test that you are building the right software, and the right way? Developers (should) love unit tests. Other project stakeholders love acceptance tests. But which of these tests should drive the development? This session elucidates what Acceptance Test-Driven Development (ATDD), Behavior-Driven Development (BDD), and Test-Driven Development (TDD) are about, what their strengths and weaknesses are, and how you can find the right test mix for your project.

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

June 01, 2014

Response time is crucial – not only for online stores. But what if the performance is lacking? Buy more powerful servers? Migrate into the cloud? Add yet another layer of caching or blame the under powered database? All possible options, but before you make your hardware vendor happy you should reconsider your software architecture! This session will acquaint you with ideas for a high performance software architecture which let you scale from single server to cloud.

More details

June 02, 2014

Frameworks solve common problems, and thus allow rapid application development. Agile and incremental software development, however, does not magically create architectures as you go. We will prove the point that your favourite framework does not provide you with an application architecture, and analyze what implications this has. This talk is not about big design up front, and not about "your framework is bad", or "another framework is better". It is about avoiding to end up in a situation where software works, but maintenance is tough, expensive, and bears more risks than you can afford to take, regardless of which framework you are using.

More details

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.

More details

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.

More details

June 03, 2014

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? 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.

More details

Object-Oriented Programming inevitably leads to dependencies on other objects; a problem commonly resolved by applying Dependency Injection (DI). But not every implementation represents an ideal solution for every reality. In this talk, Arne Blankerts discusses factories and locators while demonstrating common mistakes when using so-called "dependency injection containers". Programmers are provided with a more comprehensive view of Dependency Injection.

More details

Facebook has scaled their service to over a billion users, which is very impressive. At some point, however, PHP became their bottleneck. Turns out that rewriting over a million lines of code, even in another language, is not a viable option. So if you cannot change the application, why not change the platform? That is exactly what Facebook did when they created HipHop. HipHop was great, but ultimately failed. Now, the new kid on the block is HHVM, an alternative runtime for PHP. Will HHVM replace PHP? Should you care? Sketching out the history of the project, and its potential future, we will look not only from a technical point of view, but also analyze the business impact.

More details

The PHP language is almost 20 years old, as is its reference implementation that can be downloaded from PHP.net. In the last decade, alternative runtimes for PHP came and went. The HipHop VM (HHVM) that is developed – and used in production – by Facebook, however, is probably not only here to stay but very likely going to influence the future of PHP considerably. High time to have an in-depth look at what HHVM is and how it works.

More details

The LAMP stack has been the tried and true backbone of the web for almost two decades. Lately though, more and more websites replace Apache HTTPD with nginx and move from plain (My)SQL to No(t only)SQL. And now it's time to get ready for a new heart: HHVM is a powerful new runtime for the PHP language and this session will show you how to get your application to run on it.

More details

July 14, 2014

Kurze Antwortzeiten sind im Web das Wichtigste – nicht nur für Online-Shops. Aber was tun, wenn die Performance nicht ausreicht? Mehr und leistungsfähige Hardware kaufen? In die Cloud migrieren? Eine weitere Cache-Schicht einführen oder die Schuld auf die überforderte Datenbank schieben? Alles mögliche Optionen, aber bevor Sie Hardware-Hersteller und Provider glücklich machen, sollten Sie vielleicht ein mal einen Blick auf Ihre Software-Architektur werfen! Diese Session stellt Konzepte und Ideen für eine hochperformante Software- und Systemarchitektur vor, mit der problemlos vom Einzelserver bis in die Cloud skaliert werden kann.

More details

July 17, 2014

Kurze Antwortzeiten sind im Web das Wichtigste – nicht nur für Online-Shops. Aber was tun, wenn die Performance nicht ausreicht? Mehr und leistungsfähige Hardware kaufen? In die Cloud migrieren? Eine weitere Cache-Schicht einführen oder die Schuld auf die überforderte Datenbank schieben? Alles mögliche Optionen, aber bevor Sie Hardware-Hersteller und Provider glücklich machen, sollten Sie vielleicht ein mal einen Blick auf Ihre Software-Architektur werfen! In diesem Workshop lernen die Teilnehmer, wie eine hoch-performante Software- und System-Architektur aussehen kann, mit der man vom einzelnen Server bis hin in die Cloud problemlos skalieren kann.

More details

August 24, 2014

Seit gefühlt einer Ewigkeit versucht die IT-Industrie ihren Anwendern bei zu bringen, dass sie nur sichere und starke Passworte verwenden sollen – um dann bei deren sicheren Speicherung kollosal zu versagen. An einer langen Historie an sicherheitsrelevanten Vorfällen zeigt sich mehr als deutlich, Passworte sind zur Authentifizierung ziemlich ungeeignet. Um dieses Problem endlich mal zu lösen, schauen wir uns in diesem Vortrag mal Alternativen zur passwortgestützten Anmeldung an – und wie man diese in PHP implementiert.

More details

September 20, 2014

We all know that classes with 2000 lines of code are not a good idea. We all know that we should break such classes down into smaller parts. But how? How do you create small(er) objects that are still meaningful and have business value? And will this guarantee that we end up with maintainable and testable code? This talk shows how this can be achieved, introducing and explaining the SOLID principle from a very practical point of view.

More details

September 24, 2014

Die fachlichen Anforderungen sind noch nicht klar, aber die Entwicklung soll schon einmal beginnen. "Big Design Up Front" ist nicht mehr zeitgemäß, wir entwickeln schließlich agil. Am Ende steht dann oftmals Code, der Geschäftskonzepte und -regeln nicht klar und explizit repräsentiert. Beim Domain-Driven Design rückt die Fachlichkeit ins Zentrum der Aufmerksamkeit. Sie lernen Entitäten, Wertobjekte, Repositories, Services, Aggregate sowie Domain Events kennen und verstehen deren Zusammenspiel. Und was hat es mit dieser allgegenwärtigen Sprache auf sich?

More details

Die neue Applikation ist fertig und eigentlich muss jetzt nur noch jemand den Produktivserver aufsetzen. Oder müssen es mehrere Server werden? Ein wenig mehr an Hardware schadet doch sicher nicht? Und außerdem ist es dann ja ausfallsicher! Bevor man jedoch die Hersteller und Provider glücklich macht, sollte der tatsächliche Bedarf ermittelt und eine wirklich passende Infrastuktur geplant werden. Die Teilnehmer dieses Workshops lernen, wie man eine optimale Systemarchitektur konzipiert und dabei den richtigen Mix aus Skalierbarkeit, Ausfallsicherheit und Performance finden kann.

More details

Wie stellt man sicher, dass die Software stets in einem releasefähigen Zustand ist? Und wie koordiniert man die Arbeit der – möglicherweise an verschiedenen Standorten sitzenden – Entwickler sinnvoll? Dieser Workshop stellt Prozesse für Entwicklung, Release-Management und Deployment von Software für das Web vor, die Ihre Teamarbeit spürbar effektiver machen. Dabei verharren wir nicht in der abstrakten Theorie sondern die Teilnehmer lernen anhand praktischer Beispiele die Grundlagen sowie Best Practices für den Einsatz von Git.

More details

Ihre Webseite verwendet eine erprobte Template-Engine und ist somit perfekt gegen XSS geschützt. Mit SQL-Injections braucht Ihnen dank ORM ebenfalls keiner kommen, denn die verhindert schließlich das Framework. Und auch sonst haben Sie alles richtig gemacht und schützen nicht nur Ihre Formulare gegen CSRF, sondern wissen, dass zur sicheren Übertragung von Daten in HTTPS geschaltet werden muss. Doch reicht das? Die Teilnehmer dieses Workshops erfahren, welchen Gefahren Webprojekte ausgesetzt sind, warum auch und gerade Prozessfehler viele an sich gute und richtige Implementierungen leider wirkungslos machen und warum man sich nicht alleine auf sein Framework verlassen sollte.

More details

Wer will schon ständig das Rad neu erfinden? Standardlösungen sparen Zeit und damit Geld. Aber ist das wirklich so? Welche Nachteile kann man sich durch falsche Verwendung von Code auf längere Sicht einhandeln? Kann man solche Probleme bereits im Vorfeld vermeiden? Die Programmierer von Frameworks und Standardlösungen sind nicht automatisch immer die besseren Programmierer. Nachwelchen Kriterien soll Code von Drittanbietern beurteilt werden? Und wann ist es besser, eine Lösung selbst zu entwickeln? Mit diesem Workshop schaffen Sie die Voraussetzungen dafür, in Zukunft die richtigen Entscheidungen treffen.

More details

September 25, 2014

Das Internet hält für Architekten und Software-Entwickler ganz besondere Herausforderungen bereit, allein was Performance und Skalierbarkeit betrifft. Auch wenn heute schon oft "API first" entwickelt wird und ohne SOAP oder REST kein System vollständig ist, denken viele Entwickler und Architekten aber immer noch in monolithischen, datenbankzentrischen Systemen. In diesem Workshop füllen wir den Begriff SOA mit Leben und erkunden, was es mit dem neuen Schlagwort "Microservice Architecture" auf sich hat. Gewürzt wird das Ganze mit einer guten Handvoll Anekdoten aus dem Leben eines Beraters.

More details

Der Testini ist ein Cocktail, der vor allem bei den Beteiligten eines Softwareprojekts beliebt ist. Seine Zutaten – in der Regel kleine wie große Tests – und Zubereitung sind unter seinen Fans höchst umstritten und werden leidenschaftlich diskutiert. Gewürzt wird er oft mit Abhängigkeiten auf externe Dienste. Professionelle Testmixer warnen davor, so einen Testini über mehrere Stunden zu "genießen". Das führt nur zu Kopfschmerzen. Eine der wichtigsten Aufgaben beim Testen von Software ist es, für jeden spezifizierten Testfall eine minimale Umgebung zu finden, in der dieser Test sinnvoll ausgeführt werden kann. In diesem Workshop lernen Sie, wie auch Sie den passenden Testmix finden – garantiert ohne Kopfschmerzen.

More details

Wer sämtliche Schritte automatisiert hat, um eine neue Version seiner Software zu testen und in Produktion zu stellen, für den hat das Deployment jeden Schrecken verloren. Anstatt sich mit Fragen wie "Habe ich auch nichts vergessen?" zu quälen drückt man den sprichwörtlichen Knopf und alles ist gut. Wenn überhaupt, so stellt sich überhaupt nur die Frage, ob man einen solchen Knopf überhaupt noch braucht. In diesem Workshop erwerben die Teilnehmer das nötige Know-How, um den Build-Prozess ihrer Software für kontinuierliche Integration und Inspektion sowie für das Deployment zu automatisieren. Nach diesem Workshop wissen die Teilnehmer, was es unter anderem mit Apache Ant und Jenkins CI auf sich hat.

More details

Software staubt recht schnell ein. Was heute eine richtige Entscheidung war, kann morgen schon eine Altlast sein. Durch Refactoring kann man die Struktur von Software verbessern, ohne das nach außen wahrnehmbare Verhalten zu ändern. Sie lernen nicht nur wichtige Code Smells kennen, sondern auch geeignete Refactorings, um die Code Smells erfolgreich zu beseitigen. Wir werden auch der Frage nachgehen, wie man Code refaktorieren kann, für den es keine automatisierten Tests gibt.

More details

Ständig das Rad neu zu erfinden ist nicht nur nervig sondern auch wenig produktiv. Nicht zuletzt deswegen setzen viele Entwickler auf bereits existierende Frameworks und fertige Komponenten. Ein grundsätzlich sinnvolles Vorgehen – für viele Probleme im Alltag bedarf es jedoch keiner komplexen Lösung, sondern nur des passenden Konzepts. Dieser Workshop zeigt, wie man mit erstaunlich wenigen Zeilen Quellcode diverse Alltagsprobleme schnell und elegant lösen kann. Die Teilnehmer können aus einer Vielzahl an Themen auswählen und bestimmen so den Verlauf des Workshops interaktiv mit.

More details

September 26, 2014

Nicht alle Eigenschaften einer Software sind für die Benutzer und Entwickler der Software gleichermaßen wichtig. Für die Entwickler ist es beispielsweise wichtig, dass der Code einfach zu lesen, zu verstehen, anzupassen und zu erweitern ist. Aber kann man Eigenschaften von Code wie Lesbarkeit, Verständlichkeit, Anpassbarkeit und Erweiterbarkeit eigentlich messen? Und was hat das mit Softwarequalität zu tun? Wie kann man diese Qualität steigern? Und wieviel Qualität braucht man überhaupt? Fragen wie diesen ist dieser Workshop gewidmet, der nicht nur die notwendige Theorie vermittelt sondern auch deren praktische Umsetzung mit den passenden Werkzeugen zeigt.

More details

Software lebt meist viel länger, als man bei der Programmierung dachte. Hinzu kommt, dass sich Technik, Umfeld und Unternehmen in rasantem Tempo weiterentwickeln. Vorhandene Software wird daher ganz von selbst alt, und das meistens schneller, als einem lieb ist. Einfach die ganze Software neu zu schreiben ist aber meist wirtschaftlich nicht darstellbar. Wir müssen also Mittel und Wege finden, mit Legacy-Code zu leben. Das schließt größere Änderungen und Erweiterungen mit ein. In diesem Workshop lernen Sie verschiedene Techniken kennen, mit denen Sie Legacy-Code und neuen Code erfolgreich miteinander unter einen Hut bringen.

More details

Web-Applikationen entfalten ihren Geschäftswert nur, wenn sie online erreichbar sind. Deployments finden deshalb am besten nur in der Nacht statt, denn das Update auf die neuste Version erfordert das Löschen aller Caches und anschließendes Neuwärmen. Und auch die Migration des Datenbankschemas sowie der laufenden Sessions sind ansonsten aufgrund inkompatibler Datenstrukturen ein Problem. Die Webseite zum Deployment jedoch in den Wartungsmodus zu versetzen ist die denkbar schlechteste Lösung aus den Anfängen des Internets. Die Teilnehmer dieses Workshops lernen, wie ein modernes Deployment ohne Wartungsfenster funktionieren kann und mit welchen technischen Lösungen man die entsprechenden Konzepte und Prozesse umsetzt.

More details

October 09, 2014

Webseiten müssen schnell sein, denn die Bereitschaft, auf das Laden einer Webseite zu warten, sinkt stetig. Folglich zählt jede Millisekunde, wenn es darum geht, Absprünge zu vermeiden. Egal ob reale Ladezeiten, gefühlte Dauer des Seitenaufbaus oder das Reaktionsverhalten im Browser – es gibt viele Stellen, an denen im Client gemessen und regelmäßig optimiert wird. Tauchen Engpässe hingegen im Backend auf, gilt scheinbar vor allem eine Parole: exzessives Caching! Blöd nur, wenn sich Inhalte so häufig ändern, dass ein Caching praktisch wirkungslos ist. Könnte man doch nur eine Applikation so entwerfen, dass sie ohne Caching hochperformant arbeitet ...

More details

October 10, 2014

Soll ich meine Software besser als Ganzes mit End-to-End Tests testen oder doch lieber im Kleinen mit Unit Tests? Und welchen Ansatz soll ich verfolgen? Acceptance Test-Driven (ATDD)? Behavior-Driven Development (BDD)? Test-Driven Development (TDD)? Diese und andere Diskussionen rund um das Testen von Software führen Entwicklerinnen und Entwickler leider allzu oft nur aus der Werkzeugsicht und verlieren dabei den eigentlichen Entwicklungsprozess aus den Augen. Dieser Vortrag erklärt nicht nur die unterschiedlichen Ansätze wie ATDD, BDD und TDD sondern beleuchtet auch wann und in welchem Kontext sie ursprünglich erfunden beziehungsweise wiedergefunden wurden. Die Teilnehmer gewinnen ein Verständnis für die gängigen Prozessbausteine rund um das Testen und können auf dieser Grundlage den für sie passenden Prozess ebenso wählen wie die Werkzeuge, mit dem sie den Prozess umsetzen.

More details

October 23, 2014

Domain-Driven Design puts a focus on domain logic, the heart of business software. It is in this layer of the software that business concepts are represented in code together with their respective business rules. The state that reflects the business situation is controlled and used here. Business rules can be represented in code using state machines. These can beimplemented effectively and with ease by applying the State design pattern. Join Sebastian Bergmann on a whirlwind journey through areas of software engineering such as design patterns, static code analysis, software visualization, code generation, and test generation.

More details

October 26, 2014

Die aktuellen Frameworks zeigen es: der Trend in PHP geht klar zu noch mehr OOP. Je komplexer die Anforderungen werden, desto wichtiger sind eine klare Struktur und gute Wartbarkeit des Codes. Dies und echte Wiederverwendbarkeit erzielt nur, wer objektorientiert programmiert. Aber was genau macht wartbaren und wiederverwendbaren Code aus? In diesem Workshop verstehen Sie dank pragmatischer, praxisnaher Erläuterungen fortgeschrittene Techniken wie Dependency Injection, abstrakte Basisklassen und Interfaces und lernen, diese richtig einzusetzen. Sie erleben live, wie man nach aktuellen Best Practices programmiert und was es mit Akronymen wie SOLID auf sich hat. Anstelle Folien mit vorbereiteten Standardbeispielen zu zeigen, erläutern und diskutieren wir interaktiv Probleme und Lösungsansätze anhand von liveprogrammiertem Beispielcode. Durch Praxisübungen stellen wir sicher, dass Sie Ihr Wissen anschließend auch wirklich in der Praxis anwenden können. Bringen Sie deshalb ihren Laptop mit einer aktuellen PHP-Umgebung mit.

More details

October 27, 2014

The end of Cross Site Scripting? 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.

More details

October 28, 2014

It is a fact of life for every developer: you have to deal with code that has been written before your time and does not follow state-of-the-art best practices. The audience will learn in this session how branch-by-abstraction can be applied to "hide" ugly code behind beautiful APIs and how automatically generated characterization tests can be used to safeguard against unintended changes in legacy code while it is modernized. This makes testing in legacy applications possible and enables writing new code that does not suffer from the limitations imposed by the project's history.

More details

Domain-Driven Design puts a focus on domain logic, the heart of business software. It is in this layer of the software that business concepts are represented in code together with their respective business rules. The state that reflects the business situation is controlled and used here. Business rules can be represented in code using state machines. These can be implemented effectively and with ease by applying the State design pattern. Join Sebastian Bergmann on a whirlwind journey through areas of software engineering such as design patterns, static code analysis, software visualization, code generation, and test generation.

More details

Big enterprises such as Amazon are leading the way: perpetual A/B testing is used to continuously improve the shop. Do these A/B tests have to be implemented separately in JavaScript that is executed on the client side? How can the ideas of "The Lean Startup" be implemented in PHP? This session shows how A/B tests can be used to successfully apply experiment-driven development in PHP-based projects. Using pragmatic and practical examples the audience will experience live how new features can be gradually rolled out as an experiment for a (growing) subset of a website's user base, how you can operate multiple versions of your application in production, and what the advantages of doing so are.

More details

Using tried and established frameworks spares you from reinventing solutions others already spent time and effort on implementing. While relying on these proven solutions can support you in getting your software into production faster, tight coupling of your code with the framework should be avoided: To make testing easy and efficient, to stay independent of third-party release cycles, and of course to reduce maintenance efforts. In this session you will learn how to maximize the benefit of using a framework while staying independent enough from it to minimize the risks of coupling your application too tightly to it.

More details

October 29, 2014

Beyond unit tests, integration tests are crucial. Implemented as end-to-end tests, however, they are cumbersome to write and slow to execute. Edge-to-edge tests are easier to write and faster to execute. More importantly, they require minimal maintenance. Most importantly, they deliver highly reliable results. Developers in the audience will gain expertise in the confident and effective implementation of integration tests with PHPUnit.

More details

November 10, 2014

Eine Webanwendung kann nur dann Geschäftswert generieren, wenn sie für Anwender verfügbar ist. Änderungen führt man daher klassisch dann durch, wenn die Anwender schlafen. Um die Softwareverteilung in die reguläre Arbeitszeit verlegen zu können, müssen das Verteilen und die Inbetriebnahme der neuen Version voneinander entkoppelt werden. In diesem Vortrag zeigen die Referenten, wie man sämtliche Schritte automatisiert, um eine neue Version einer PHP-Webanwendung in Produktion zu stellen und dabei weder offline gehen noch vermeintlich inkompatible Versionen fürchten muss. Die vorgestellten Konzepte und Prozesse wurden unter anderem bei brack.ch und globetrotter.de implementiert und sind auch jenseits der PHP-Welt anwendbar.

More details

November 12, 2014

Wer sämtliche Schritte automatisiert hat, um eine neue Version seiner Software zu testen und in Produktion zu stellen, für den hat das Deployment jeden Schrecken verloren. Statt sich mit Fragen wie "Habe ich auch nichts vergessen?" zu quälen, drückt man den sprichwörtlichen Knopf, und alles ist gut. Wenn überhaupt, so stellt sich eigentlich nur noch die Frage, ob man einen solchen Knopf überhaupt noch braucht. In diesem Workshop erwerben die Teilnehmer das nötige Know-how, um den Build-Prozess ihrer Software nicht zuletzt für das Deployment vollständig zu automatisieren. Mittels kontinuierlicher Integration und Inspektion unter Verwendung von Apache Ant und Jenkins CI, sowie automatisierter Packetierung und Verteilung durch Einsatz von RPM, Puppet und Co. Sämtliche Schritte können durch die Teilnehmer in einer bereitgestellten VM (VirtualBox) interaktiv nachvollzogen werden. Das Mitbringen eines eigenen Laptops ist daher dringend empfohlen.

More details

November 22, 2014

Most web applications are changed and adapted quite frequently and quickly. What was sufficient yesterday can be insufficient today. Moving fast and breaking things is not a problem if you have a test harness and process in place you can trust to prevent you from deploying broken things into production. Attendees of this session will learn how create tests that are easy to write and fast to execute, require minimal maintenance, and deliver highly reliable results.

More details