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 and have contributed to educating a new generation of PHP developers!

Saturday 26th October 2024

09:00
1
Parquet: Od formatu pliku do architektury systemu
Talk by Norbert Orzechowicz in Blue Path (1 hour, 30 minutes)

Parquet jest binarnym kolumnowym formatem plików, będący standardem w świecie przetwarzania danych. 
Jest niezastąpiony ze względu na swoją elastyczność, możliwości kompresji oraz analizy bez odczytywania całego pliku. 
Czego jednak możemy nauczyć się z zaimplementowanych w nim rozwiązań aby usprawnić systemy nad którymi pracujemy? 
O tym postaram się opowiedzieć w czasie mojej prezentacji.

Ktoś już to wymyślił. O modelowaniu z użyciem archetypów biznesowych.
Talk by Jakub Ciszak in Green Path (1 hour, 30 minutes)

W świecie programowania, podobnie jak w innych dziedzinach, często pojawiają się nowinki, które zapowiadają rewolucję. Jednak wiele fundamentalnych pojęć i wzorców, które powstały dawno temu, nadal znajduje swoje zastosowanie i wartość. Chciałbym zaprosić Was na prezentację, która zgłębia temat archetypów wzorców biznesowych — pierwotnych form i pojęć, które pojawiają się konsekwentnie i uniwersalnie w różnych kontekstach. Podczas mojej prezentacji omówię, czym są archetypy, czym są wzorce archetypowe w kontekście modelowania oprogramowania, oraz jak te wzorce mogą być wykorzystane podczas tworzenia modelu systemu. Aby lepiej zobrazować temat, przyjrzymy się przykładowej historii firmy e-commerce, która napotkała na swojej drodze kilka wyzwań. Zobaczymy, jak zastosowanie wzorców archetypowych pozwoliło skutecznie rozwiązać problemy związane z rozszerzeniem modelu sprzedaży, zarządzaniem magazynami oraz sprzedażą międzynarodową. Prezentacja opierać się będzie raczej na wysokim poziomie abstrakcji, tak aby przejść przez kilka przypadków wykorzystania archetypów. Mój cel na tę prezentację — zainteresować, uświadomić i dodać kilka nowych śrubokrętów do skrzynki narzędziowej :) Skrócony plan: Definicja archetypu Czym są archetypy biznesowe w kontekście modelowania systemów Historia pewnej firmy Rozwój i problemy Rozszerzenie sprzedaży o model B2B Rozwój systemu magazynowego Planowana sprzedaż międzynarodowa Rozwiązania Wzorzec archetypowy Party / PartyRelationship jako rozwiązanie problemu różnego rodzaju klientów. Wzorzec archetypowy Inventory — klarowna obsługa magazynów Wzorzec archetypowy Money — gotowe rozwiązanie dla sprzedaży międzynarodowej Możliwości dalszego rozwoju Podsumowanie / Pytania i odpowiedzi

0
Jak przejąć projekt po innym zespole i nie zwariować?
Talk by Oskar Barcz in Red Path (1 hour, 30 minutes)

Skupimy się na wyzwaniach i najlepszych praktykach związanych z przejmowaniem istniejącego projektu. Zaczniemy od analizy pierwszych kroków niezbędnych do skutecznego zrozumienia kodu i architektury projektu, następnie omówimy strategie audytu kodu, które pomogą zidentyfikować potencjalne problemy z wydajnością, bezpieczeństwem i skalowalnością. Podkreślimy również znaczenie elastycznego planowania i adaptacji procesów w zespole, aby zapewnić płynne przejście i ciągłość rozwoju projektu: czyli pogodzić biznes i komfort pracy programistów (DX / Development Experience)

11:00
1
Deklaruj, nie implementuj!
Talk by Tomasz Kowalczyk in Blue Path (1 hour)

Uwielbiasz rzucać się na klawiaturę zaraz po pobieżnym przejrzeniu wymagań? Ja też! Prawdopodobnie natrafisz jednak szybko na piętrzące się stosy nieprzewidzianych przypadków brzegowych. Możesz dalej dzielnie budować domek z zapałek albo… spojrzeć szerzej. Jak pogodzić chęć budowania z nudą projektowania? Znakomitą techniką, którą wypracowałem w wielu projektach, jest podejście deklaratywne, które daje Ci swobodę budowania i wolność przeprowadzania bezpiecznych zmian w przyszłości. Rozwiąż problemy deklarując wynik i pozwalając Twojej implementacji samej wymyślić rozwiązanie!

0
How generalization helped me to understand architectural concepts
Talk by Michał Giergielewicz in Green Path (1 hour)

Modern architectural styles often seem complicated (or maybe complex?). They have multiple rules about every little detail, put pressure on my code, and force me to add abstraction layers in places that sometimes feel just "wrong". They are hard to explain, and one of my applications often has some edge case that is forcing me to break some rules. Does this sound familiar? If so, let's think outside the box and, by going even higher in the abstraction process, find some actual truths about architecture in general.

Fault-tolerant workflow orchestration in PHP
Talk by Sebastian Grodzicki in Red Path (1 hour)

Developing your application on the Temporal platform gives you a secret weapon – durable execution – which guarantees that your code runs to completion no matter what. The result? Bulletproof applications that are faster to develop and easier to support. Because the full running state of a workflow is durable and fault tolerant by default, your business logic can be recovered, replayed or paused from any arbitrary point.

12:15 LLPhant: The PHP framework for generative AI
Talk by Fabrizio Balliano in Blue Path (45 minutes)

The AI world is surely dominated by python, but things are moving in our loved PHP ecosystem too. LLPhant is building on the experience of LangChain and LLamaIndex in order to build a comprehensive framework for generative AI in PHP. Multimodel, multiplatform, local or SASS based, with LLPhant you can build a script to query an LLM or create a complex RAG using embeddings and function calling.

Symfony is RAD
Talk by Rick Kuipers in Green Path (45 minutes)

What happens when you just ride the wave? How productive can we be when we smother our project in all that Symfony goodness? Let's explore some Rapid Application Development practices that Symfony has to offer. We'll acquire the mindset needed and get ourselves familiar with a Symfony setup by the book. We will develop an MVP using the MakerBundle and we'll close the gap towards an MLP using Symfony UX. Live demo included.

13:00
2
Applied Psychology: Psychology-based UI improvements
Talk by Keren Kenzi in Blue Path (30 minutes)

As frontend developers, we implement given UI designs. But wouldn’t it be great if we could provide input and suggest psychology-based improvement ideas? And thus, making the product better and taking a more proactive role in the development process. In this talk, I will share with you knowledge from the field of cognitive psychology that you can apply to UI designs to improve them.

0
Jeden model AI to za mało. Stwórz armię agentów AI na swoje rozkazy!
Talk by Adrian Słowik in Green Path (30 minutes)

Używasz ChatGPT? Podobają Ci się wyniki Twoich promptów? A co jeśli można osiągnąć imponujące rezultaty za pomocą prostej sztuczki? Zapraszam na inspirującą prelekcję, gdzie zobaczysz jak zintegrować swoją aplikację PHP z dostępnymi na rynku modelami AI. Zobaczysz co można zrobić, żeby osiągnąć lepsze rezultaty swoich promptów. A jako bonus dowiesz się jak można testować swoje wdrożenie AI za pomocą... testów jednostkowych...

0
Refaktoryzacja, jak robić ją dobrze i jak przekonać biznes?
Talk by Monika Młodzik in Red Path (30 minutes)

Kolejny raz biznes powiedział, że nie robimy refaktoryzacji w tym sprincie? Task trafił na koniec backloga i już pewnie nigdy z tamtąd nie wyjdzie? Przyjdź i dowiedz się jak skutecznie przekonać biznes do refaktoryzacji, oraz jak robić to bezpiecznie.

14:30
3
Nowości w PHP 8.4
Talk by Grzegorz Korba in Blue Path (1 hour)

PHP 8.4 zapowiada się niezwykle interesująco! Po dość nijakim PHP 8.3 teraz możemy spodziewać się wielu ewolucyjnych, a może i rewolucyjnych zmian - jeśli chcesz wiedzieć jakich nowości będziesz mógł używać już pod koniec 2024 roku, koniecznie wpadnij na prezentację 😁!

0
3 Sposoby Zarządzania Przetwarzaniem W Tle w Symfony
Talk by Łukasz Chruściel in Green Path (1 hour)

Efektywne przetwarzanie w tle jest kluczowe dla tworzenia szybkich i skalowalnych aplikacji Symfony. W tej prezentacji omówimy trzy różne techniki zarządzania zadaniami w tle, od podstawowych do zaawansowanych, zapewniając, że Twoje aplikacje będą działały płynnie i efektywnie. Dołącz do mnie, gdy zagłębimy się w następujące metody: * Podstawowe Podejście z cronem: Zaczniemy od najprostszego sposobu obsługi zadań w tle za pomocą komend konsoli Symfony. * Zaawansowane Podejście z Symfony Messenger: Następnie odkryjemy, jak wykorzystać komponent Messenger Symfony do bardziej zaawansowanego przetwarzania w tle. * Jeszcze Bardziej Zaawansowane Podejście: Na koniec usprawnimy naszą implementację, dodając dodatkowe kwestie architektoniczne. To podejście uwzględnia wysoką dostępność, odporność na błędy i obserwowalność, zapewniając, że Twój system poradzi sobie ze złożonymi procesami i operacjami na dużą skalę efektywnie. Podczas prezentacji porównamy wspomniane metody, dostarczymy praktycznych przykładów, podzielimy się najlepszymi praktykami i podkreślimy zalety i wady każdej metody. Niezależnie od tego, czy jesteś nowicjuszem w Symfony, czy doświadczonym deweloperem, ta sesja wyposaży Cię w wiedzę i narzędzia potrzebne do ulepszenia zdolności przetwarzania w tle Twojej aplikacji.

2
Firy Passion VS Icy Reason: The Great Developers Divide
Talk by Helvira Goma in Red Path (1 hour)

Everyone knows this developer, who is super duper passionate about his job. You can easily recognize this developer because he/she spends hours coding, even outside of work; mastering tech watch like no one else; whose topics of conversation often revolve around code. Even if we are passionate, we sometimes neither feel nor express this passion for the code. And easily, upon this developer's contact, unease can arise if we do not feel this passion. And this, even if you are a developer yourself. This discomfort can be a source of worry and doubt about one's skills. Indeed, if the enthusiast devotes hours to personal projects, perhaps we should? But then, do you have to be passionate to be a developer? Does passion truly add value? Wouldn't the injunction to passion in dev ultimately be a trap? Is passion THE essential software for anyone wishing to code? Here, is the whole purpose of this conference! Bonus: If you like Vikings, this is for you!

15:30 Jak (nie) refaktoryzować aplikacji, historia oparta na faktach
Talk by Michał Kurzeja in Blue Path (1 hour)

Podsumowanie mojej kilkuletniej przegody z refaktoryzacją systemu. Będzie o zdarzeniach, komendach, bubble context. O tym co moim zdaniem jest ważne, a co tylko wydaje się ważne, a ważne nie jest.

Tam se przecież rzucisz mesedż i będzie…
Talk by Dariusz Drobisz in Green Path (1 hour)

…ale czy na pewno będzie i czy wszystko stanie się takie proste i ładne? W minionych latach w środowisku PHP bardzo dużo mówi się o wytwarzania oprogramowania z wykorzystaniem wiadomości. Inżynieria oprogramowania na dobre wdarła się do naszego PHPowego światka, a wraz z nią odeszliśmy od wszechobecnych CRUDów, otrzymując jednocześnie cały wachlarz narzędzi do odkrywania i drążenia biznesowych potrzeb. W sporej części te narzędzia opierają się na zachowaniach, przesyłanych komunikatach i skupione są mocno wokół języka naturalnego. Z drugiej strony dostaliśmy narzędzia techniczne wspierające takie podejście, m. in. tak popularny Symfony Messenger. W takim razie „czy mesedż mesedżowi równy”? Czy każda wiadomość jest taka sama w kontekście wykorzystania i znaczenia? Gdzie poszczególne rodzaje wiadomości znajdują miejsce w warstwach naszych heksagonalnych aplikacji i co z nimi zrobić, gdy heksagonów jest więcej? Między innymi na te pytania postaramy się odpowiedzieć sobie w trakcie tej prezentacji.

2
The PHP Awakens: A Force is in Domain
Talk by Ivan Penovic in Red Path (1 hour)

In this session, I would like to show some real-life examples of using DDD in projects built with PHP. I would emphasize the good and some not-so-good things about using DDD. I would show that implementing DDD is not the problem and it's not something that will make your project so complicated that you'll spend twice more time to deliver it. In the end, I would also show that the DDD approach of building the software is also easy by using language such as PHP. Through a set of examples, we'll dig into the practical implementation of DDD, looking into benefits and potential challenges. Throughout the session, I'll highlight both the strengths and limitations of using DDD in development. Contrary to common misconceptions, I'll demonstrate that integrating DDD principles doesn't necessarily complicate project delivery. Instead, it encourages developers to create robust, maintainable, and readable software.

17:00 Introduction to ReactPHP and Websockets
Talk by Frank Berger in Blue Path (1 hour)

I will show how to build a simple chat client with real live coding in vanilla Javascript and ReactPHP as server and explain the basic concepts behind the process, how to communicate through Websockets, and the possibilities to deploy it on a Webserver.

Przetestujmy Twoje granice. A może ograniczmy Twoje testy?
Talk by Dariusz Drobisz in Green Path (1 hour)

Każdego dnia otoczenie testuje granice, które jako osoby stawiamy. Nie zawsze też udaje nam się je skutecznie utrzymać. Ale nie o tym. W ostatnich latach większość aplikacji tworzonych w naszym PHPowym światku oscyluje wokoło architektury warstwowej, heksagonalnej, modularnych monolitów i nierzadko systemów rozproszonych dumnie nazywanych mikroserwisami, chociaż często do mikro brakuje im w dół kilku rzędów wielkości. Jednocześnie odnoszę wrażenie, że po fazie wielkiego zainteresowania i powstawania nowych narzędzi do testów automatycznych temat ten stał się dużo mniej modny - na rzecz właśnie architektur itp. Mamy jednak w naszym ekosystemie zarówno świadomość istnienia wielu klas testów jak i różnych narzędzi do ich tworzenia. W trakcie prezentacji spróbujmy przyjrzeć się tym klasom, narzędziom i przykładom, a przede wszystkim spróbujmy je nałożyć na te modne heksagony i zastanowić się nad wykorzystaniem poszczególnych z nich w różnych miejscach naszych projektów.

1
Tuning PHPStan to Maximum Strictness
Talk by Ondřej Mirtes in Red Path (1 hour)

Besides the traditional rule levels 0 through 9 which allow developers to adopt PHPStan incrementally while increasing the strictness gradually, the static analyser offers plenty of other configuration options to look at the code with a critical eye. In this talk I'll show you these options with examples of practical impact on your code. It will become more predictable and readable.

18:00 Wzorce do pracy z legacy
Talk by Leszek Prabucki in Blue Path (45 minutes)

Chciałbym powiedzieć o kilku wzorcach których możemy użyć w czasie pracy z różnymi projektami tak zwanymi legacy. Wzorce te mam sprawdzone w bojach na różnych projektach więc będę odnosił się do konkretnych przypadków które faktycznie były zaimplementowane.

0
Need for Speed: Are You Ready to Pay the Price?
Talk by Bohuslav Simek in Green Path (45 minutes)

PHP is pretty fast, isn't it? But sometimes that's not enough. Nowadays, there are tons of ways to implement numerous optimizations and speed up your code. Let's take a look at all of them and, most importantly, examine their costs. We are in for an exciting journey from PHP through C and Rust to assembly itself. But don't worry, we don't need to master any of these languages. One thing is certain - you'll be very surprised by the results!

Monads in PHP
Talk by Christopher Pitt in Red Path (45 minutes)

Many developers get lost in the hype of object oriented design. They miss out on how expressive and succinct their code could be if they tried functional programming. Take Monads, for instance. Many developers haven't even heard the name, much less are able to describe what Monads are and how they can be useful in every-day code. In this talk, we'll gain a clear and simple understanding of what Monads are, and how they can help us to refactor our code to be clear and concise.