Konferencja Falsy Values to nowy pomysł Damiana “Ferrante” Wielgosika i Pawła Czerskiego na rozruszanie polskiej sceny programistów stron internetowych - zarówno od strony frontendu, jak i bardziej serwerowych zagadnień. Dzięki uprzejmości pierwszego z organizatorów miałem okazję pojawić się w piątek 20 maja w kinie Femina i posłuchać jednych z najbardziej reprezentatywnych osób w branży. Czas zatem na relację i kilka słów od siebie na temat tego, co udało mi się zobaczyć i przeżyć. Zapraszam do lektury.

Konferencja Falsy Values:before {

Na początku chciałbym zaznaczyć, że konferencja trwała od środy do piątku, z czego środa i czwartek były przeznaczone na workshopy z udziałem niektórych prowadzących prelekcje, a piątek był dniem konferencyjnym. W czwartek wieczorem odbyła się także impreza konferencyjna sponsorowana przez firmę Pusher. Ze względu na to, że moje możliwości czasowe byłem tylko w piątek na samej konferencji - reszty nie opiszę, ponieważ zwyczajnie nie byłem / nie widziałem. ;]

Będąc w pewnego rodzaju “nastroju konferencyjnym” po niedawnej konferencji 4Developers, o wiele bardziej krytycznie podchodziłem do wszelkich kwestii związanych z organizacją i potencjalnymi problemami uczestników. W tym miejscu należy się wielki szacunek organizatorom za to, że potrafili praktycznie sami ogarnąć wszystko, co potrzebne było dla sprawnego przebiegu konferencji. Z osób pomagających mogę wymienić jedynie dwie dziewczyny w roli hostess:

Fotografia: ferrante_, CC-BY-NC.

operatora kamery, operatora światła kierowanego na prelegentów i kilku kelnerów obsługujących catering. Reszta, jeśli w ogóle była, wyglądała na całkowicie przeźroczystą warstwę abstrakcji [oczywiście w pozytywnym tego słowa znaczeniu]. ;]

Ze względu na to, że FalsyValues odbywała się o wiele bliżej niż 4Developers, pobudka też była nieco luźniejsza - o 7 rano z minutami podniosłem się z łóżka, “wrzuciłem coś na ząb”, ubrałem się i około 7:30 wsiadłem w metro. Następnie wysiadłem na przystanku Metro Ratusz i spokojnym spacerem ruszyłem Aleją Solidarności do kina Femina.

Wszedłem do budynku i okazałem uprzednio wydrukowany bilet wstępu:

na podstawie którego dostałem następujące bonusy:

  • przypinkę z logo Firefoksa,
  • opaskę na rękę od Mozilli z napisem “I support the Open Web”,
  • naklejkę z Logo Falsy Values,
  • notes DevMeetings.pl
  • była też jeszcze jedna naklejka, ale albo gdzieś ją zgubiłem, albo mi ktoś ją podprowadził. ;]

Oczywiście otrzymałem też identyfikator uczestnika wraz ze smyczą od Mozilli:

Tutaj czekało mnie małe zdziwienie, ponieważ dałbym sobie rękę uciąć, że wszystko miało się zacząć o godzinie 8, jednak zostałem szybko przywołany do porządku informacją o tym, że o 8 rozpoczyna się rejestracja, a dopiero o 9 jest przewidziany pierwszy wykład. Na szczęście tutaj czekała na mnie pierwsza przyjemna niespodzianka: próbując ogarnąć i poukładać sobie wszystkie bonusy rejestracyjne poznałem Michała “ChemikPIL” Maćkowiaka i Zbyszka Tenerowicza.

Słowo “poznałem” jest być może lekko nieodpowiednie, ponieważ to, kim jest każdy z nas wynikło z rozmowy. W pewnym momencie spojrzałem na identyfikator Zbyszka i chwilę się nad nim “zawiesiłem” - po chwili lampka się zapaliła - “to Ty jesteś ten Zbyszek T z komentarzy na ferrante.pl?” - “tak, to ja” - “o, to miło poznać”.

Rozmawiając z Michałem z pewnym momencie temat zszedł na temat prowadzonych przez nas serwisów. Tutaj po raz kolejny moja pamięć okazała się zawodna, bo Michał powiedział: “no przecież byłeś na moim blogu, nawet coś tam komentowałeś”. Zmarszczyłem brwi w geście zdziwienia, na co on odparł “chemikpil.pl” - wtedy wszystko okazało się już jasne. Najwyraźniej moja pamięć do domen działa lepiej. ;]

} Console.log(‘Przebieg konferencji’);

Pierwszym wykładem było “Styling for success” Douglasa Crockforda. Mówił on o wielu aspektach pisania poprawnego i łatwego w utrzymaniu kodu. Jego wykład zawierał bardzo ciekawe odniesienia do psychologii człowieka, według której jego ośrodek decyzyjny składa się z dwóch części - mózgu / głowy [head] i brzucha [gut]. To “brzuch” zawiera w sobie postawę człowieka w określonych sytuacjach, a głowa stara się tylko przeprowadzić racjonalne rozumowanie prowadzące do ustalonego wcześniej wyniku. Na podstawie tego opowiadał potem o różnych sposobach pisania kodu i o tym, że powinniśmy wystrzegać się “religijnych przekonań” odnoszących się do tworzenia oprogramowania, bo jest to zamykanie się na argumenty płynące z zewnątrz. Pokazując sporo przykładów z życia wziętych mówił o spójności, przewidywalności i jasności kodu. Było też kilka zdań nt. JSLint - narzędzia stworzonego przez Crockforda dla programistów JavaScript po to, aby wskazać im błędy w kodzie. Wraz z Michałem udało nam się zrobić sobie zdjęcie z “samym Dougiem”, dzięki czemu w ciągu najbliższych dwóch tygodni mam +10 do “respektu” wśród znajomych. ;]

Następnym prelegentem był Dmitry Soshnikov, który przestawił propozycje zmian w JavaScripcie, które prawdopodobnie pojawią się w nowym standardzie ECMAScript 6 [ES6]. Przyznam, że wywołał mocną dyskusję swoją prezentacją, ponieważ o ile część nowości faktycznie usprawnia życie programisty i pozwala na pisanie lepszego /szybszego kodu, o tyle część jedynie go zaciemnia, albo wprowadza dwuznaczności. Z interesujących nowości na pewno można wymienić:

  • block scope - wprowadzenie zasięgu blokowego zamiast tylko funkcyjnego wraz ze słowem kluczowym let,
  • wartości stałe oznaczane przez słowo kluczowe const,
  • domyślne wartości parametrów przekazywanych do funkcji,
  • “non strict pattern matching” / “destructuring of arrays, objects and parameters”, czyli luźne traktowanie zwracanych kolekcji danych i możliwość automatycznego mapowania ich na dowolne inne struktury,
  • proxy-objects, czyli możliwość podłączania naszych własnych handlerów do obsługi zdarzeń innych obiektów,
  • moduły i możliwość ich ładowania poprzez słowo kluczowe “import”,
  • generatory - słowo kluczowe “yield” pozwalające na generowanie n-tego elementu kolekcji na żądanie,
  • metody asynchroniczne.
Jednakże były też funkcjonalności mało interesujące, a wręcz zbędne:
  • “operator trójkropka” […] i tzw. “…rest” dla funkcji o zmiennej liczbie parametrów,
  • to samo dla “…spread”, czyli rozwijanie listy parametrów i dopasowywanie do wywołania,
  • krótka notacja przy deklarowaniu funkcji - zamiast słowa kluczowego function będzie można stosować operator “strzałki” ->, po której nastąpi dalszy kod,
  • operator “=>” przydatny przy przenoszeniu kontekstu do wewnętrznego funkcji.
Najlepiej będzie, jeśli zapoznacie się z prezentacją Dmitriya, dostępną na SlideShare. W każdym razie ES6 wygląda bardzo obiecująco, o ile faktycznie twórcy zrezygnują z lukru składniowego na rzecz bardziej przydatnych rzeczy.

Interesującą prelekcją była prezentacja biblioteki Fabric.js, pozwalającej na bardzo ambitne operacje na dostępnym w HTLM5 elemencie . Juriy “kangax” Zaytsev pokazał jak implementuje się poszczególne rzeczy na “czystym” API udostępnianym przez przeglądarki i w jaki sposób Fabric ułatwia nam programowanie zapewniając wygodną w użyciu abstrakcję. Przedstawione zostało także “live demo” na którym na żywo mogliśmy obracać i zmieniać położenie czerwonego kwadratu. W ramach prezentacji wydajności biblioteki zostało pokazane wideo, na którym bez problemu obracało się pełnoekranowo kilkanaście sprite’ów biedronek.

Kolejny wykład prowadzony był przez Toma Hughes-Crouchera [@sh1mmer]. Traktował on o Node.js, jego zastosowaniach, wydajności i potencjalnym wykorzystaniu w produkcji stron i aplikacji internetowych. Zostały wprowadzone i wyjaśnione pojęcia pętli zdarzeń [event loop] i architektury nieblokującej [non-blocking architecture]. Żeby utwierdzić nas w przekonaniu o tym, że jest to bardzo dobre narzędzie, pokazał na żywo działający czat napisany z wykorzystaniem Node’a, po czym powiedział, żebyśmy się podłączyli i zaczęli coś na nim pisać. Ci, którzy wzięli ze sobą laptopy, albo mieli smartphone’y udowodnili, że wszystko działa jak należy.

Polacy byli w zdecydowanej mniejszości, jeśli chodzi o prelegentów, dlatego z przyjemnością powitaliśmy na scenie Zbigniewa Branieckiego z Mozilli. Miał on przedstawić prezentację na temat wielojęzyczności w JavaScripcie, ale już na samym początku zapytał, czy wolimy słuchać “nudnej prezentacji o internacjonalizacji”, czy wolelibyśmy jednak poznać tematykę kompilacji JavaScriptu. Nie muszę mówić, że widownia wybrała oczywiście temat drugi. ;] Zbyszek podjął temat różnych silników JavaScriptu i metod, z użyciem których potrafią one przyśpieszać działanie poszczególnych fragmentów kodu. Wyjaśnił czym są, jakie są z nimi problemy oraz czym się od siebie różnią dwa podejścia optymalizacji - method JIT i tracing JIT. Skupiając się bardziej na tej drugiej metodzie [tracing JIT] udzielił nam kilku porad pozwalających na wykorzystanie mechanizmów przeglądarki do pisania szybszego kodu. Wykład Zbyszka był jedynym, podczas którego były rozdawane dodatkowe gadżety - w tym wypadku rzucał on koszulkami po sali, jednak nie żadna z nich nie leciała po trajektorii chociażby zbliżonej do miejsca, w którym siedziałem, także musiałem obejść się smakiem. Na szczęście udało mi się zdobyć torbę Mozilli - przyda się do noszenia jakichś małych rzeczy: ;] Przy okazji - prezentacja na SlideShare.

Przyznaję z bólem serca, że opuściłem prezentację Briana LeRouxa o narzędziu PhoneGap, aczkolwiek miałem okazję wtedy porozmawiać o tej tematyce z kolejnymi ciekawymi osobami. W ciągu godziny poznałem i przeprowadziłem ciekawe rozmowy z Kamilem Trebunią i Rafałem Kukawskim. Był tam także Damian Wielgosik, któremu miałem wtedy okazję podziękować za wejściówkę na konferencję.

Pod koniec pojawił się Tantek Çelik, który jako ostatni prezentował swój wykład na konferencji. Był on poświęcony jego autorskiemu narzędziu - CASSIS, który to skrót oznacza “Client And Server Scripting Implementation Subset”. Czym jest CASSIS? Jest to zbiór funkcjonalności, jakie można zaimplementować w ten sam sposób po stronie zarówno klienta, jak i serwera. Główną motywacją do powstania tej biblioteki było zmęczenie faktem, że musimy pisać kilka razy to samo w każdym języku programowania po “różnych stronach barykady”. Tantek zauważył, że różne języki w różny sposób implementują porównywanie tzw. “falsy values” i odkrył, że można tym sterować w taki sposób, żeby na podstawie zbioru testów logicznych decydować, w kontekście jakiego interpretera się aktualnie znajdujemy. Przyznam, że jest to jeden z najbardziej inteligentnych i ciekawych pomysłów, jakie widziałem do tej pory, ponieważ po prostu zrobił “coś z niczego”. Polecam także lekturę wpisu Radka Benkel o tym projekcie. Po prelekcji rozmawialiśmy z nim jeszcze przez dłuższą chwilę sugerując ewentualne rozszerzenia do biblioteki. Padł m. in. pomysł wprowadzenia elementów OOP, gdzie zasugerowałem użycie funkcji create_function() i obecnych od wersji PHP 5.3 funkcji anonimowych, co zostało uznane za ciekawy pomysł, także być może będę miał swój wkład w rozwój projektu. ;] Udało mi się też zrobić zdjęcie z Tantekiem, także kolejne +10 do szacunku zasila moje konto. ;]

Konferencja Falsy Values:after {

Po konferencji ludzie dosyć szybko opuścili lokal, po chwili zostało tylko kilkanaście osób, które jeszcze żywo dyskutowały na “tematy różne”. Padło hasło spotkania w jakimś pobliskim barze, ale nie wiem, jak to się udało, ponieważ niedługo po zakończeniu rozmowy z innymi uczestnikami sam udałem się w spokoju do mieszkania.

Rzutem na taśmę udało mi się zdobyć dwie koszulki - jedną z logo Firefoksa, drugą konferencyjną:

} Podsumowanie.

Konferencja była bardzo udana, co mnie zaskoczyło nie było żadnych problemów z projektorem ani sprzętem - wszystko zostało dograne tak, że naprawdę można było przyjemnie usiąść w fotelu i chłonąć wiedzę z wielkiego kinowego ekranu. Już samo miejsce powodowało, że człowiek miał odpowiedni nastrój. Poza tym, podczas 4Developers, gdzie były 4 równoległe ścieżki trzeba było cały czas przechodzić między salami i decydować, który z wykładów w danej chwili jest najbardziej optymalny. Na Falsy Values była jedna ścieżka, dlatego można było posłuchać wszystkich prowadzących, a także można było spokojnie usiąść w jednym miejscu na sali i spędzić tam cały dzień. Na 4Developers czułem się trochę jak w liceum, gdzie zajęcia potrafiły odbywać się kolejno w kilku najbardziej od siebie oddalonych miejscach szkoły. Tutaj tego problemu nie było.

Żeby nie było tak różowo, trzeba coś wytknąć i się przyczepić. Najgorsze jest to, że nie ma za bardzo do czego. ;] Jest jedna rzecz, która mnie trochę poruszyła - kwestia światła padającego na prowadzących wykłady. Rozmawiając z Damianem dowiedziałem się, że jest to celowy zabieg wykorzystujący atmosferę miejsca. Na dwóch początkowych wykładach siedziałem na samym początku i muszę powiedzieć, że kontrast, jaki tworzyło ono z ogólnymi ciemnościami na sali prawie mnie uśpił. Gdyby nie darmowy RedBull po wykładzie Dmitriya Soshnikova, to pewnie bym usnął na dobre. Potem jednak usiadłem wyżej - co okazało się strzałem w dziesiątkę - z mniej więcej ósmego rzędu idealnie obserwowało się całą prezentację.

Zapewne i tak nie wspomniałem o bardzo dużej liczbie rzeczy związanych z konferencją, pomimo tak długiego wpisu. Cóż, w każdym razie sami widzicie, że warto było pójść i przeżyć to wszystko, poczuć na własnej skórze. Kontakt z takimi ludźmi może wyjść tylko na lepsze. ;] Z tego miejsca pozdrawiam też Radka Benkel i kilka innych osób, które poznałem, z którymi miałem okazję porozmawiać, ale moja pamięć nie pozwala mi na przywołanie imienia, nazwiska, ani nawet pseudonimu. Zgłoście się w komentarzach, proszę. ;]

Polecam także lekturę innych relacji z konferencji, a w szczególności:

Jeśli brakuje w tym zestawieniu Twojego wpisu - napisz, chętnie dodam go do listy.

Będę wdzięczny za wszelkie opinie na temat konferencji a także poszczególnych wykładów wyrażone w komentarzach do niniejszego wpisu. Do zobaczenia na kolejnej edycji!