PHPCon Poland is the oldest and most unique conference in Poland, aimed at PHP developers and enthusiasts. We have been on the Polish market since 2010. During this time, we have contributed to educating a new generation of PHP developers!

Friday 17th November 2023

10:00
2
Generics (in PHP)
Talk by Karim PINCHON in Green Path (45 minutes)

Generics are a programming language concept. In short, they allow you to write typed code without being specifically linked to a particular type. Many languages already support generics more or less natively: Java, C#, Go, Rust Typescript... PHP doesn't, but thanks to its community and ecosystem, it's still possible to use them. Let's take a look at how and why, using Symfony components as an example.

0
Mikroserwisy - pułapki i błędy
Talk by Mateusz Tymejczyk in Blue Path (45 minutes)

Celem tej prezentacji jest omówienie kluczowych problemów, które można napotkać podczas tworzenia mikroserwisów, a także przedstawienie strategii unikania tych problemów. Problem interfejsów komunikacji między mikroserwisami: omówienie różnych podejść do komunikacji, takich jak sync http, broker, i rpc, porównanie zalet i wad każdego z tych rozwiązań, wybór odpowiedniego mechanizmu komunikacji zależnie od potrzeb aplikacji. Problem zarządzania danymi: prezentacja różnych strategii przechowywania i zarządzania danymi w mikroserwisach, omówienie kopiowania i synchronizacji danych między serwisami, wskazówki dotyczące wyboru odpowiedniego podejścia do zarządzania danymi. Problem wielu punktów wejścia: co to jest API Gateway i jakie są jego korzyści w kontekście mikroserwisów, omówienie zalet i roli API Gateway w zarządzaniu ruchem i bezpieczeństwem, przykłady popularnych rozwiązań API Gateway. Problem współdzielenia kodu między mikroserwisami: jakie są wyzwania związane z współdzieleniem kodu w architekturze mikroserwisowej, prezentacja różnych podejść do współdzielenia kodu, w tym współdzielone biblioteki, jak unikać pułapek związanych z nadmiernym współdzieleniem kodu. Problem dokumentacji: jak radzić sobie z wyzwaniem tworzenia i utrzymania dokumentacji w środowisku mikroserwisów, propozycje rozproszonego podejścia do dokumentowania usług, narzędzia i praktyki ułatwiające dokumentowanie mikroserwisów. Problem developer experience: dlaczego jednolite środowisko devops jest kluczowe dla komfortu programistów, wskazówki dotyczące zapewnienia spójnej i zautomatyzowanej infrastruktury devops dla wszystkich mikroserwisów, przykłady narzędzi, które mogą poprawić doświadczenie programistów. Testy w rozproszonym środowisku: wyzwania związane z testowaniem mikroserwisów w środowisku rozproszonym, jak zaplanować i implementować testy, aby skutecznie sprawdzały zachowanie systemu jako całości, praktyczne wskazówki i narzędzia do testowania mikroserwisów.

4
Studium przypadku asynchronicznej konsumpcji zdarzeń w domenie finansowej
Talk by Zbigniew Malcherczyk in Red Path (45 minutes)

Kilka serwisów, kilka zespołów, kilka zdarzeń - proces zakładania konta bankowego w domenie finansowej (FinTech). Opowiem jak w pewnej organizacji rozwiązaliśmy problem wielokrotnej implementacji mechanizmu obsługi zdarzeń. Zmniejszając złożoność problemu w organizacji w tym temacie. Odciążając techniczne zespoły biznesowe i wprowadzając standaryzacje w organizacji oraz zwiększając bezpieczeństwo.

11:15
3
Praktyczne techniki modelowania w oparciu o podejście DDD
Talk by Michał Giergielewicz in Green Path (1 hour)

Pisanie kodu „zgodnego” z DDD jest (w mojej opinii) sztuką bardzo zaniedbaną od strony szkoleniowej. Dużo łatwiej napotkać materiały o teorii i wzorcach implementacyjnych lub co ostatnio staje się bardziej widoczne o wzorcach strategicznych tłumaczących „po co” robić DDD. To czego brakuje to praktycznego podejścia do tematu: ok, mam ficzer – jak go mam napisać? To wystąpienie ma na celu pokazanie w jaki sposób można praktycznie podejść do implementacji – jak myśleć o kodzie, jakich technik używać aby weryfikować swoje początkowe założenia. Wystąpienie jest praktyczne, będę pokazywał kod w różnych stadniach jego rozwoju i tłumaczył jego ewolucję oraz to, co ta ewolucja za każdym razem przynosiła.

0
Context Maps - kto? z kim? i dlaczego
Talk by Adam Kasperczak in Blue Path (1 hour)

Mapy kontekstów są narzędziem pomagającym uporządkować relację między bounded contextami i (co ważniejsze) zespołami które nad nimi pracują. Jeżeli miałeś kiedyś dosyć “wrzutek” od innych zespołów lub brakowało ci informacji kto i jak korzysta z twojego kodu Wprowadzenie Context Map może ci pomóc. Na prezentacji opowiem czym się poszczególne relacje charakteryzują oraz jak to się udało u nas wraz z wskazówkami jak takie mapy wprowadzić do twojego zespołu.

1
Extending the PHP Language with PHP
Talk by Dave Liddament in Red Path (1 hour)

Do you wish that PHP had features that other languages have? Have you got some great ideas about how to extend PHP’s feature set but don’t want to go through the RFC process? Great news. There is another way. It is possible to implement some new language features using static analysis and PHP code. This talk will briefly introduce the PHP Language Extension library; which offers features such as Java’s package level visibility and C++’s friend feature. Then, we’ll take a deep dive into how to create a custom PHPStan rule. By the end of the talk, hopefully you’ll be inspired to create your own enhancements to PHP, or at the very least have a starting point to write your own custom rules.

12:15
2
Memory leaks and how to find them
Talk by Bohuslav Šimek in Green Path (45 minutes)

Almost every PHP programmer encounters the following error message: “Fatal error: Allowed memory size of xxx bytes exhausted”. In many cases, this news means a long hunt and frequent use of trial and error. This does not have to be a necessity! Together we will go through the different ways and tools to deal with this situation. After the talk you will never be surprised by this problem in the future!

5
Chcę wiedzieć co myślisz czyli rzecz o Feedbacku
Talk by Karol Kreft in Blue Path (45 minutes)

Jako prelegent zawsze po wystąpieniu próbuję nawiązać kontakt ze słuchaczami, poznać ich zdanie i znaleźć odpowiedź na pytanie jaką wartość ma to co robię, czy wnosi coś nowego i co powinienem poprawić. Tymczasem standardowy feedback to brak jakiegokolwiek feedbacku. Podobna sytuacja ma często miejsce w naszych zespołach. Pracujemy razem, razem rozwiązujemy problemy ale czy wspólnie wymieniamy się spostrzeżeniami dotyczącymi tego co w naszym podejściu do pracy działa a co kuleje? Czy potrafimy określić mocne i słabe strony współpracowników? I co równie ważne, czy wiemy jak to zakomunikować i jak znieść krytykę? W prezentacji podzielę się swoimi doświadczeniami z obszaru informacji zwrotnej, co powinna zawierać i jak ją przekazywać by osoba, której został udzielony wyniosła z niego jak najwięcej.

2
Shape Up Your Testing Strategy: Balancing Unit, Integration, and E2E Tests
Talk by Antonello D'Ippolito in Red Path (45 minutes)

Are you struggling to figure out the right balance of unit tests, integration tests, and e2e tests in your PHP projects? Look no further! This talk aims to make some clarity in the different types of tests and when to use them. We'll explore the importance of unit tests (and what a unit really is), and when to rely on broader integration or e2e tests for testing the behaviour of bigger chunks of your application. We'll also cover the different test shapes, such as the pyramid and trophy, and what kind of development experience they might lead you to. Attendees will leave with less confusion about the benefits and limitations of each test type and how to use them to effectively improve the quality of their software.

13:00
1
Framework agnostic is not a rocket science
Talk by Damian Dziaduch in Blue Path (1 hour)

Would you like to upgrade the framework/database/etc or even change it, but, it seems impossible due to high coupling? Do you and your peers think about rewriting the project from scratch, again? Grab a drink and participate in my talk where I will show you how to fix that! After this talk, you will know the following: How to write a project that can survive many years without rewriting it from scratch How to write framework-agnostic code How to write easily testable code What is ports and adapters architecture

3
MySQL bad queries? Find the all!
Talk by Piotr Suszalski in Red Path (1 hour)

Baza danych działa wolno? Pewne zapytania powodują problemy z wydajnością? Często okazuje się, że nie łatwo takie zapytania znaleźć. W mojej prezentacji omówią sposoby na debugowanie serwera MySQL w czasie rzeczywistym, a także sposoby na analizę tego co działo się w przeszłości i tego z jakich narzędzi skorzystać aby znaleźć te zapytania.

14:00
0
Advanced usages of PHP typing
Talk by Damien Seguy in Red Path (45 minutes)

The PHP type system is modernizing with every version. It is now so advanced that it is used as early as conception time : detect dependencies between classes, reduce complexity levels between methods, identify order of execution. The organisational strength of the type system permeates throughout the source. In fact, type analysis suggest and deny specific refactorisations. This is not determinism : they give a healthy margin of freedom, where the creative work of developers happen. During this session, we’ll review several rules of organisation of PHP code, and how to use them to get a sound understanding of our code bases.

3
Kliencie, czego potrzebujesz? Optymalizacja komunikacji z klientem na przykładzie tworzenia strony
Talk by Magdalena Sędkiewicz in Red Path (45 minutes)

Przychodzi klient do developera i mówi: „poproszę stronę / aplikację / chcę, by ktoś wdrożył poprawki. Ma być ładne i ma działać”. A dev wtedy… Robi rozpoznanie bojem: pisze kod i potem wiecznie go poprawia? A może da się inaczej? Po odejściu z projektu wróciłam do przygody z freelancingiem i do tworzenia stron WWW. W tej prezentacji chcę podzielić się zdobytym doświadczeniem z zakresu komunikacji z klientem i opowiedzieć, co należy “wyciągnąć” od klienta na start, aby ułatwić sobie dalszą pracę, nakreślić obszar odpowiedzialności klienta oraz obszar odpowiedzialności deva w pracy nad stroną, a także pokazać konkretne narzędzia pomagające rozwiązać problem klienta tak, aby nie usłyszeć na koniec prac: „Ale to nie jest to, o co mi chodzi”.

14:45
0
How can I trust my test suite?
Talk by Antonello D'Ippolito in Green Path (45 minutes)

You recently started working on a new project, or you have been working on it for a while, and it has undergone many changes due to the contributions of multiple developers. This means that you may not be familiar with how the automated tests were written, or how effective they are. So, how can you be confident that you won't break anything when you deploy new features to production, or when you refactor that old piece of software that's holding you back? Do you have enough trust in your test suite to rely on the fact that a green CI build means that everything is okay? There are many tools that provide metrics about your code and tests, such as code coverage and CRAP metrics, but they have their limitations. In this talk, we will explore ways to evaluate the effectiveness of your test suite, how to improve it, and the benefits of having a robust and comprehensive set of automated tests.

1
Programming language as a product – How should PHP evolve?
Talk by Roman Pronskiy in Blue Path (45 minutes)

From this talk, you'll learn how different communities, such as Rust, Go, Kotlin, and others, approach language development. How they decide on new features and how they choose what to deprecate. How they use telemetry and usage data to justify decisions, and other insights. We'll then explore stats on the adoption of new PHP features. Which was the most anticipated and hyped on the RFC stage and which ended up being used the most? Finally, we'll look at how the process can be improved for PHP.

15:30 Rozszerzalność aplikacji Symfony
Talk by Michał Kurzeja in Green Path (1 hour)

Symfony posiada wiele świetnych mechanizmów, które pozwalają łatwo je rozszerzyć. Co więcej, znając je, możemy sami zaprojektować nasze aplikacje tak, aby były rozszerzalne w podobny sposób. W trakcie prezentacji przedstawię te moim zdaniem najciekawsze możliwości, a niekoniecznie wszystkim znane.

1
Code Review w teorii i praktyce
Talk by Grzegorz Korba in Blue Path (1 hour)

Czy jest Code Review, a czym nie jest? Jaka jest rola autora Merge Requestu, a jaka jest rola recenzentów? Co zrobić, by review było sprawne i wartościowe? Jak optymalnie wykorzystywać narzędzia do code review, by sobie wzajemnie ułatwiać, a nie utrudniać? Na te i inne pytania odpowiemy sobie podczas prelekcji.

1
Four usages of PHP static analysis
Talk by Damien Seguy in Red Path (1 hour)

Static analysis is for life, not just for christmas. While finding bugs is before execution a staple, static analysis provide tools to go even further. It scans the code to offer suggestions, training unususpecting developer into using modern PHP code, or simply local patterns. It provides inventories, linking remote parts of the code by their value and process, and bringing more consistency across the whole code base. Finally, it can document the code base, and keep it real-time. The best is that each of those mission has available tools for the job.

17:00
3
Software Design with PHP8 - Tips & Tricks
Talk by Paul Dragoonis in Green Path (45 minutes)

I've been doing PHP for 21 years now. I also worked as a consultant for ~10 years traveling from company to company, fixing, guiding, and re-architecting platforms during this time. In this intermediate-level talk, I'll take the time to share with you everything I've learned along the way, from best practices, to clever tools and techniques you may never have heard of, to "what works, and what doesn't", to "making the most of PHP8". If you're a PHP developer at the start of the mature stage of your career, this talk has great value for you!

0
Growing the PHP Core – One Test at a Time
Talk by Florian Engelhardt in Blue Path (45 minutes)

Ever dreamt of becoming a PHP core contributor but felt overwhelmed by the prospect of creating RFCs, maintaining extensions, or writing C code? Worry no more! In this talk, you'll discover how to make a meaningful impact on the PHP core by writing tests without the need for any C code. Join me for an interactive session where I'll live code a test on stage, demystifying the process and equipping you with essential testing techniques. Develop the confidence to contribute to the PHP core, one test at a time, and become an invaluable member of the PHP community.

0
Data Warehouse w Google Cloud
Talk by Wojciech Sznapka in Red Path (45 minutes)

Analityka danych odgrywa kluczową rolę bez względu na wielkość i rodzaj firmy. Bez niej trudno przewidywać przychody i optymalizować koszty, zrozumieć preferencje klientów, dostrzegać okazje biznesowe czy poprawiać wrażenia użytkowników. Data Warehousing to temat rzeka, a zaczyna robić się naprawdę złożony przy dużej skali biznesu, ogromie danych oraz ich różnorodności. W takich przypadkach, hurtownie danych zasilane wsadowo nie sprawdzą się i trzeba zainwestować w stream processing oparty na sprawdzonych rozwiązaniach. W prelekcji przedstawię ekosystem DWH którego z powodzeniem używają setki użytkowników w STS Gaming Group, a który w dużej mierze opiera się o rozwiązania Google Cloud, w szczególności Big Query.

17:45
1
One of Two Hard Things - why naming things is hard?
Talk by Piotr Suszalski in Green Path (45 minutes)

Jak wiadomo w produkcji oprogramowania są „tylko” dwie trudne rzeczy: inwalidacja cache i nazewnictwo. Czy w czasach zaawansowanych IDE to dalej jest prawdą? Postaram się temu przyjrzeć w mojej prezentacji.Dla wielu z nas pisanie kodu jest czymś co robimy najczęściej. Często nie zastanawiamy się nad pewnymi szczegółami które w tym kodzie się pojawiają, kod wydaje się zrozumiały i prosty (w momencie jego tworzenia). Zapominamy niestety o tym, że kod jest wielokrotnie razy częściej czytany niż pisany, i to głównie przez osoby które tego kody nie tworzyły. Możemy więc zastosować pewne techniki które sprawią, że kod będzie czytelniejszy, prostszy do zrozumienia i łatwiejszy w utrzymaniu. Naming Things Matters!

2
Change IT – zarządzanie emocjami w procesie zmiany.
Talk by Sonia Wysocka in Blue Path (45 minutes)

Nowe technologie, narzędzia, zmienne wymagania klientów – branża IT to ciągła zmiana. Jak na nią reagujesz? Czy potrafisz nazwać emocje towarzyszące Tobie i Twoim współpracownikom? Na jakie pułapki możesz natrafić próbując uporać się z tym tematem? Zrozum emocje w procesie zmiany, Odkryj źródła reakcji emocjonalnych, Naucz się krok po kroku radzić sobie z emocjami, Poznaj rolę Lidera w okresie transformacji, Wykorzystaj zmiany w branży IT jako swoją szansę! Podczas tego spotkania pomogę Ci zrozumieć tajniki zarządzania emocjami i pokażę, jak przekuć je w swojego sprzymierzeńca.

0
Team Topologies, a Platform Development w Shoper
Talk by Adrian Słowik in Red Path (45 minutes)

Czy zastanawiałeś się kiedyś ile produktów jest rozwijanych w Twojej firmie? Czy budując aplikację nie masz poczucia, że tak na prawdę pracujesz nad wieloma projektami równolegle? Może czasami jeden zespół jest "klientem" innego? Zobacz jak można wykorzystać Team Topologies by zbudować zespoły, które rozwijają platformy, ktore są fundamentem prac innych zespołów na przykładzie Shoper.

18:30
1
Projektowanie architektury odpornej na błędy w komunikacji asynchronicznej mikroserwisów
Talk by Zbigniew Malcherczyk in Green Path (30 minutes)

W prezentacji przedstawię proces zmiany z architektury "at most once delivery" do "at least once delivery" w kontekście asynchronicznej komunikacji mikroserwisów. Skupimy się na możliwych rozwiązaniach tego problemu oraz zaprezentujemy integrację z frameworkiem Symfony. Omówimy różnicę między obiema architekturami, mechanizmy zapewniające niezawodność transmisji, oraz najlepsze praktyki implementacji w połączeniu z Symfony. Będzie to kompaktowa prezentacja, która dostarczy wartościowych wskazówek dla budowy architektury odpornej na błędy w komunikacji asynchronicznej mikroserwisów.

2
Budowanie Mostów, czyli wzorzec Bridge w praktyce
Talk by Tomasz Sadza in Blue Path (30 minutes)

Czy kiedykolwiek zastanawiałeś się, jak poprawić efektywność i skalowalność swojego kodu, a także uniknąć pułapek legacy? W mojej prezentacji skoncentrujemy się na zrozumieniu i praktycznym zastosowaniu wzorca Bridge. Ten wzorzec jest jednym z najbardziej efektywnych narzędzi, które mogą pomóc osiągnąć te cele. Wyjaśnię, jak wzorzec Bridge pomaga zaradzić problemowi zbyt skomplikowanej struktury klasy, separując „co” system ma robić od „jak” ma to zrobić, co pozwala na niezależne zmiany obu elementów. Omówię problemy, które Bridge pomógł mi rozwiązać, takie jak izolacja API, unikanie zagnieżdżenia i utrzymanie spójności interfejsów, oraz jak dzięki temu wzorcowi tworzenie modułów kodu stało się łatwiejsze. Na konkretnym przykładzie pokażę, jak Bridge pomógł mi zaradzić problemowi skalowania zależności w projekcie legacy. Po prezentacji, uczestnicy będą w stanie zrozumieć i zastosować wzorzec Bridge w swoich projektach, a także będą wiedzieli, jak wykorzystać go do rozwiązywania konkretnych problemów.

0
O czym nie powie nam metryka 100% Code Coverage? Testy mutacyjne i Fuzz testing.
Talk by Mateusz Wojczal in Red Path (30 minutes)

Metryka 100% pokrycia kodu (code coverage) stała się często używanym buzzwordem w świecie rozwoju oprogramowania, sugerującym doskonałą jakość testowania. Jednak warto pamiętać, że osiągnięcie pełnego pokrycia kodu nie gwarantuje, że wszystkie możliwe przypadki testowe zostały uwzględnione. Skupienie się wyłącznie na metryce 100% code coverage może prowadzić do nadmiernego skomplikowania testów lub tworzenia testów, które w rzeczywistości nie sprawdzają istotnych aspektów kodu. Ważne jest, aby używać metryki code coverage jako jednego z wielu wskaźników jakości testów, równocześnie skupiając się na znalezieniu i eliminowaniu rzeczywistych słabych punktów w testowaniu i zapewnieniu kompleksowego sprawdzenia logiki i funkcjonalności aplikacji. Testy mutacyjne to rodzaj testów oprogramowania, które polegają na wprowadzaniu celowo wprowadzanych błędów (tzw. mutacji) do kodu programu w celu oceny jakości testów jednostkowych. W ramach testów mutacyjnych, program jest poddawany serii mutacji, a następnie uruchamiane są testy, aby sprawdzić, czy testy wykryją te zmiany. Fuzz testing, znane również jako testowanie oparte na przypadkowości, to technika testowania oprogramowania, która polega na wprowadzaniu losowych, zniekształconych lub nieprawidłowych danych wejściowych do programu w celu wykrycia błędów lub luk w zabezpieczeniach. Fuzz testing pozwala na zautomatyzowane generowanie ogromnej liczby testów, co może pomóc w wykryciu trudno dostrzegalnych błędów w oprogramowaniu.

Saturday 18th November 2023

10:00
2
Learn to appreciate legacy
Talk by Ivo Lukač in Green Path (45 minutes)

There is a lot of frustration among developers when they need to work with the old code, usually called “legacy”. But there is way more legacy code running than non-legacy out there in the world. Developers like starting from scratch but that is not often the case. If they want to successfully replace legacy with newer code they need to start with appreciation and respect for that legacy code because it somehow runs and there is no guarantee that new code will do a better job.

0
Qodana - nowe narzędzie do statycznej analizy kodu
Talk by Mariusz Kozłowski in Blue Path (45 minutes)

Podczas prezentacji chciałbym przedstawić nowe narzędzie od jetbrains do statycznej analizy kodu - Qodana. Czy opłaca się wprowadzać kolejne narzędzie? Czy warto płacić abonament? Jak w ogóle skonfigurować je w naszym ci/cd? Omówienie na korzystaniu w konkretnym projekcie.

1
Mastering Application Logging
Talk by Florian Engelhardt in Red Path (45 minutes)

Have you ever faced the daunting task of investigating a customer complaint or hunting down the cause of a mysterious system glitch? Application logging can be your lifeline in these challenging situations. In this talk, we'll explore the importance of application logging and how it can save you time and effort when troubleshooting. Discover the key principles of effective logging and equip yourself with the knowledge and best practices to tackle any issue with confidence!

11:15
3
Building Fast APIs and Middlewares: Mezzio + Swoole
Talk by Babarinde Odewumi in Green Path (1 hour, 30 minutes)

We'll be discussing Mezzio: A PSR-15 Middleware framework, allowing you to build elegant middlewares for your applications and also Swoole: a PHP extension that allows you to build high performance applications. We'll also look at how to combine both to get the best of both worlds and highlight how this differs from the traditional Apache/Nginx PHP approaches and pitfalls to be aware of when taking the dive.

1
Strategic Domain-Driven Design for dummies
Talk by Sebastian Malaca in Blue Path (1 hour, 30 minutes)

Ubiquitous Language and Bounded Contexts help us work with complex domains. They provide information we can use to improve the architecture, team structures, and communication with stakeholders and within a team. They increase our understanding of the domain our product supports. They can help decrease the lead time. Yet, the question is, how to use these powerful patterns and not get overwhelmed? During the presentation, I will show you how to use DDD strategic patterns to make better architectural decisions. You will learn the techniques and heuristics to speed up the discovery process and decrease the risk of mistakes. You will also learn what problems you may face during that journey and way how to overcome them.

Jak zadbać o czystą domenę nie rezygnując z udogodnień frameworka - na przykładzie Symfony
Talk by Jakub Ciszak in Red Path (1 hour, 30 minutes)

O tym, że nie warto wymyślać koła na nowo wiadomo już od dawna. O tym, że kod domenowy powinien być czysty od zewnętrznych zależności także. Jak pogodzić te dwie sprawy, kiedy framowork kusi łatwością dewelopmentu, a tutoriale do frameworków nie uświadamiają o konsekwencjach stosowania szybkich rozwiązań? W tej prezentacji opowiem o tym jak namówić Symfony do współpracy w tworzeniu ładnego odpowiednio podzielonego kodu. Nie skupiając się na konkretnej architekturze przedstawię narzędzia i propozycje zagospodarowania tego co daje nam framework, jednocześnie utrzymując w czystości kod biznesowy. Przejdziemy między innymi przez Request, Asserty, ORM, votery, eventy… Porozmawiamy także o tym, czy na pewno zawsze trzeba się tak spinać, i kiedy warto sobie odpuścić.

12:45
3
PHP Foundation: The past, the present, and the future
Talk by Roman Pronskiy in Blue Path (45 minutes)

In 2021, the PHP Foundation was launched by prominent community members and 10 major companies in the PHP ecosystem. In this talk, you will discover the narrative behind the quest for sustainable PHP core development, the challenges confronting PHP and the foundation, and, naturally, the future plans. I am excited to respond to your questions and eagerly anticipate hearing your suggestions. Together, let us shape the future of PHP.

Sprawiedliwe kolejkowanie w systemach multi-tenant
Talk by Michał Kurzeja in Red Path (45 minutes)

Kolejkowanie zadań jest w obecnych czasach standardowym i powszechnie używanym sposobem obsługę cięższych zadań. To z pozoru proste rozwiązanie potrafi się mocno skomplikować, gdy kolejkować musimy zadania w systemach “multi-tenant”. Nie chcemy przecież, aby jeden z naszych klientów miał możliwość “zagłodzenia” innych. Chciałbym podsumować najczęściej stosowane rozwiązania i zaprosić Was do dyskusji – czy da się lepiej rozwiązać ten problem?

13:30
4
Jak (nie) osiwieć debugując
Talk by Przemysław Pawliczuk in Red Path (1 hour)

`die('dupa');` — kto nigdy tego nie zrobił, niech pierwszy rzuci klawiaturą. Niektórzy nadal to robią (i czasem ma to sens). W prezentacji podzielę się swoimi ponaddziesięcioletnimi doświadczeniami w polowaniu na bugi w mniejszych i tych większych aplikacjach. Jeśli słowa `xdebug`, `siwizna`, `rzucam tę robotę`, `strace`, `APM`, `stacktrace` niewiele Ci mówią, to ta prezentacja jest dla Ciebie. Jeśli mówią, to i tak przyjdź, a postaram się, abyś dowiedział(a) się czegoś nowego.

13:45
0
Do you really know JWT?
Talk by Karim Pinchon in Green Path (45 minutes)

Over the past few years, many of us have seen or used special tokens: JSON Web Tokens, or JWTs. This token standard is a very practical way of transmitting information reliably. These tokens are often used for authentication with web services, microservices or SSO as part of OpenID Connect. In addition, we see a lot of JWS (signed tokens), but that's not the only implementation out there. In fact, the JWT specification is much broader than you might think. Here's a look at some of the lesser-known aspects of JWT.

14:30
0
Nowości w PHP 8.3
Talk by Grzegorz Korba in Green Path (1 hour)

Wielkimi krokami nadchodzi PHP 8.3 i przynosi nam kolejne nowości. Jakiego rodzaju są to zmiany i czy wniosą coś wartościowego do naszej codziennej pracy? Przekonajmy się!

“Kto to pisał?!... a, to ja.”, czyli sposoby żeby znienawidzić siebie z przeszłości
Talk by Mateusz Zalewski in Blue Path (1 hour)

Czysty kod. Jakościowe oprogramowanie. Dobre praktyki. Święte Graale pracy programisty, o których każdy z nas wie, a mimo to wciąż zachowujemy się tak, jakby ich nie było. Bo przecież ten kod to tylko na chwilę. A tego to w ogóle nie będziemy używać. A tę klasę się zrefaktoruje później. Wszyscy od czasu do czasu zaciągamy dług u samych z siebie z przyszłości - dług, którego potem (nie bez powodu) bardzo nie chcemy spłacać. Zagłębmy się więc w ten fascynujący świat słabego oprogramowania. Przejdźmy przez las nieużytych wzorców projektowych, przebrnijmy przez bagna zagnieżdżonych pętli. Wejdźmy na kolejny ośmiotysięcznik, a może z jego szczytu uda nam się dojrzeć zatokę pięknego kodu - w której, miejmy nadzieję, tym razem pozostaniemy na dłużej. Bazując na mojej wieloletniej wiedzy we wdrażaniu dobrych praktyk w dużych projektach wykorzystujących PHP i Symfony, przedstawię szereg zaniedbań programistów, których rezultatem jest kod najgorszej jakości. Wspólnie zastanowimy się, jak tych błędów uniknąć oraz jakie techniki można zastosować, by te już popełnione szybko i skutecznie wyeliminować.

15:30
0
So Long, and Thanks for Nothing! The Demise of Cross-Site Scripting
Talk by Christian Wenz in Green Path (1 hour)

For almost 25 years, almost as long as there is PHP, cross-site scripting (XSS) has been one of the most common risks for web applications. Yet today, there are many ways to protect a web application from attacks, including browser features, HTTP headers, and special APIs. This talk discusses why XSS is dangerous and covers countermeasures including Content Security Policy, Trusted Types API, and protection in SPA frameworks. After this talk, there's (almost) no excuse to get XSS.

ML z PHP - zastąp złożoną logikę biznesową modelami uczenia maszynowego
Talk by Michał Żarnecki in Blue Path (1 hour)

Czy kiedykolwiek spotkałeś się z kodem zawierającym tak wiele warunków i ścieżek przetwarzania, że jego utrzymanie i rozszerzanie było niemal niemożliwe? A gdyby tak zastąpić go automatycznie generowanym, samodoskonalącym się algorytmem? W ostatnich latach uczenie maszynowe jako dziedzina sztucznej inteligencji stało się efektywnym narzędziem do tworzenia systemów i aplikacji. Wraz z rozwojem sztucznych sieci neuronowych, programowanie złożonych reguł biznesowych i usług opartych na prognozowaniu oraz klasyfikacji można zastąpić wstępnie wyszkolonymi modelami uczenia maszynowego. W tej prezentacji zobaczysz case study obrazujące potencjał PHP w integracji uczenia maszynowego. Przejdziemy przez proces tworzenia klasyfikatora i umieszczania go w projekcie opartym na PHP.

0
Jak odpowiednio dobrać drivery technologiczne?.
Talk by Mateusz Wojczal in Red Path (1 hour)

Prezentacja dotycząca doboru driverów technologicznych skupia się na kluczowych czynnikach i dobrych praktykach, które pomogą w odpowiednim doborze technologii dla projektu. Rozpoczynamy od zrozumienia kontekstu biznesowego i wymagań projektu, aby lepiej dopasować technologię do celów biznesowych. Następnie omawiamy proces oceny dostępnych technologii, uwzględniając czynniki takie jak wydajność, skalowalność, społeczność i dokumentację. Analiza ryzyka i bezpieczeństwa jest również istotnym elementem, wraz z uwzględnieniem dostępności i umiejętności zespołu. Na zakończenie prezentacji przedstawiamy zestaw dobrych praktyk, takich jak prototypowanie, testowanie proof of concept i analizę przypadków użycia, aby pomóc w skutecznym doborze driverów technologicznych. Całość ma na celu podkreślenie znaczenia odpowiedniego doboru technologii i zachęcenie do stosowania omówionych czynników i praktyk w procesie wyboru technologii. Summary: The presentation on selecting technological drivers focuses on key factors and best practices to aid in making informed technology choices for a project. It begins by understanding the business context and project requirements to better align technologies with business goals. The evaluation process for available technologies is then discussed, considering factors such as performance, scalability, community support, and documentation. Risk analysis and security considerations are also essential, along with the team's availability and skills. Finally, a set of best practices, including prototyping, proof of concept testing, and analyzing use cases, is presented to assist in effectively selecting technological drivers. The overall aim is to emphasize the importance of proper technology selection and encourage the application of the discussed factors and practices in the technology selection process.

17:00
1
OWASP Top Ten for PHP Web Application Security Risks
Talk by Christian Wenz in Green Path (1 hour)

Summary Since 2003, the Open Web Application Security Project curates a list of the top ten security risks for web applications. In making the list, OWASP combines both a data-driven approach to find out current risks, and a survey among practitioners to identify upcoming threats for web applications. Time to have a look at the latest edition to see what's new, what has changed, and to get an up-to-date refresh on how to create secure web applications. We will also discuss whether the list is still relevant, and what is missing from that list. And unlike the list itself, we will focus on PHP.

2
Jak zepsuć tranzycję? Pratyczne porady na drodze do katastrofy.
Talk by Grzegorz Sztandera in Blue Path (1 hour)

Tranzycja pomiędzy dwoma firmami to dość newralgiczny punkt w cyklu życia każdego projektu i produktu. Pewne jest, że nie da się go przeprowadzić w 100% perfekcyjnie. Co jednak zrobić, by zagwarantować sobie piękną, wielowątkową i spektakularną katastrofę? Przejście przez proces tranzycji i wskazanie newralgicznych punktów, które mogą zakończyć się poważnym kryzysem biznesowym i technicznym.

3
Potęga prostego kodu - wartość w niepozornym obiekcie
Talk by Mariusz Gil in Red Path (1 hour)

Świat wzorców Domain-Driven Design wielu osobom wydaje się mocno skomplikowany i złożony. Gdy wchodzisz do niego przez kod, skupiasz się implementacji agregatów, a za chwilę okazuje się, że to wcale nie jest najważniejsze. Im więcej się dowiadujesz, tym więcej się rodzi nowych pytań. A co, jeśli powiem Ci, że twój kod może być czytelniejszy, łatwiejszy, bardziej rozwijalny i testowalny w zasadzie już jutro? I że nie musisz przy tym przekonywać uczulonych na niektóre nazwy kolegów i koleżanek z zespołu? Przejdźmy zatem wspólnie kilka ścieżek, dzięki którym w kodzie pojawią się proste, ale bardzo wartościowe obiekty. Na ich ramionach będzie można budować dalej. I nie, Money jest tu przykładem zabronionym :)

18:00 Blaski i cienie BDD
Talk by Mateusz Zalewski in Green Path (1 hour)

Behaviour-driven development jest wspaniałe, czyż nie? Poprawia komunikacja w Zespole, sprawia że wymagania biznesowe są zrozumiałe dla wszystkich zaangażowanych w projekt, przyspiesza development w dłuższym okresie… Po prostu nie ma wad! Albo… jednak ma? Niestety, nie ma idealnych systemów czy idealnych metodologii. Wszystkie mają swoje minusy - kompromisy, na które musimy się zgodzić kiedy implementujemy je w naszych procesach. I nie ma w tym nic złego, dopóki jesteśmy ich świadomi. Pracując przez wiele lat z Syliusem pokochałem BDD, TDD, czy podejście test-driven jako takie, ale zrozumiałem też koszt ich użycia w innych projektach. W mojej prezentacji, skupię się na plusach i minusach metodologii BDD, z perspektywy członka Core Teamu dużego, open-source’owego projektu. Postaram się również pochylić nad perspektywą przeciętnego użytkownika takiego produktu… która może być jednocześnie podobna jak i zaskakująco odmienna.

0
Back to the Future
Talk by Ivan Herak in Blue Path (1 hour)

We've all faced legacy code and the dread of refactoring it to fit modern ages. In this talk I would like to share some experiences of my own and what I see as a good way of dealing with it. A combination of a soft and technical talk - after all, all of that is needed when dealing with a complicated refactoring, right? We will talk here about: the present - organizing the team and the process during the refactoring; preparing for the excruciating task at hand; the past - common situations and code smells that lead to heavy tech debt - and how to avoid it; the future - refactoring tips and best practices that helps keep the project somewhat reasonably easy to maintain.

1
Coupling w Laravelu, czyli jak odzyskać zdrowe relacje ze swoim kodem.
Talk by Marcin Lenkowski in Red Path (1 hour)

Coupling w Laravelu, czyli jak odzyskać zdrowe relacje ze swoim kodem. Czy zdarzyło Ci się że kod zaczął iść własną, złą drogą? Starasz się, piszesz czysty kod zgodny z SOLIDem, robisz CRki a wszystko to na nic? Ostatecznie i tak, wdrożenie stosunkowo prostej zmiany zajmuje tygodnie, w najbardziej kluczowym dla projektu momencie. W gorszych sytuacjach, może się okazać, że kodu w ogóle nie da się rozwijać, bo jedna z zewnętrznych usług przestała działać. Pokażę Ci, jak tego uniknąć, na przykładzie projektu w PHP we frameworku Laravel. Dobre zrozumienie couplingu zapewni Ci spokój i sprawi, że inaczej spojrzysz na projektowanie systemów. Odzyskasz dobre relacje z kodem i będziesz wiedział, jak działać, by projekt mógł się rozwijać z sukcesami. Poruszymy tematy związane z: Projektowaniem systemu Dzieleniem kodu na moduły Wzorcem niebezpośredniości (indirection pattern) Właściwą pracą z parametrami tworzonych metod Właściwym wykorzystaniu wzorca repozytorium Poznamy prawo Demeter, które zabroni nam rozmawiać z nieznajomymi Poruszymy temat projektowania dla usuwalności A wszystko to na konkretnych przykładach i kodzie, który odzyska wolność od problematycznej architektury i zewnętrznych usług.