phpCE is a first edition of a community conference for PHP programmers and enthusiasts. The meeting was established by merging two nation-wide events: PHPCon Poland and Brno PHP Conference.

Friday 3rd November 2017

10:00
0
Jak TDD pomaga w pisaniu wartościowych testów jednostkowych?
Workshop by Łukasz Wróbel, Michał Kopacz (4 hour)

W swojej przygodzie z pisaniem testów jednostkowych zapewne zdarzyło Ci się że: - sporo czasu zajęło Ci przeczytanie i zrozumienie co robią testy, - zmieniłeś kod pod kątem nowych wymagań i spowodowało to, że musiałeś wprowadzić sporo zmian w testach, - zaimplementowałeś funkcjonalność i pozostało Ci tylko napisać testy, ale nie było prosto je napisać więc w końcu zrezygnowałeś, - zaimplementowałeś funkcjonalność, ale już nie miałeś czasu aby dopisać testy. Takie sytuacje mogą powodować, że nie widzisz wartości w pisaniu testów jednostkowych, bo ich koszt przewyższa zyski jakie dają. Na warsztatach dowiesz się i przećwiczysz, jak można minimalizować koszt tworzenia i utrzymywania testów jednostkowych używając Test Driven Development. W kilku iteracjach TDD przećwiczymy: - przekładanie wymagań na testy jednostkowe, - poprawianie czytelności testów jednostkowych, - stosowanie fazy refaktoryzacji.

Functional testing made easy with PHPUnit & Selenium
Workshop by Ondřej Machulda in Intermediate (4 hour)

Learn how to use PHPUnit to test your app in a real browser using Selenium. This hands-on training will show you how to start writing & executing functional (aka end-to-end) tests with Selenium in a minute. If you already use PHPUnit for your unit tests, there is no need to switch to a different tool or platform just to write functional tests. You can keep productivity from using your familiar environment of PHPUnit and just add some additional integration with Selenium. So we will take advantage of PHPUnit and php-webdriver integration with Steward library, and use Docker to run Selenium without any other dependencies. The training will cover: - setting up local development environment (using Docker) - practical examples of functional tests implementation - exploring possibilities of Selenium WebDriver - parallel test execution using Steward - hands-on Page Object design pattern - dealing with asynchronous elements of web-pages (AJAX, JavaScript) - general tips & tricks how to keep a maintainable suite of functional tests in a long-term

2
Symfony 4 - Hands On Tutorial
Workshop by Hugo Hamon (8 hour)

Symfony 4.0 will be released at the end of November 2017 and will change the way you develop Web applications with Symfony. In this workshop, you'll discover the new recommended best practices promoted by the Symfony Core Team. You'll learn how to install third party packages with Symfony Flex, configure your application with environment variables or leverage the new dependency injection container features, use the new PHP 7 features, and much more! This two day workshop is a practical training where you'll learn how to build a small full featured web application with PHP 7 and Symfony 4.0.

Let your tests drive your development
Workshop by Michelangelo van Dam in Intermediate (4 hour)

Test driven development (TDD) is still a subject all developers agree upon it's a great thing, but never get around to actually do it for many reasons. In this workshop I use real world business requirements on legacy code for which we need to fix bugs and add features, but we're doing it in a TDD way. No matter if you're already a testing veteran or a junior developer just started working yesterday, this workshop will give you the skills and passion to continue your career as a Test Driven Developer.

15:00
1
BDD with hexagonal architecture
Workshop by Tomasz Kunicki (4 hour)

The aim of workshop is to create a testable structure using the concept of Hexagonal architecture with Behavioral Driven Development by Behat v3.3 and configuration functional tests with container. We will focus on setting up a basic structure and configuring the test framework. We'll talk about the pros and cons of this solution. Using that example, we'll show BDD in practice. After the workshop, participants should be able to understand the concept of BDD and could create a basic structure integrated with Behat. This project should be testable on functional level tests. Additionally, the participant will understand the pros and cons of this approach in project.

1
Symfony meets Elasticsearch
Workshop by Michal Kómoch, Michał Jankowski, Bartosz Telesiński (4 hour)

To szkolenie ma na celu przedstawienie prawidłowej integracji i użycia biblioteki FOSElasticaBundle w połączeniu z Symfony3. W trakcie warsztatów postawione zostanie pełne środowisko w kontenerach docker oraz zaprezentowane zostaną przykłady użycia ręcznego tworzenia zapytań do Elasticsearch, a także sposób ich reprezentacji za pomocą Query Buildera w frameworku Symfony3. Po zakończeniu szkolenia każdy z uczestników będzie posiadał solidną wiedzę na temat konfiguracji i wykorzystania Elasticsearcha w połączeniu z Symfony.

Demonstrating advanced layouts and block management in Symfony based web solutions
Workshop by Ivo Lukač (4 hour)

Handling layouts and blocks in templates does the job but it is very rigid, not flexible and hard to maintain. It gets even more complicated with responsive or adaptive rendering for different screen sizes. To improve this we built a tool based on Symfony full stack so that we can: - easily manage different layouts with zones - add/more/remove blocks to zones with a drag and drop interface, - reuse blocks with shared zones - implement custom blocks by simple template and/or controller override, - apply layouts to routes with conditions like user roles, geolocation, time, languages, etc. The tool is envisioned to be used in front of a backend system like a CMS or a eCommerce and provide a faster and more agile way to develop complex web solutions. The workshop is demonstrating integrating this tool with Contentful headless CMS

16:30
3
How to get the most out of a tech conference!
Keynote by Andreas Heigl (30 minutes)

What are the DO's and DONT's for conference-attendees. How to make the most out of the conference-ticket we posses. I will share some tips from my past conference experiences on how to get the most out of a tech conference.

17:00
1
Jak zacząć, aby nie żałować?
Talk by Piotr Horzycki in Relaxing (1 hour)

PHP stanowi bardzo elastyczne środowisko, które można wykorzystać zarówno do małych studenckich projektów, jak i dużych, komercyjnych serwisów internetowych. Nie narzuca przy tym jednolitej architektury systemu - to my musimy o nią zadbać. Co zrobić, gdy mamy przed sobą pusty projekt (greenfield)? Jak dobrać właściwe narzędzia, by później nie żałować wyboru? Jak przygotować się na nieoczekiwany wzrost złożoności projektu? Opowiem o burzliwej historii PHP, pierwszym PHP-owym szale w Polsce z lat 2000-2005, pojawieniu się frameworków MVC i ORM, które automatyzują stawianie projektu - i dlaczego nie zawsze można im ufać. Opiszę podstawowe narzędzia, z którymi pracuję dzisiaj: Vagrant, Composer, PHPUnit, Phing, PHP Code Sniffer. Co warto od razu zapiąć w greenfieldzie, aby dalsza praca była przyjemna i efektywna? Jaką architekturę wybrać? Jak pogłębiać swoją znajomość PHP? Jakie są najnowsze trendy w tym środowisku?

0
Żegnaj REST, Witaj GRPC
Talk by Pawel Rekowski in Intermediate (1 hour)

Przyzwyczailiśmy się już do komunikacji po REST’cie. Wysyłamy po HTTP requesty w te i z powrotem mając nadzieje, że kontrakt API się nie zmienił. Co by jednak było, gdyby zamiast długich i ciężkich JSONów czy XMLi, mogli byśmy komunikować się w sposób binarny? Co by było, gdybyśmy mieli pewność, że kontrakt w API nie może zostać zmieniony i co by było, gdybyśmy mogli odizolować warstwę komunikacji od serwisu niezależnie od używanego języka? Przyjrzymy się bliżej technologii od Google, czyli Protobuff razem z frameworkiem GRPC. Z tej prezentacji dowiesz się: - Czym jest Protobuff oraz GRPC? - Jaka jest różnica między komunikacją po REST’cie, a po ProtoBuffie - Dlaczego warto przyjrzeć się tej technologii? - Jak wyglądało wdrożenie GRPC w BlaBlaCar? - Jak możesz wykorzystać komunikację binarną w swoim projekcie? - Jakie są plusy i minusy takiego rozwiązania?

3
Who's the king; who's the ruler. How to answer the question before it was posted.
Talk by Hubert Bryłkowski in Guru (1 hour)

I will share with you a story about hashes, what they're good at and what they're bad at. Most importantly how to use them in a not-so-typical way. I was faced with a challenge to search a database of questions (about 2 million records) and find duplicates among them. It may look like a pretty simple problem, but doing this efficiently was not trivial. I will explain the algorithms used, discuss their benefits, and show you how I tweaked them to our needs. My main topic will be MinHash and LSH, with a little reminder about general hashing algorithms.

18:00
0
Bezpieczeństwo aplikacji internetowych
Talk by Pawel Makowski in Relaxing (1 hour)

W trakcie prelekcji zostaną omówione najważniejsze kwestie związane z tworzeniem bezpiecznych aplikacji internetowych. Uczestnik zdobędzie wiedzę na temat OWASP top 10, ASVS oraz podstawowych narzędzi do testowania aplikacji. Zaprezentuję podatności, tak te popularne o których często się słyszy jak i nieco bardziej ciekawe.

0
Encryption, authentication and data integrity in PHP 7
Talk by Enrico Zimuel in Intermediate (1 hour)

In this talk, we will show how to encrypt and authenticate sensitive data using PHP 7. We will show how to use the new Authenticated Encryption available with PHP 7.1 using OpenSSL. Moreover, we will introduce the usage of the new Sodium functions of PHP 7.2.

Eventual Consistency - Desining Fail Proof Systems
Talk by Grzegorz Skorupa in Guru (1 hour)

Each day our systems deal with more data, more traffic and more complex tasks. Every large-scale system has to integrate with other internal or external systems. At the same time it should provide up to date information. On the other hand business states high availability and reliability requirements. Those two make designing of such systems difficult. In particular it is difficult to keep your data consistent. It often happens that not all requirements can't be technically met. Fortunately there are theoretical proofs that define what can and can be met in what circumstances. During the talk I will present some of the data consistency related problems typical to high traffic systems and try to sketch possible solutions. During the talk I will mention a few words about: CAP theorem, Eventual Consistency, At Least-Once Delivery and Self-Healing Systems.

20:00
3
A hands on introduction to Laravel
Talk by Freek Van der Herten in Relaxing (1 hour)

Laravel is an amazing framework that allows you to rapidly create quality applications. If you've never worked with Laravel before, and are interested to know what the fuzz is all about, this is the talk for you. In this beginner level talk you'll learn how Laravel makes your job easy. We'll go over the stuff that makes Laravel shine like it's expressive routing system, the easy to learn Eloquent ORM, the powerful command line tools, the scheduler, the built-in testing facilities and much more.

Behat - Zaimplementowałeś kilka scenariuszy, Co dalej?
Talk by Grzegorz Skorupa in Intermediate (1 hour)

You have heard a bit about Behavior Driven Development. You have even written down your first 5 Scenarios and implemented them with Behat. You wish to write more but your head is full of questions. I have been there 2 years ago and I wish to help you. While there are lots of Behat tutorials on the web, not many of them provide insights on how to implement it in a long-term and large-scale projects. Structuring scenarios and their implementations so that they will not change into a big ball of mud is hard. Clear guidelines on this are not easy to find on the web. I will start the meeting with a short introduction of BDD. Then I introduce a very simple Behat set-up that you will likely have after writing your first Behat scenario. At this stage I will start extending and refactoring the code so that eventually it becomes a large-scale testing framework for your application. I will show you an exemplary set-up that supports integration, API and UI testing. I will also try to explain how to structure Behat steps, feature files and contexts in order to provide maintainable and easy to extend code.

9
Domain-Specific Assertions
Talk by Sebastian Bergmann in Guru (1 hour)

A common language, understood by technical and non-technical stakeholders alike, is essential for good communication in a software project. Combining ideas from Domain-Driven Design and Test-Driven Development, this ubiquitous language can be represented in both production code and test code. Attendees of this session will learn how to create tests that are easy to write fast to execute, and deliver highly reliable results. They will gain expertise in the confident and effective implementation of automated tests for their software and learn how to implement custom assertions for PHPUnit to represent the common language of their project in test code.

21:00 Agile 101
Talk by Bartosz Boguszewski in Relaxing (1 hour)

Most of the people when hear Agile think Scrum as this is one of the most popular buzz word. But Agile is much more then Scrum. There are variety of methodologies and frameworks. During this meeting, we are going to talk about origins of Agile. We are going to get familiar with number of methodologies and frameworks like Scrum, Lean, XP, FDD, DSDM and Kanban. We are going to talk about pros and cons of each of them. Let's see what is out there and decide which one is best for your project and your team.

The GDPR is coming, are you ready?
Talk by Michelangelo van Dam in Intermediate (1 hour)

On May 25, 2018 all companies collecting and processing data of people from within the European Union must comply to the General Data Protection Regulation or GDPR. In this talk I'll cover what the GDPR is and how it will impact businesses within the EU and abroad, what can be done to comply to this regulation and how to proceed further. This talk will not provide you legal answers, but will give you technology solutions that will make your applications compliant to these regulations. Even if you're not processing data from the EU, these solutions will offer you better protection to the data you currently keep and will ensure that in the case of a breach, the impact will be minimum.

5
Design Principles for MVP
Talk by Junaid Masoodi in Guru (1 hour)

User experience is the solution for engaging client or user on a site or App. How to design a user experience for MVP (Minimum Viable Product) is very important and how to design right user experience is more important. So how do you ensure that you build the best product when everyone has the same million ideas. We will be talking about MVP and Design principles: What is Minimum Viable Product and UI/UX: Why MVP? The MVP is not about the Product but The product itself. UI is not UX and UX is UI. * Design Principles: * Unity/HarmonyHierarchy. * Scale/Proposition. * Balance. * Dominance/Emphasis. * Similarity/Contrast. Designing User Experience for Minimum Viable Product How MVP and Design Principles should go parallel from day one. How to featurise UX for MVP. Why touring is important for MVP By the end of session you will be able to: * Start working on a product with MVP practices. * How to design MVP using design principles. * For the web, how colours, position and placement of blocks affect site traffic. * How is UI different from UX. * Why touring is important.

Saturday 4th November 2017

10:00
1
Kompleksowe wprowadzenie do Value Object
Talk by Mikolaj Adamczyk in Relaxing (1 hour)

Słyszałeś już o Domain Driven Design i chciałbyś wypróbować to podejście w swoim projekcie? Dobrym sposobem jest rozpoczęcie od wdrożenia w nim kilku Value Object. Pokażę, że może to być dobry krok w stronę udoskonalenia kodu również jeśli nie korzystasz z Domain Driven Design. Podczas prezentacji postaram się na konkretnych przykładach pokazać czym jest Value Object, czym różni się od Data Transfer Object oraz Encji. Zobaczysz jak łatwo używać Value Object z formularzami Symfony, jak zapisać je do bazy danych za pomocą Doctrine, jakie dodatkowe korzyści otrzymujemy korzystając z Value Object oraz jak łatwo możemy je testować. Wskażę również czym w kontekście Value Object są named constructors oraz postaram się odpowiedzieć na pytanie, czy tworząc złożone Value Object lepiej użyć dziedziczenia czy kompozycji. Opowiem również o sytuacjach w których nie należy korzystać na siłę z Value Object. Ze względu na dużą popularność DDD możemy bez problemu znaleźć najpopularniejsze Value Object gotowe do użycia. Na koniec podzielę się informacją, gdzie możemy znaleźć najbardziej przydatne repozytoria Value Object.

6
Discovering unknown with Event Storming
Talk by Mariusz Gil in Intermediate (1 hour)

Event Storming is a lightweight discovery and collaborative learning tool for exploring complex domains and problems. Using Events, the first-class citizens of modern software development, in very short period of the time we can discover, model and visualize flows, aggregates, bounded contexts, business rules and related hotspots, commands, read-models… Event Storming is also a communication platform and knowledge transfer tool you may apply to release into production proper developer’s understanding of the problem, not assumptions or speculations. During this talk you will learn about Event Storming core concepts, patterns and best-practices you may apply in your next complex project. You will also learn how to use Event Storming on different levels, from big-picture system overview to designing aggregates, commands and merging output of Event Storming session with CQRS, Event Sourcing and Domain Driven Designs implementations.

5
Introduction to PHP Extensions
Talk by Derick Rethans in Guru (1 hour)

In this presentation, we take a first look at writing PHP extensions. Using step-by-step examples, we'll take a function written in PHP and convert them into a loadable extension using C. We'll then test both versions and compare the results. After seeing the size and scope of the benefits that can be realized with only a few minor changes, you'll want to try it out for yourself. You'll also understand why we start with simple things, and not try to rewrite all of Symfony in C.

11:00
2
ElasticSearch jako baza danych. Jak radzić sobie z zapisaniem i przeszukiwaniem 10mld+ wiadomości
Talk by Tomasz Banasiak in Relaxing (1 hour)

Jak podejść do tematu przechowywania dużych zbiorów danych w momencie kiedy musimy zachować bardzo wysoką wydajność jednocześnie zapewniając absolutne bezpieczeństwo danych i pewność ich przechowywania. W tym kontekście opowiem trochę o ElasticSearch oraz otoczce zbudowanej przez nas wokół tej technologii. W prezentacji z pogranicza architektury aplikacji pokażę jak ugryźliśmy ten temat i co z tego wyniknęło.

Modern Testing with Codeception: Tips and Tricks
Talk by Michael Bodnarchuk in Intermediate (1 hour)

Codeception is a full stack testing framework. It is widely used by various PHP companies (3+ million downloads on Packagist). What does it offer to you and how can it improve your testing experience? Codeception has smooth integration with all PHP frameworks and provides a clean DSL for scenario-driven testing. You will learn how to make: * user-driven web site tests with Codeception and Selenium * how to organize complex tests with PageObjects and StepObjects * how to write and execute feature files (BDD) with Codeception * how to test web applications effectively * what makes a perfect API test * how to extend Codeception

IoC containers beyond constructor injection
Talk by Hannes Van De Vreken in Guru (1 hour)

Did you know your IoC container can do a whole lot more than just constructor injection? Besides that it is actually packed with features. Inflectors, resolving callbacks, aliasing, method invocation to name a few. In this talk you will learn how to leverage the power of a great container and service providers to write better, loosely coupled code. Well designed code put together by your IoC container will make your applications SOLID, modular, lean and decoupled from the framework!

12:00
0
How to double your team performance? Let’s talk about headless and API first approach.
Talk by Chris Ozog in Relaxing (1 hour)

More and more projects are built using JavaScript frameworks that rely on APIs for data storage. In this speech I will talk about the Codesushi way of developing projects that can boost a team performance. Main elements of the talk: - stages of the project - tools that we used during the design stage - description of a project where we used this methodology [case study]

3
Why Is CRUD a Bad Idea?
Talk by Rostislav Vítek in Intermediate (1 hour)

Everyone knows what CRUD means - Create, Read, Update and Delete... But wait what is actually an Update? Does writer “update” an article or does he “publish” it? Do customers “update” an order or do they “pay” for it? Does your happy boss “update” your salary or does she “raise” it? Generic CRUD approach does not represent a real-life experience and makes both your user interface and API harder to understand and maintain. This talk covers differences between Rich Domain Model and Anemic Domain Model, their advantages and disadvantages, and how these concepts affect the design of your model, forms and user interface.

4
Modeling complex processes and time with Saga pattern
Talk by Mariusz Gil in Guru (1 hour)

Time modeling is always difficult, as well as implementing business flows inside complex domains. Long lived transactions which span multiple bounded contexts, possible success and failure scenarios are even more difficult to model, test and implement. Fortunately, we have an answer to this problem! Multiple messages, events, aggregates and bounded contexts? Not a problem, Saga pattern may be very helpful… During this talk you will learn how to model long running business processes which affect many regions inside domains, what are the best possible use-cases and when to avoid sagas.

13:00
0
UUID - The only ID you need?
Talk by Arkadiusz Kondas in Relaxing (1 hour)

Co to jest UUID i co oznaczają kolejne jego wersje? Jak zacząć korzystać z UUID w PHP? Czy moja baza poradzi sobie z UUID? Do czego nadaje się UUID, a do czego nie? Czy UUID to jedyne ID jakiego potrzebuję? Na te i inne pytania postaram się odpowiedź w prezentacji poświęconej wyłącznie uniwersalnie unikalnym identyfikatorom.

Mikroserwisy nie są lekiem na całe zło
Talk by Maciej Malarz in Intermediate (1 hour)

Ale mikroserwisy są najważniejszym wynalazkiem od czasów koła! Na pewno musisz ich użyć, Amazon ma ich mnóstwo i tylko popatrz na nich. Chyba nie muszę nawet wspominać o takich tuzach jak Google czy Netflix? Prawda jednak jest taka, że (zazwyczaj) nie jesteśmy Amazonem, skala na którą operujemy jest ciut mniejsza. Nawet problemy, z którymi codziennie się mierzymy, są z zupełnie innego typu. Mimo wszystko, ignorowanie mikroserwisów nie byłoby najmądrzejsze, więc podczas prezentacji przyjrzymy się zarówno im, jak i problemom które obiecują rozwiązać. Większej reklamy im robić nie będę, to nie jest ten typ prezentacji, po której siądziecie do komputera i zaczniecie kodzić. To jest ten typ prezentacji, po której pomyślicie dwa razy zanim dacie się porwać hype'owi. Zamiast koncentrować się na zaletach, przyjrzymy się balastowi, jaki towarzyszy mikroserwisom, oraz zastanowimy się czy gra jest w ogóle warta świeczki.

2
It's all about the goto
Talk by Derick Rethans in Guru (1 hour)

Don't worry, this is not about the goto keyword. In this presentation, I am showing you some of the inner workings of PHP. We are going to look at how different language keywords and constructs are handled internally. Basically, everything is converted to goto, but the how and why, is not as simple as it seems! This is a very in depth talk, mostly interesting to people that want to know how PHP works internally. Expect lots of wonkyness, a form of assembly, and trees.

15:00
1
PHP + Business = Money!
Talk by Martin Hlavač in Relaxing (1 hour)

PHP isn't sexy anymore and that's why we love it! This is a story of mature language that drives huge businesses, generating billions in revenue. At Wayfair we use mostly PHP and we try to stay pragmatic about it, avoiding dogmas by always evaluating pros and cons of our decisions. Keeping things simple with 1000+ engineers isn't easy. I'll share with you our magic formula and few insights that will make your decisions more pragmatic, helping you run your own business.

Journey through "unhappy path" - Dealing with exceptional conditions
Talk by Nikola Poša in Intermediate (1 hour)

Developers naturally gravitate towards the "happy path" - default scenario in application execution in which everything works as expected, consequently neglecting exceptions and error handling aspect of a software development. This talk provides a comprehensive insight into widely adopted practices and patterns for dealing with exceptional and error conditions. You will learn about writing and organizing custom exception classes, formatting exception messages, component-level exceptions technique, and much more. In a word - Exceptions cheat-sheet. Once thrown, the exceptions should be caught, so you'll also be introduced with different error handling strategies and concepts.

Getting started with PHP core development
Talk by Arnout Boks in Guru (1 hour)

While PHP’s open source community is thriving, only a relatively small number of PHP developers contribute to the number one tool they use on a daily basis: PHP itself. Although it may seem daunting to help out on a project written in C, requiring compilation and linking, getting started is actually pretty easy. In this talk I would like to share my own recent experiences of beginning to contribute to PHP itself. We will cover some practical tips, workflows and resources, so you can start giving back to your programming language straight away!

15:30
0
How we break things at Wayfair
Talk by Roberto Ladd in Relaxing (30 minutes)

In a hyper growth company with over a thousand engineers collaborating every day things will eventually break. How can this single assumption be a success driver?

16:00
0
Code Review - jak robić to lepiej?
Talk by Sebastian Malaca in Relaxing (1 hour)

Im bardziej skomplikowana jest aplikacja, tym więcej osób nad nią pracuje. Im więcej kodu tworzą programiści, tym ważniejsze jest dbanie o jego jakość. I w tym momencie przychodzi nam z pomocą Code Review. Jednak, często zdarza się, że po jakimś czasie, kiedy chęć ludzi do wypróbowania tej techniki maleje, a ilość review rośnie, wiele osób zaczyna narzekać. Szukają wymówek, aby tylko nie robić review. Albo nie robić ich wystarczająco dokładnie. Czy to jest problem? Tylko jeżeli w tym momencie nikt nie zareaguje. Ponieważ tak naprawdę jest to chwila na wprowadzenie usprawnień i poprawek!

Start Smoking, Get Confidence - HTTP Smoke Testing
Talk by Petr Heinz in Intermediate (1 hour)

It is usually not easy to start with automatic testing of an existing web application. You may have heard that applications must be written to be “testable”. But what if you still want the confidence that your refactoring did not cause the application to crash? And even if your application is testable that does not stop you or other people from skipping writing tests in order to “save” some time because let’s face it - the application can be used even without automatic tests. We will present you our package for HTTP smoke testing that: - makes it easy to start with testing any Symfony web application - will automatically prompt you to test new pages/actions - is so cheap to use that you will not even think about skipping writing tests

Constructing a Test Pyramid: Because Your Tests Needs Architecture Too
Talk by Michael Bodnarchuk in Guru (1 hour)

Every PHP application needs its policy about tests. What is important to test, what is not, at which levels should a feature be tested. As we think of application architecture before writing a single line of code, we should think of a test architecture before implementing tests. From this talk you will learn: - how to transform business expectations to tests using ATDD and BDD approaches - how to write stable tests that evolve with code - how to deal with test data - how to decide, should it be unit or integration test

17:30
0
Migracja danych - case study
Talk by Piotr Kosinski in Relaxing (1 hour)

Kiedy dwie firmy się łączą, developerzy stoją przed wyzwaniem integracji systemów oraz migracji danych. Tak się stało kiedy eMAG - jeden z głównych graczy na rynku e-commerce w Europie środkowo-wschodniej - zdecydował się na migrację systemów przejętej firmy do swojego ekosystemu. Nasze zespoły miały możliwość pracy nad migracją dużej ilości informacji - danych kilku milionów produktów do naszych systemów. Brzmi banalnie - "weź produkt z aplikacji, dostosuj i zapisz w naszej aplikacji". Chcielibyśmy żeby tak właśnie było ;-) Opowiem Wam naszą historię: jakie problemy napotkaliśmy, co zrobiliśmy dobrze oraz gdzie popełniliśmy błędy - pamiętajcie że najlepiej uczyć się na cudzych błędach! Moja prezentacja obejmie tematy z obszarów analizy biznesowej, rozwiązań technicznych oraz zarządzania.

1
How we handle integrations of more than 100 different partners?
Talk by Umit Akkaya in Intermediate (1 hour)

Having many partners is an amazing thing. What about integrating with them? You have to - Provide implementations for REST APIs, SOAP services, non-standard web services. - Support different authentication methods - Handle errors in case of a failure in third party system - Last but not least each side has to be aware of every change. In this presentation I will show you how we tackle all those problems within our architecture by creating a centralised integration application. Our solution heavily relies on the following techniques and technologies: - Message Queue - Command/Event bus - API Callbacks for realtime events

Introduction to the Semantic Web
Talk by Arnout Boks in Guru (1 hour)

What if we could evolve our web of individual documents and data to a web of interlinked knowledge, a web where machines can automatically combine data from multiple sources and draw conclusions from it? The Semantic Web technologies from W3C enable us to make sense of the data wilderness on the web and unlock the full potential of the data treasures hidden in it. In this talk, we will see how RDF enables us to formally describe the meaning of data and how such data can be queried with SPARQL. We will look at how OWL lets us make more expressive statements about the world, so that a computer can logically reason about it and infer new information. We will demonstrate these technologies by showing how they can be used to combine data sets in different formats as if they were one and letting a computer draw logical (and perhaps surprising) conclusions for us.

18:30
0
Easy Coding Stadard - Setup Coding Standards under 5 minutes
Talk by Tomas Votruba in Relaxing (30 minutes)

I educate companies about advantages of coding-standards when it comes to hiring new people, code-review smells and upgrading to newer version of framework. When I explained developer PHP_CodeSniffer and PHP-CS-Fixer I often saw, it's too complicated for them. I realized, I'm so used to them, I don't see the huge entry barrier I had many years ago too. I don't want programmers to put energy to learn complicated things, that are very simple in their essence. That makes me really angry! So I took a year off and made a tool, where all you need is one CLI line. I named it EasyCodingStandard. It focuses on open and clear communication, what is happenening, which class is doing what check and guides you what you should do. Did I say it supports own checkers and uses cache, that finishes 2nd run under few seconds?

Uncommon (Ab)Uses of Composer
Talk by Alain Schlesser in Intermediate (1 hour)

Composer is a hugely flexible tool that works reliably on all but the most obscure hosters/platforms. What's more, it provides a plugin system that lets you pull external code from a repository and have that code hook into the normal Composer execution flow. The logical conclusion is that Composer is used for much more than just pulling in dependencies. We'll start this session with a quick look at the basic mechanisms that make Composer as flexible as it is. Then, we'll go through some of the more useful and/or exotic examples of how to use Composer for solving problems that it wasn't really meant to solve.

0
Event Sourcing - the story of an entity
Talk by Jakub Saleniuk in Guru (1 hour)

Advantages of Event Sourcing have in the past few years gained it a lot of popularity. The presentation is an introduction to Event Sourcing for those who want to start programming in the new way. More advanced notions, such as event versioning, creating a projection and external services integration in Event Sourcing will also be covered.

19:00
0
Jakie są koszta hostingu na AWS?
Talk by Krzysztof Daniel in Relaxing (30 minutes)

To pytanie pojawia się często, kiedy pada propozycja uruchomienia projektu na AWS. Podczas prezentacji pokażę parę casów odrobinę bliższych polskiej rzeczywistości (hostowanie średnich projektów, nie Neflixa czy innych ogromnych startupów) i średnich kosztów automatycznie skalowanej infrastruktury, które dla wielu jest rozwiązaniem na nieograniczony skalowanie horyzontalne i problemy z wydajnością. Przedstawię kilka wskazówek na temat kosztów, pułapek abyście mogli wyciągnąć wnioski z naszych wpadek. Pokażę, jak my pracujemy ze środowiskami automatycznie się skalującymi, jak je konfigurujemy i jaka jest nasza strategia na rolling update. Jakie opcjonalne założenia musimy poczynić, kiedy wśród wymogów pojawia się wysoka dostępność. Ostatecznie postaram się odpowiedzieć na pytanie czy AWS pozawala zaoszczędzić pieniądze na hostingu?

Sunday 5th November 2017

10:00
1
Czy PHP znajdzie swoje miejsce w IOT?
Talk by Przemysław Krzywania in Relaxing (1 hour)

Opowieść o podłączaniu sprzętu przemysłowego do serwerów z PHP.

Async PHP requests & reactive responses with php-fpm
Talk by Holger Woltersdorf in Intermediate (1 hour)

There are many approaches to execute PHP sub-tasks asynchronously or to parallelise PHP execution. While some solutions require extra extensions, individual PHP builds or a lot of process control management, this talk will show you how to configure and use the built-in PHP FastCGI Process Manager (php-fpm) to execute requests asynchronously in an isolated, tunable process pool and eventually handle their responses in a reactive way.

Diving deep into blockchain
Talk by Tomasz Kowalczyk in Guru (1 hour)

The blockchain is a hot new topic in the technology due to the rise of various cryptocurrencies, Bitcoin being a most prominent example. How does it work? What advantages does it give? What problems do they solve? What problems can be solved that way? I want you to dive with me into the immutable world of blocks where I will explain everything, from a simple hash, through Merkle trees, up to implementing your own blockchain. Blockchain to technologia, która stała się popularna dzięki najpopularniejszej kryptowalucie - Bitcoinowi. To idea bazy danych, w której raz umieszczone dane nie mogą się już zmienić. Te właściwości powodują, że wiele branż zainteresowało się przechowywaniem swoich danych w blockchainie. W tej prelekcji przedstawię ideę blockchainu, techniczne mechanizmy i algorytmy, które umożliwiają jego poprawne działanie oraz pokażę w jaki sposób działają istniejące implementacje blockchainu.

11:00
0
Simple Plugin Creation in WordPress
Talk by Peter MacIntyre in Relaxing (1 hour)

Can't find that perfect plugin in the thousands that exist? Do you want to extend an existing Theme? Come to this session to see just how easy it is to create your own plugin and to get a brief look at the internal functions that WordPress makes available to the developer. We will actually create a simple plugin and a child theme in this session while looking at the PHP code needed to make this happen.

Middleware-based architectures
Talk by Matthieu Napoli in Intermediate (1 hour)

HTTP middlewares are spreading everywhere since PSR-7, yet they are often seen as an implementation detail for very specific problems. After having discovered them with PSR-7, after having written a middleware-based framework and after collaborating on PSR-15, my understanding is now different: middlewares help us better understand and design the architecture of our applications. Let's start again from scratch and work our way up to an architecture entirely built on middlewares: what does it look like and how does it compare to the frameworks we all love?

1
Microservices vs The Distributed Monolith
Talk by Christopher Riley in Guru (1 hour)

When faced with a challenging legacy code base, tightly coupled and void of discernible structure: a big ball of mud, it is common to decide to refactor this monolith to a microservice architecture to separate concerns and split the codebase up, however without any clear boundaries you are in danger of creating a distributed big ball of mud. You may recognise the symptoms of a distributed ball of mud: a large unfocused 'common' library shared between multiple services; performance issues as your front end makes calls to multiple back end API's to serve a single request; dependency hell on deployments as you have to release multiple code bases simultaneously and uptime issues as a single microservice going down brings down your entire application. In this talk I'm going to cover some of the common pitfalls you might encounter when building a microservice architecture and show you how to use an event driven architecture to build truly scalable microservices.

12:00 Building an Open-Source Campaign Platform for the new President of France
Talk by Hugo Hamon in Relaxing (1 hour)

This case study will take you to the technical backdrop of Emmanuel Macron's victorious campaign in the French presidential elections of 2017. We will reveal how the En-Marche and SensioLabs teams worked closely together to develop a collaborative, Open-Source and citizen platform with PHP 7 and Symfony to structure the movement. In addition to the technical and political issues involved in this project, we'll present solutions such as continuous deployment with Docker under Kubernetes, continuous integration with Circle CI, SCRUM and Kanban project management, use of Rabbitmq, Symfony 3 new features, and more. We'll demonstrate the importance of choosing these solutions to meet the agility and scalability needs of the highlights of the campaign.

What we learned by merging two big Symfony based applications
Talk by Ivo Lukač in Intermediate (1 hour)

Due to complex web projects we work on, there was a need for deeper integration between content management system and eCommerce solution. As eZ Platform is based on Symfony we searched for a Symfony based ecommerce solution and found Sylius as the best choice. We combined the two systems in one Symfony instance so we can integrate on much deeper level. Learn about our experience with merging and maintaining such a solution.

1
Time-driven applications
Talk by Piotr Horzycki in Guru (1 hour)

Discount systems, booking platforms, contests - all those applications have one thing in common: date & time management. How to implement business logic dependent on the time of the day, week, year? Half-price pizza on Mondays, course registration until the end of August or a landing page available only in November? I deal with business requirements like these every day at work. I will show you the way I refactored messy code and wrote tests, so other programmers would not be afraid to make changes anymore. I'll convince you to use DateTimeImmutable and show some interesting date/time operations available in PHP standard library.

13:00
0
Constantly improve your PHP code
Talk by Arkadiusz Kondas in Relaxing (1 hour)

Podczas testowania aplikacji PHP niezależnie od tego, czy ręcznie, czy też automatycznie, programiści spędzają wiele czasu na wykrywaniu błędów w kodzie, który nawet nie byłyby kompilowany w innych językach. W ten sposób pozostawiają mniej czasu na testowanie rzeczywistej logiki biznesowej, która powinna być najważniejsza. Dzięki statycznie analizie kodu powstało szereg ciekawych narzędzi pozwalających w pełni zautomatyzować proces Continuous Improvement. Ta prezentacje będzie obiektywnym przeglądem najnowszych rozwiązań pozwalających na stałe ulepszanie jakości kodu w Waszych projektach.

2
Lessons learned from dockerizing complex web apps
Talk by Grzegorz Drozd in Intermediate (1 hour)

What we learned from putting Perl, php, mysql, solr, redis, queues, cassandra, aws services, web applications, api endpoints and off-line scripts processing into docker containers. They fit great in them.

Infrastructure as Code
Talk by Sebastian Grodzicki in Guru (1 hour)

Terraform enables you to safely and predictably create, change, and improve production infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned. Terraform has emerged as a key player in the DevOps world for defining, launching, and managing infrastructure as code (IAC) across a variety of cloud and virtualization platforms, including AWS, Google Cloud, and Azure. In this talk I'll show you how to get up and running with Terraform using IaaS (e.g. AWS, DigitalOcean) or SaaS providers (e.g. CloudFlare, GitHub).