Dates and Events
January 2025
Web Security 360: XSS & die Content Security Policy
Internet-Anwendungen werden rund um die Uhr angegriffen. Sicherheit sollte daher nicht nur eine Nebenrolle spielen. Cross-Site-Scripting lässt sich effektiv verhindern - nicht zuletzt durch Einsatz der Content Security Policy
Details RegistrationClean Code-Prinzipien: Integration Operation Segregation Principle
Wir erläutern jeden Monat ein Clean Code-Prinzip und zeigen, wann und wie man es richtig anwendet. Eine klare Trennung von Aufgaben und Verantwortlichkeiten verbessert den Softwareentwurf. Heute geht es um die viel zu wenig beachtete Aufteilung des Codes in Integrationen und Operationen.
Details RegistrationDevOps: Hardening Nginx & PHP-FPM
Damit die erstellte Software ihr volles Potenzial entfalten kann, bedarf es einer geeigneten Betriebsumgebung. Denn nur wenn alle Komponenten gut aufeinander abgestimmt sind und man die Kontrolle über alle Systeme hat, steht dem Erfolg nichts mehr im Wege. NGINX und PHP-FPM haben sich als Laufzeitumgebung für PHP-Anwendungen im Alltag etabliert. In dieser Session werfen wir daher einen Blick auf optimierte und gehärtete Einstellungen, die einen sicheren Betrieb des Gesamtsystems gewährleisten.
Design Patterns: State
Jeden Monat lernen wir in 45 Minuten durch Live-Coding ein Entwurfsmuster kennen und richtig einzusetzen. Heute lernen wir, zustandsabhängig unterschiedliches Verhalten eines Objekts abzubilden.
Details RegistrationOOP Deep Dive
Elevate your programming skills by mastering Object-Oriented Development in our one-day intensive class. We will cover essential principles and best practices that will empower you to build robust, scalable software solutions.
Details RegistrationTest Automation with PHPUnit
Automated tests save costs and safeguard future changes and enhancements to the software.
Details RegistrationEinführung in die kontinuierliche Integration
Durch die Automatisierung aller Build-Prozesse behalten Sie den Überblick und gewinnen Zeit für die Weiterentwicklung Ihrer Software.
Modern PHP: Type Safety
A closer look into new and rarely used PHP features. Since PHP 8, PHP can optionally be used as a type-safe language. Let's explore the advantages.
Live Coding: Chess
No textbook and no training can replace programming practice. Join us in our live coding sessions, where we teach you how to code like a pro. Moving a piece on a chess board can't be difficult to implement. Or can it?
Tester's Corner: Riskante Tests erkennen und behandeln
Jeden Monat behandeln wir kurz und prägnant ein Thema rund um das automatisierte Testen von Software.
Details RegistrationFebruary 2025
Web Security 360: Injektion Angriff
Internet-Anwendungen werden rund um die Uhr angegriffen. Sicherheit sollte daher nicht nur eine Nebenrolle spielen. Egal ob beim Zugriff auf die Datenbank oder Verwendung von externen Schnittstellen: Kommt Ihre Anwendung mit manipulierten Ein- und Ausgaben klar?
Details RegistrationClean Code-Prinzipien: Favour Composition over Inheritance
Wir erläutern jeden Monat ein Clean Code-Prinzip und zeigen, wann und wie man es richtig anwendet. Vererbung ist ein umstrittenes OOP-Prinzip, da eine Vererbungsbeziehung die stärkste Kopplung ist, die es in der Objektorientierung gibt. Heute lernen wir, wie wir Vererbung vermeiden und stattdessen auf Komposition setzen können.
Details RegistrationModelling: Event Storming
Collaborative modeling might be the next big thing in software development. Let's explore popular modeling methods, one by one. Event Storming is well-suited for collaborative exploration of complex business domains. It's also a great process modelling tool.
Live Demo: PHPUnit 12
No textbook, blog post, or tutorial can replace real practice. Join Sebastian Bergmann to celebrate the release of PHPUnit 12, learn the motivation behind the changes in this new major version, and experience new features in live coding.
Details RegistrationAdvanced PHPUnit
Successful test automation in everyday project work with solutions even for particularly tricky problems.
Details RegistrationDevOps: Logging Strategie
Damit die erstellte Software ihr volles Potenzial entfalten kann, bedarf es einer geeigneten Betriebsumgebung. Denn nur wenn alle Komponenten gut aufeinander abgestimmt sind und man die Kontrolle über alle Systeme hat, steht dem Erfolg nichts mehr im Wege. Klassische Logging-Ansätze erzeugen fast immer eine unstrukturierte Datenflut mit unangemessenem Detaillierungsgrad. In dieser Session werden wir die Logging-Strategie überdenken und mit Hilfe von JournalD überschaubar und durchsuchbar machen.
Design Patterns: Chain of Responsibility
Jeden Monat lernen wir in 45 Minuten durch Live-Coding ein Entwurfsmuster kennen und richtig einzusetzen. Heute üben wir lose Kopplung durch Verkettung von Objekten.
Details RegistrationTester's Corner: PHPUnit anpassen und erweitern
Jeden Monat behandeln wir kurz und prägnant ein Thema rund um das automatisierte Testen von Software.
Details RegistrationRichtig OOP
Ein solides Verständnis für Objektorientierte Programmierung ist eine der wichtigsten Voraussetzungen für den professionellen PHP-Einsatz.
Gitlab CI für Fortgeschrittene
Pipelines im Projektalltag optimieren - mit Lösungen auch für knifflige Probleme.
Modern PHP: Enums
A closer look into new and rarely used PHP features. Since PHP 8.1, we have enumerations, but they are not yet widely used. Let's change that.
March 2025 - May 2025
- Web Security 360: Sicherheitsrelevante Header
- Typsicheres PHP
- DevOps: Rate Limiting APIs
- Clean Code-Prinzipien: Single Level of Abstraction
- Design Patterns: Proxy
- SOLID Deep Dive
- Tester's Corner: Testsuites strukturieren
- Richtiges Deployment
- Modern PHP: Namespaces
- Fortgeschrittene OOP
- Web Security 360: Angriff auf die Session
- Clean Code-Prinzipien: Interface Segregation Principle
- Live Coding: Event Sourcing
- DevOps: Daemons with PHP & Systemd
- Design Patterns: Value Object
- Modelling: User Story Mapping
- Live-Vorführung: Infection
- Containerisierte Anwendungen betreiben
- Dependency Management
- Tester's Corner: Kollaborierende Objekte testen
- Clean Code-Prinzipien: Dependency Inversion Principle
- Web Security 360: Transport Security
- Testautomation mit PHPUnit
- DevOps: Sichere Container
- Modern PHP: Visibility Revisited
- Komplexität vermeiden
- Design Patterns: Adapter
- Event Sourcing Deep Dive
- Tester's Corner: Code testen, der mit der Datenbank spricht
- Clean Code-Prinzipien: Information Hiding Principle
June 2025 - August 2025
- PHPUnit für Fortgeschrittene
- Web Security 360: Authentifizierung
- Tester's Corner: Testen von Zufall und Zeit
- DevOps: Podman statt Docker
- Design Patterns: Facade
- Modelling: Domain Storytelling
- Web Security 360: Autorisierung
- Type-Safe PHP
- Clean Code-Prinzipien: Open Closed Principle
- Live Coding: Battleship
- Live-Vorführung: PHP-Parser
- DevOps: Software Bill of Materials (SBOM)
- Modern PHP: Exceptions
- Tester's Corner: Testen von Legacy Code
- Event Sourcing
- Design Patterns: Factory
- Clean Code-Prinzipien: Tell, don’t ask
- Web Security 360: Cross-Origin Resource Sharing (CORS)
- Design Patterns: Mediator
- Tester's Corner: Domänenspezifische Zusicherungen
- Testgetriebene Entwicklung
September 2025 - November 2025
- Web Security 360: API Security
- Git für Fortgeschrittene
- DevOps: Content Security Policy einführen
- Clean Code-Prinzipien: Law of Demeter
- Live Coding: Chess, Revisited
- Design Patterns: Specification
- Architecture Deep Dive
- Eventgetriebene Entwicklung
- Modern PHP: Attributes
- Modelling: Example Mapping
- Tester's Corner: Was testbaren Code ausmacht
- Clean Code-Prinzipien: Don't Repeat Yourself
- Web Security 360: DSGVO & Co
- Design Patterns: Strategy
- DDDeep Dive
- Vom Software-Entwickler zum Software-Architekten
- DevOps: Mail Sending Capture
- Modern PHP: Autoload
- Tester's Corner: Code Coverage richtig einsetzen
- Live Coding: Coding Nightmares
- Web Security 360: Auf dem Weg in Produktion
- Tester's Corner: Die Form und Größe von Tests
- Software-Modernisierung
- DevOps: CaddyServer: First Contact
- Clean Code-Prinzipien: Keep it simple, stupid
- Design Patterns: Lazy Initialization
- What is new in PHP?
- Modern PHP: Async PHP