poniedziałek, 28 października 2013

PHPCon 2013

PHPCon 2013 był moją pierwszą konferencją, więc miałem pewne wyidealizowane wyobrażenia co do przebiegu całej przygody. W skrócie: chciałem dowiedzieć się czegoś nowego, zostać zmiażdżonym wiedzą prelegentów.

Do Szczyrku pojechałem z czwórką kolegów z pracy. I to był naprawdę dobry wybór, choćby dlatego, że się znamy. Aha, te oszołomy, jak jeden mąż, napisali że są z Wrocławia, chociaż żaden z nich się tam nie urodził, a mieszkają w tym mieście od ledwie paru lat. Jako jedyny nie wstydziłem się, że pochodzę z głębokiej prowincji i miałem na plakietce napisane "Łańcut". Na szczęście nikt tego nie zauważył. Chyba.

Organizacyjnie było całkiem nieźle, chociaż irytowało nieterminowe rozpoczynanie wykładów. Szczytem był wykład w soboty, gdzie czekaliśmy dobry kwadrans, przy ogólnym chaosie i hałasie. Jedzenie było dobre, łóżka wygodne, a woda w łazience mokra. Mieliśmy karty magnetyczne do pokojów, co kojarzyło mi się z Jamesem Bondem. Być może dlatego, że w tym filmie -- oglądanym w telewizorze marki Rubin, czy innym sowieckim barachle -- po raz pierwszy zobaczyłem takie cudo.

Poniżej opinie o wykładach, nie siliłem się na obiektywność. A że lubię narzekać, to narzekałem. Posłuchajcie.

 

Praktyczne Code Reviews - Sebastian Marek


Niestety, był to pierwszy wykład na którym byliśmy, ominął nas -- zdaje się legendarny -- wykład o Drupalu.

Temat był niezwykle ciekawy, Sebastian mówił jasno i klarownie (miałem nadzieję, że pozostałe wykłady będą prowadzone jeśli nie lepiej, to co najmniej tak dobrze). Całość była dość ogólnikowa, naprawdę brakowało konkretnych przykładów code review, może nawet jakiegoś rzeczywistego CR. Sebastian nie powiedział na co zwracać uwagę, a co można olać. Odwołanie się do zdrowego rozsądku jest w sumie oczywiste, ale to trochę mało. Czułem niedosyt.

Jednak myślę, że dla osób, które dopiero wprowadzają proces code review lub chcą wprowadzić, ten wykład dał dużo.

W przypadku tego wystąpienia zabrakło czasu na pytania z sali. A mogło być ciekawie, szkoda.

Dependency Injection w PHP - Kacper Gunia


Wykład był skierowany do osób, które nie zetknęły się z DI. Przyzwoite teoretyczne wprowadzenie z punktu widzenia wzorców projektowych dało dobry grunt dla dalszej części. Następne pokazanie tych idei na dość prostym przykładzie (ale błędy w kodzie... eee) też było porządne. Niestety końcówka wykładu była omówieniem realizacji DI w Symfony. Dla osób, które z niego nie korzystają, to na pewno było raczej ciężkie, dla osób używających Symfony -- banały.

Szkoda, że ta ostatnia część nie poruszyła tematu compiler passów, w ogóle tematu budowania kontenera, który jest mocnym atutem symfonowego rozwiązania. Albo zamiast wchodzenia w szczegóły tej jednej implementacji można było pokazać praktyczną realizację także w innych bibliotekach do DI.

 

Komunikacja czasu rzeczywistego w PHP - czyli co z tymi WebSocketami - Przemysław Pawliczuk


Temat naprawdę gorący w świecie webowy (chociaż biorąc pod uwagę, że idea socketu ma 40 lat, to sprawa ma temperaturę górskiego kamienia). Niestety wykład był słaby i chaotyczny. Przemek próbował uzyskać kontakt z publicznością, ale wg mnie raz, że było za duże audytorium, dwa że mało osób się zetknęło z websocketami, mocno te próby utrudniło.

Trudno było złapać myśl przewodnią. Bardzo szkoda, bo wiele wskazywało na to, że miał praktyczną wiedzę -- jakoś nie potrafił tego przekazać. Wydaje się, że w jednej prezentacji prelegent upchnął za dużo materiału, pojawił się jakiś prosty przykład [kod], ale zupełnie bez kontekstu i dalszego rozwinięcia.

Aha, web działa głównie na TCP, który to protokół nie jest czasu rzeczywistego. Więc cokolwiek z niego korzysta, też nie będzie czasu rzeczywistego. Rozumiem jednak, że tutaj "czas rzeczywisty" był synonimem dla "całkiem szybko".

 

Moving Away from Legacy code with BDD - Konstantin Kudryashov


Bardzo przystępnie przedstawione pewne pomysły, jak sobie poradzić z kodem "po prostu działającym", szczególnie fajnie przedstawiona, dla mnie nowa, idea impact mappingu. Jednak to temat raczej dla managerów, zarządu, a więc tych którzy decydują na co wydawać pieniądze firmy.

Jeden minus tej prezentacji: Konstantin na 3 slajdzie pt. "O czym nie będzie" wymienił Behata i PHPSpec, po czym jednak trochę o nich powiedział. Ponieważ jest ich twórcą można ten psikus zrozumieć.


Aplikacje internetowe w chmurze obliczeniowej - Piotr Bubacz


Wykład był prowadzony bardzo wesoło, ale jednocześnie dość konkretnie, prowadzący miał dobry kontakt z publicznością. Była to interaktywna reklama chmury obliczeniowej Microsoftu, Azure cośtam. Uczciwie trzeba przyznać, że wygląda to całkiem ciekawie, ale podejrzewam, że firmy potrzebujące tego rodzaju rozwiązań już słyszały o Azure. Dla mnie takie sobie.

Najciekawsze: okazało się przy okazji, że Microsoft już nie produkuje programów. Pewnie wynika to z tego, że inżynierów podkupuje im Google, AFAIR trafiło nawet architekta kernela Windowsa. A trochę szkoda, bo Microsoft ma naprawdę porządny dział badawczy, gdzie np. opracowują narzędzia do weryfikacji formalnej kodu (oczywiście nie PHP).

 

Problemy wielozadaniowości w PHP i próby ich rozwiązania - Marek Wałach, Marcin Ceran


Rozumiem to tak: wykład był ogólnie o tym, jak kilku inżynierów zrównolegliło pewne procesy obliczeniowe, polegające na skomplikowanej, konfigurowalnej analizie dużej ilości danych. Użyli do tego demonów pisanych w PHP, co samo w sobie było dość zaskakujące.

Niestety, wykład niespecjalnie odkrywał szczegóły techniczne, prelegenci nie zawsze potrafili wyrazić się jasno i precyzyjnie. Osoby pytające chciały się tego dowiedzieć, jednak tutaj też były problemy, tak że na część pytań odpowiedział współpracownik Marka i Marcina, który lepiej znał technikalia.

Wykład wypadł słabo, a temat był naprawdę, naprawdę ciekawy. Wydaje mi się, że spora część aplikacji wymaga systemów raportowania, więc byłoby fajnie uzyskać przynajmniej jakąś podpowiedź w jakich warunkach to zrównoleglenie się "urodziło"? Jakie były inne próby przyspieszenia i dlaczego zawiodły? Jakie były problemy z PHP-em? Byłem rozczarowany, myślałem, że to samograj -- tylko opowiedzieć o swoich doświadczeniach.

Z ciekawostek: ktoś zapytał o procent pokrycia kodu testami. Padła odpowiedź 5-10%. Kolega Krzyś podsumował to krótko: czyli nie ma testów.

 

Dane przestrzenne, czyli jak nauczyć PHP geografii - Michał Mackiewicz


Lubię narzekać, więc ten wykład powinienem pominąć. Było jak trzeba, a żeby być fair, trzeba napisać, że było bardzo dobrze. Widać, że Michał zna sprawę z praktyki, wykład był rzeczowy, poprowadzony wartko, naprawdę miło się słuchało. Zostały pokazane chyba najważniejsze rozwiązania i problemy związane z GIS. Do tego jasne odpowiedzi na ciekawe pytania z sali.

Jedyne do czego muszę się przyczepić, to używanie słowa "poligon" jako tłumaczenia dla angielskiego "polygon". Na poligonach granaty urywają ręce młodym chłopcom płci obojga, a "polygon" to po prostu swojski "wielokąt".

 

Testy automatyczne - fakty i mity - Wojciech Sznapka


Merytorycznie było ok, chociaż szanowny imiennik nieco za szybko ten wykład prowadził. Zabrakło mi tam nieco szczegółów o testach funkcjonalnych i integracyjnych, tzn. jaką warstwę aplikacji testy funkcjonalne mają testować.

Szkoda trochę, że nie było dokładniejszej dyskusji mitów, czy nawet zabawy ze strony prelegenta w adwokata diabła. Sam uważam, że klient płaci za testy [to był pierwszy mit, o ile się nie mylę].

Ciekawa była dyskusja po wykładzie [dzięki błyskawicznemu tempu zostało sporo czasu], szczególnie o zapewnianiu świeżego środowiska do testów. Co jak się okazało dla wielu z nas jest bolączką i padło kilka pomysłów: przygotowanie "dumpów" przed testami, użycie bazy plikowej SQLlite, baza na RAM-dysku.

 

Allowed memory size of X bytes exhausted - Piotr Pasich


Z jednej strony było to ciekawe wystąpienie, rzeczowe, naprawdę porządne. Wydaje się, że jedno z najbardziej zaawansowanych na tej konferencji. Ciekawe było pokazanie bardzo niskiego poziomu -- jak zapamiętywane są wartości w interpreterze. Fajne było pokazanie, że Xdebug potrafi dużo więcej niż nam się wydaje (sam kiedyś z tego skorzystałem, co pozwoliło mi zwalić winę na innych -- to tak na zachętę).

Był tam jednak jeden fragment, który -- mówiąc eufemistycznie -- mocno mnie zdziwił. Zobaczyliśmy rysunek mapowania pamięci logicznej (virtual memory) na fizyczną (physical memory), z komentarzem, że sterta (heap) jest pofragmentowana. Ale to nie jest ze sobą w ŻADEN sposób powiązane. Aplikacja, nieważne w jakim języku napisana, nie ma pojęcia o pamięci fizycznej. Mapowanie na adresy fizyczne to problem na poziomie systemu operacyjnego, który tak naprawdę ostatecznie rozwiązuje mikroprocesor. Fragmentacja pamięci, a dokładniej "fragmentacja wewnętrzna" to problem o którym mówił Piotr.

Ten błąd rzeczowy trochę razi, ale summa sumarum nie rzutował na całość prezentacji. A może to był po prostu zły rysunek?

Poza tym, gdy była mowa o stosie -- tj. interakcji C z PHP -- też miałem wrażenie, że coś tam nie pasuje. Szczególnie, że trochę w C i asemblerze programowałem, wiem mniej-więcej jak działają interpretery, więc stwierdzenie, że zmienne PHP "żyją" na stosie C mocno mi nie pasowało. Ale nie znam implementacji PHP, więc może niepotrzebnie się tej kwestii czepiam.


Schibsted Tech Polska – Do IT in the Scandinavian Way - Aleksandra Guzik


"Przepraszam, czy ma ktoś laptopa z Windowsem? Serio pytam". Ktoś miał.

 

Sprytne środowiska developerskie - Wojciech Sznapka


W porównaniu do sobotniego wykładu Wojtek zwolnił -- tempo wykładu było w sam raz. Pokazał praktyki wypracowane w swojej firmie, zareklamował kilka narzędzi, które im ułatwiają życie. Okazało się, że w mojej firmie mamy całkiem podobny styl pracy, więc w sumie jedna najważniejsza myśl, która utkwiła mi z wykładu: narzędzia i techniki które pomagają zespołowi nie są za darmo, wymagają tak jak wszystko inne czasu, wysiłku i zasobów, ale bez tego będzie jeszcze gorzej.

Ocena: "celująco, siadaj trzy".

BigData w PHP - Mariusz Gil


Motyla noga, podobał mi się ten wykład! Naprawdę spełnił mój warunek wstępny -- dowiedziałem się czegoś nowego i trochę podjrałem tematem, nie ukrywam. Wykład był prowadzony porządnie, Mariusz miał wiedzę praktyczną, przeszedł bardzo płynnie od ogółu do szczegółu, a nawet do działającego kodu. Powiedział trochę o algorytmie MapReduce, trochę Hadoopie i popularnym MongoDB. Jedyny wykład do którego nie potrafię się przyczepić. Przepraszam.

 

Wprowadzenie do OAuth2 - Michał Pipa


Wykład pokazał wszystko, dużym plusem było to, że Michał w "opisach przyrody" jasno wyraził cele istnienia OAuth2 i jego ograniczenia. Trochę w didaskaliach przemycił informacje, że do tego całego OAuth2 są biblioteki dla PHP.

Jednak bezsensowne było pokazywanie treści konkretnych nagłówków POST i GET. Ja wiem, że to wszystko można ładnie nie tylko curlem, ale i emacsem przez sendmaila, ale mieliśmy przykład przerostu szczegółu nad treścią. W ogóle przykład użycia był mało czytelny.

Jednak ogólnie było w porządku, wiem już o co chodzi.

Inne

 

Zapamiętałem dwie rzeczy:
  • Kilkanaście/-dziesiąt osób skandujących "mergujemy". Niestety nikt nie podchwycił okrzyków kolegi Pawełka "pusz z forsem do mastera".
  • Anonimowego Tomka, którego przyjaciele próbowali wprowadzić po schodach. Tomek miał pewne problemy ze świadomością wywołane płynami pozaustrojowymi.
A właśnie -- nie pijcie na wykładach, bo to naprawdę wsiowe. Mówię ja, chłopak ze wsi.