Dutch PHP – konferencja dla pasjonatów i ludzi związanych (nie tylko) zawodowo z technologią PHP, odbywa się co roku i za każdym razem cieszy się ogromną popularnością. Co ją charakteryzuje to ciekawe wykłady, znani prelegenci i… Amsterdam.

W tym roku konferencja wypadła 26 – 28 czerwca, z czego pierwszy dzień poświęcony był warsztatom, natomiast podczas dwóch kolejnych odbyły się faktyczne wykłady. Konferencji wręcz nie mogłem się doczekać bo miał być to mój pierwszy udział w tego rodzaju evencie, pierwszy pobyt w Amsterdamie i… pierwszy lot samolotem.
Ale zacznijmy od początku…

Naszą podroż do Amsterdamu rozpoczęliśmy 26 czerwca na lotnisku w Katowicach Pyrzowicach. Około 11 przeszliśmy odprawę i całą naszą trójką (Ja, Radek i Kuba) znaleźliśmy się w samolocie. Przelot był niesamowity, super wrażenia, tylko w trakcie podchodzenia do lądowania praktycznie ogłuchłem przez zmiany ciśnienia. Ale co tam, było fajnie. Wylatując z Polski mieliśmy kiepską pogodę, natomiast po wylądowaniu w Eindhoven, naszym oczom ukazała się słoneczna i ciepła Holandia. Odebraliśmy nasze bagaże i niczym Antony Bourdaine pośpieszyliśmy na autobus na główny dworzec kolejowy w Eindhoven skąd już bezpośrednim połączeniem dostaliśmy się do Amsterdamu.

Jako, że nie braliśmy udziału w dniu warsztatów i nasz udział w konferencji miał się rozpocząć w dniu następnym, postanowiliśmy zobaczyć Amsterdam, a przynajmniej jego część. Wrażenie zrobiło na nas praktycznie wszystko, od architektury miasta (piękne połączenie nowocześniejszych zabudowań ze starymi kamienicami), po ogromną ilość rowerów i samochodów elektrycznych (był nawet stary Garbus). Wieczorem rozdzieliliśmy pomiędzy naszą trójkę wstępny harmonogram wykładów by „wynieść” z konferencji jak najwięcej (a nie tylko gadżety).

Amsterdam - widok

Dutch PHP czerwony box

W piątek 27 czerwca o godzinie 9 zgłosiliśmy się w „Amsterdam RAI” – ogromnym kompleksie wystawowo konferencyjnym – w celu zarejestrowania się na konferencji i odebrania naszych imiennych identyfikatorów/kart z harmonogramem wykładów.

Drugim tematem poruszanym na konferencji, poza samą technologia PHP, były technologie mobilne, które z uwagi na naszą specjalizację (cała nasza trójka to programiści PHP) pominęliśmy.

Głównym organizatorem konferencji był „ibuildings”, ale wśród sponsorów znalazły się między innymi takie marki, jak: JetBrains, GoodGame (GoodGamę Empire), SensioLabs (twórcy Symfony), GitHub, Engine Yard, Cool Blue i wielu innych.

Swoje stanowiska promocyjne mieli też: GoodGame, SensioLabs, JetBrains, Engine Yard oraz Cool Blue. Każdy starał się czymś zainteresować uczestników. GoodGame kusiło ofertami pracy dla programistów PHP, możliwością zagrania w piłkarzyki oraz najnowszą wersją GoodGame Empire na tablecie. Pan z SensioLabs mówił bardzo ciekawie i wyczerpująco o swoich produktach oraz rozdawał zielone hipsterskie okulary. Engine Yard przy ogromnym 40 calowym telewizorze zachęcali do swojego rozwiązania oraz rozdawali do niego darmowe klucze trialowe. JetBrains mieli wyjątkowo mało ciekawe stanowisko, chociaż znowu rozdawali świecące jojo.

Jednakże największym zainteresowaniem cieszyło się stanowisko Cool Blue, gdzie można było wypróbować „Oculus Rift”!!! Super wrażenia, a to dopiero początek.

Coolblue

Zdjęcia

Dokładnie o godzinie 9:40 rozpoczął się wykład inauguracyjny, na którym przedstawiciele ibuildings opowiedzieli kilka słów wstępnych na temat organizacji oraz przedstawili wszystkich sponsorów. Zaraz po nich Evan Coury rozpoczął opowieść o tym, jak będąc nastolatkiem w 3 godziny napisał swoją pierwszą stronę WWW i utworzył jedną z największych bramek wysyłającej smsy. Był to niesamowicie charyzmatycznie poprowadzony i inspirujący wykład. Wszystko posiadało swoją puentę i sens. Zgodnie z wykładem, należy mieć swoje „poboczne projekty” (side projects), gdyż to właśnie one nas rozwijają i sprawiają, że poznajemy nowe technologie – mówił Even Coury. Niestety wykład minął dość szybko, ale naprawdę po nim zapragnąłem by zrobić coś ze swoimi pobocznymi projektami i wprowadzić w życie kilka z nich.

Scena przed wykładem

Pierwszy wykład, na który udaliśmy się z Kubą, był poświęcony systemowi kontroli wersji GIT. Tutaj zaskoczenie, wykład poprowadziła Lorna Mitchell – jedna z kobiet, które jak się okazało swoją wiedzą i płynnością zawstydziłaby niejednego z nas. Wybrała ciekawy sposób prowadzenia wykładu, a mianowicie przy każdym „rozdziale” dawała wybór, który temat ma omówić. Tak więc na pierwszy ogień sala wybrała zagadnienia poświęcone przenoszeniu i wycofywaniu commit’ów. Pomimo że temat jest mi znany poznałem kilka ciekawych komend. Zdecydowanie najlepszym wyborem okazał się być „git bisect”, niesamowite „narzędzie” do szukania błędów w repozytorium. Następne wybory były co prawda trochę mniej ciekawe, gdyż dotyczyły tagowania repozytorium oraz logów, choć i tutaj też pojawiło się kilka ciekawych informacji. Niestety, dwa razy słuchacze dokonali wyboru tematów, którymi nie byłem zainteresowany, no trudno.

Pierwszy wykład za nami i już się nie mogłem doczekać następnego. Dotyczył technik refaktoryzacji oraz wzorców projektowych. Poprowadził go Bejnamin Eberlei jeden z kontrybutorów Doctrine! Podczas wykładu, który niestety okazał się być zbyt krótki, Lektor na żywo refaktoryzował brzydki fragment kodu stosując kolejno wzorce Fabryki, Fasady oraz Strategii. Po każdej refaktoryzacji odpalał testy jednostkowe oraz podkreślał, żeby refaktoring robić małymi kroczkami, nawet kosztem początkowo znacznie brzydszego kodu. Poza tym zachęcał, aby do refaktoryzacji używać wbudowanych w IDE narzędzi (np. Extract to method z PHPStorma). Pomimo, że nie pojawiło się zbyt wiele nowych rzeczy na samym wykładzie to słuchałem go z ogromnym zainteresowaniem i wyciągnąłem z niego 1 istotny wniosek – bezbolesny refaktoring należy robić małymi krokami! Ciekawostką w samym wykładzie było to, że lektor wspomniał o ciekawym narzędziu tworzonym przez firmę Qafoo (w której na co dzień pracuję), które umożliwia dokonywanie refaktoringu przy pomocy konsoli. Po skonsultowaniu tematu osobiście po wykładzie zapaliła mi się w głowie żarówka co do potencjalnych jego zastosowań.

Po tym nastąpiła godzinna przerwa, podczas której wymieniliśmy dotychczasowe wrażenia.
Na następną sesję rozdzieliliśmy się i każdy poszedł na inny wykład. Ja w ostatniej chwili zdecydowałem się na ten pod tytułem „Skalowalne aplikacje webowe z wykorzystaniem Apache Cassandra”. Zabrzmiało to dla mnie ciekawie i nie zawiodłem się na nim. Lektor opowiadał o NoSQL’owej bazie danych „Cassandra”, twórców serwera Apache. Niestety sam wykład nie był zbyt elektryzujący, skończył się przedwcześnie i był czysto teoretyczny. Jedyną rzeczą którą z niego wyniosłem było porównanie Cassandry do innych baz danych.

Wykład

Zdecydowanie większe oczekiwania miałem co do następnego wykładu poświęconemu kolejkowaniu danych. Prowadzący rozpoczął swój wykład zdaniem „Ponieważ jestem Niemcem zaczniemy o czasie”. Sam wykład był prowadzony w niesamowicie żywy i elektryzujący sposób; dużo humoru, dobra prezencja i niesamowita charyzma spowodowały, że minął on bardzo szybko. Jednakże brakło jakichkolwiek porównań i charakterystyk technicznych na temat dostępnym narzędzi do kolejkowania (pomimo, że lektor wspomniał o kilku). Podsumowując, był to naprawdę fajny wykład, który faktycznie uzasadnił w jakich przypadkach można, a w jakich należy kolejkować dane. Niestety była to jednak wesoła pogadanka teoretyczna po której miałem duży niedosyt, problem 45 na wykład dał o sobie znać.

Kolejną sesje również spędziliśmy osobno. Kuba wybrał wykład o BDD, a Radek „Wzorce nowoczesnych aplikacji Webowych”. Ja natomiast odbyłem swoją pierwszą przygodę z kolejną już, NoSQL’ową bazą danych Redis. Przyznaję, że mile mnie ona zaskoczyła – wcześniej nie widziałem ani sensu, ani też zastosowania dla kolejnej tego typu bazy danych. Czasem dobrze jest się pomylić. Lektor Justin Carmony w bardzo ciekawy sposób omówił główne aspekty pracy z bazą danych. Ucieszyłem się, widząc trochę praktycznego kodu oraz żywy przykład symulacyjny, pokazujący możliwości obliczeniowe Redis’a. Program symulował obciążenie w cyklu 200.000 operacji zapisu/odczytu na jedną sekundę. Po dodatkowych konsultacjach z prowadzącym w końcu mam praktyczne porównanie różnych baz NoSQL’owych (MongoDB, Redis, Cassandra) i SQL’owych i wiem, w jakich sytuacjach mogę z niej skorzystać. Po tym wykładzie teoria z zakresu „Apache Cassandra” nabrała dla mnie nowej wartości.

Blazing Data

Uwieńczeniem pierwszego dnia był ostatni wykład, na który wybraliśmy się ponownie razem z Kubą. Dotyczył tematu, którym osobiście byłem ogromnie zainteresowany, a mianowicie „Websocket’y”. Sam koncept był mi ogólnie znany, uradowała mnie jednak informacja, że będzie on dotyczyć m.in. biblioteki ReactPHP, którą się zainteresowałem w ostatnim czasie. Prowadzący pokazał dużo praktycznych przykładów pracy z kodem i zaprezentował ciekawą nakładkę na Websocket’y . Prostota wykorzystania zdecydowanie stanowi o atucie tego rozwiązania. Pomimo, że wykład trwał tylko 45 min, starałem się z niego wyciągnąć jak najwięcej i jedno jest pewne – wezmę się za Websocket’y. Jedyne uwagi, które mam do tego wykładu, to jego zbyt monotonna forma jego prowadzenia. Słychać było, że prowadzący zna się na temacie. Niestety, można było odnieść wrażenie, że o tej godzinie przydałoby mu się trochę więcej energii.

Pierwszy dzień za nami, podsumowując: z całości byliśmy zadowoleni, a to dopiero pierwszy dzień. Jedyne, co nam jeszcze pozostało, to zwiedzanie Amsterdamu.

I'am Amsterdam

Drugi dzień razem z Radkiem rozpoczęliśmy od wykładu poświęconemu tematowi kryptografii. Jako, że na studiach interesowałem się tym tematem, to byłem ogromnie ciekaw, czy lektor spełni moje oczekiwania. Czy spełnił? Zdecydowanie. Ciekawe było to, że na wykład przyszło dość sporo osób, nawet Lektor był tym faktem zaskoczony. Prowadzący był pracownikiem Zend’a i twórcą komponentu Zend\Crypt, co samo w sobie było dla mnie rekomendacją. W ciągu 45 min udało mu się zmieścić trochę podstawowej teorii na temat szyfrowania danych. Mówił o szyfrowaniu danych algorytmem AES, o hybrydowym systemie kryptograficznym oraz o podpisach cyfrowych. Przedstawił je na tyle zwięźle i czytelnie, że starczyło mu czasu na omówienie kilku przykładów z kodem. Dotyczyły one szyfrowania w surowym php (wykorzystując mcrypt i openssl)  oraz Zend\Crypt. Mogłoby się wydawać, że przy takiej ilości rzeczy nie starczy czasu na pytania. Nic bardziej mylnego! Lektor zdążył odpowiedzieć przed końcem wykładu na kilka pytań od słuchaczy. Wypowiedź prowadzącego zdecydowanie spełniła moje oczekiwania i sprawiła, że z ogromną dawką energii poszedłem na następny.

Wykład 2

Dotyczył on rejestracji zdarzeń. Szczerze przyznam, że z opisu wywnioskowałem, iż będzie on tyczył zupełnie innej tematyki, ale nie mogę powiedzieć, że byłem niezadowolony. Wręcz przeciwnie, był to najbardziej inspirujący wykład w kontekście całej konferencji.  Widać, że lektor był pasjonatem, i to właśnie spowodowało, że wykład poprowadził z dużą werwą i energią. Jego sposób organizacji kodu wzbudził moje zainteresowanie. Jedną z ciekawszych rzeczy było to, że zawsze robi osobną klasę na ID dowolnej encji w bazie danych. Sam wykład dotyczył zapisywania wszystkich stanów obiektów celem późniejszego odtworzenia jego historii. Bardzo ciekawy koncept. Lektor przedstawił przykłady zastosowania biznesowego, mówił o agregatorach i projektorach danych. Wątpliwości kilku osób wzbudziła optymalność tego rozwiązania, bo przecież historia zdarzeń takiego obiektu byłaby dość często zapisywana. Prowadzący przedstawił nie tylko rozwiązanie tego problemu, ale także pokazał sposoby, dzięki którym można uniknąć podobnych komplikacji w przyszłości . Praktycznie całość prezentacji oparta była na kodzie i wątpię czy, u kogokolwiek wywołała ona senność.

Prawdę mówiąc nie sądziłem, że po tym wykładzie mogłoby być lepiej, lub chociaż równie dobrze. A jednak. Początkowo planowałem iść na wykład „Tworzenie modeli” na który udali się Kuba z Radkiem. Jednak w ostatniej chwili zdecydowałem się iść na ten poświęcony teoriom paczkowania i pakietowania. Temat kojarzył mi się z popularnymi: Composer’em i Packagist, z których na co dzień korzystam. Prowadzący mówił o tym, w jaki sposób budować paczki, biblioteki, pakiety bibliotek tak, żeby były stabilne i przygotowane w sposób pozwalający im cieszyć się popularnością, a nie odstraszać kiepską jakością. W większości przedstawione zasady teoretyczne, których powinno się trzymać, okazały się dla mnie bardzo przydatne – na pewno postaram się je stosować w praktyce. Wyszedłem z wykładu zadowolony i utrzymał się mój dobry nastrój. Zabrakło mi jedynie informacji na temat tego, jak taką przykładową paczkę wykonać lub gdzie szukać tego typu tutoriali. Sam prowadzący okazał się osobą bardzo kompetentną i jego akademickie podejście do tematu doskonale się sprawdziło.

Na kolejny wykład długo nie mogłem się zdobyć. Miałem do wyboru podstawy z Nginx lub Metodologię Agile. Ciężki wybór. Pierwszy wykład miał zostać poprowadzony przez tego samego lektora, który otwierał całą konferencję. Natomiast drugi przez prowadzącego, który mówił o Redisie. Kuba i Radek już zdecydowali. Ostatecznie postanowiłem, że pójdę razem z Kubą na Agile. I pożałowałem tego. Pomimo fajnie poprowadzonego wykładu i dość charyzmatycznego lektora wykład okazał się całkowitą stratą czasu. Nie dowiedziałem się nic nowego i brakło mi jakichkolwiek nowych recept na Agile. Jestem pewien jednak ze osoby niewdrożone w tą metodologię były zadowolone. Ja po raz pierwszy (i jedyny) usypiałem na wykładzie. Dodatkowo Radek potwierdził, że wykład z podstaw Nginx okazał się świetny. Żałowałem podwójnie.

Nie zastanawiając się zbyt długo poszliśmy na ostatni już (niestety) wykład. Nie wiedziałem, czego do końca mam się po nim spodziewać. Dotyczył „Odwrócenia kontroli” (Inversion of Control). Był to tak naprawdę jedyny wykład, na który był sens iść o tej godzinie, więc wybór był prosty. I tutaj znowu miłe zaskoczenie, prowadzący okazał się być współtwórcą Zend Framework 1 i 2. W swoim wystąpieniu poruszył kwestię koncepcji Dependency Injection, która nie była mi obca. Na warsztat wzięliśmy „ServiceLocator” z ZF2. Prowadzący przedstawił kilka narzędzi do DI, m.in. Pimple i Zend\DI. Co było zabawne, to sam prowadzący (jako twórca) Zend\DI wyraził swoją negatywną ocenę dla komponentu i oznajmił, że nie będzie on rozwijany. Po raz kolejny mieliśmy wykład oparty głównie na kodzie i sposobach na to, jak można go zrefaktoryzować. Plusem formy prowadzenia wykładu była chęć zaangażowania słuchaczy, co zdecydowanie się udało. Podsumowując wykład; spodobała mi się forma, rozbudziłem się po poprzednim wykładzie (albo to były te 2 kawy co wypiłem). Jednak nie wyniosłem z niego nic nowego. Od pewnego czasu użytkuje ZF2 i bardzo dużo korzystam z narzędzi, o których mówił lektor i chciał nas zachęcić do ich stosowania. Radek natomiast był bardzo zadowolony z tego wykładu, także można uznać go za dobry wybór.
Tak zakończyła się nasza konferencja, po której szybko zabraliśmy nasze walizki z hotelu i ruszyliśmy w podróż powrotną. Było dużo „weselej” niż w pierwszą stronę. Ledwie zdążyliśmy na pociąg, jak się okazało z 3 przesiadkami (jedna na szczęście okazała się być niepotrzebna). Na dworcu początkowo nie mogliśmy znaleźć kasowników i całą drogę staliśmy w zatłoczonym pociągu. Szczęśliwie udało nam się zdążyć na samolot.  Na lotnisku w Katowicach Pyrzowicach wylądowaliśmy około 22:30. Tak też zakończył się nas pobyt w Holandii na konferencji „Dutch PHP Conference 2014”.
Podsumowując, konferencję uważam za bardzo udaną. Nie mam co prawda porównania bo był to mój pierwszy event tego typu, ale już teraz chciałbym udać się na kolejny.

Najwięcej na konferencji było tematów powiązanych Zend’em i Redis’em. Ogólnie duży nacisk został położony na refaktoryzacje wzorce projektowe, była też mowa o różnych aspektach testowania aplikacji.

Bardzo fajni lektorzy, ciekawe tematy, dobra lokalizacja i stabilne Wifi w moim odczuciu były największymi zaletami tej konferencji. Tego, czego mi natomiast brakowało, to zbyt mało nowych i inspirujących konceptów oraz trendów. Uważam, że tego typu konferencja powinna nie tylko obfitować w takie rzeczy, ale również inspirować do nowych działań.

Jakbym miał ocenić konferencję w skali od 1 do 10, to dałbym 7,5. Bardzo chciałbym również przyszłym roku udać się do Amsterdamum, by zobaczyć i dowiedzieć się znacznie więcej.

Marcin Wyrozumski

Dodaj komentarz