Wczoraj zakończyła się Javascriptowa konferencja pod nazwą Falsy Values. Wszystko zaczęło się w środę od dwudniowych warsztatów, ja osobiście wybrałem Game Development, chociaż kuszącą opcją był jeszcze Node.js. Co prawda miałem dodać dwa oddzielne wpisy - jeden o warsztatach, drugi o konferencji, ale w międzyczasie odbyła się jeszcze impreza sponsorowana Pusher Party, a więc nie było czasu na odpoczynek.

Falsy Values

Dzień 1 - Game Development - Tetris

Dwudniowy warsztat z Game Developmentu poprowadzili: Kornel "porneL" Lesiński i Peter "kuvos" van der Zee. Pierwszego dnia porneL zajął się Tetrisem na Canvasie, kuvos natomiast drugiego miał przedstawić Mario, także z użyciem Canvas. Zaczęło się od teoretycznego wstępu na temat tworzenia gier w Javascripcie, by po pierwszej przerwie na kawę i Red Bulla zabrać się już za prawdziwe kodowanie. Kornel poprowadził nas krok po kroku od samego początku, tłumacząc kolejne kroki kodu, który pisał. Co jakiś czas dostawaliśmy proste zadanie do zrealizowania, by później kontynuować tworzenie gry. Koncepcja bardzo dobra, podejście Kornela także konkretne, dzięki czemu pisanie Tetrisa było czystą przyjemnością (nawet, jeśli moja wiedza na temat Canvas nie była zbyt duża). Mniej więcej w połowie dnia dostaliśmy także paczkę ze źródłami ostatecznej wersji gry, dzięki czemu można było podejrzeć sobie rozwiązanie danego problemu, jeśli ktoś się zaciął. Można było także pytać prowadzących, prosić ich o pomoc lub wytłumaczenie danej kwestii - byli bardzo pomocni. Kornel pokazał też ciekawą sztuczkę z obejściem problemu przecinków po metodach - wiadomo, że w starszych przeglądarkach po ostatniej metodzie nie może być przecinka, bo inaczej skrypt się nie wykona. Wystarczy dopisać na końcu 0:0}; zamiast };, dzięki czemu postawienie przecinka za teoretycznie ostatnią metodą nie popsuje kodu, ponieważ mamy jeszcze 0:0 bez przecinka na końcu. Warto także zerknąć na ściągawkę z Canvas. Moja wersja Tetrisa znajduje się pod tym adresem - nie jest skończona, działa częściowo, ale jest zbudowana na tym, co pisaliśmy od zera podczas warsztatów.

Ściągnij paczkę ze źródłami finalnej wersji: DOWNLOAD Tetris.

Dzień 2 - Game Development - Mario

Drugiego dnia Peter poprowadził nas podobnie jak Kornel dnia poprzedniego - krok po kroku przez kolejne etapy tworzenia klona gry Mario. Peter pisał kod tłumacząc go w czasie rzeczywistym, a czasami rzucał nam jakieś zadanie do samodzielnego wykonania. Ciekawym motywem, z którym kiedyś miałem problem, było obejście buforowania klawiszy po wciśnięciu, kiedy nasz ludzik dopiero po chwili zaczyna się przesuwać - rozwiązanie jest w kodzie. Ponownie, stworzona przeze mnie wersja Mario jest dosyć uboga, obrazuje ona etapy powstawania kodu w czasie warsztatów.
Na koniec zobaczyliśmy połączenie Tetrisa i Mario - kod, dzięki któremu ludzik Mario skacze po spadających klockach Tetrisa. Kornel i Peter napisali to w 15 minut - dzięki temu widać jak łatwo można modyfikować i rozszerzać kod, jeśli jest dobrze napisany. Kolejną wariacją było "falowanie" tła w dość interesujący sposób, dzięki czemu mieliśmy "pijanego" Mario.

Ściągnij paczkę ze źródłami: DOWNLOAD Mario.

Pusher Party

Po drugim dniu warsztatów udaliśmy się do lokalu Rabarbar na imprezę sponsorowaną przez firmę Pusher. Pojawiło się tam całkiem sporo osób, do tego mieliśmy darmowe piwo i przekąski, więc można się było spokojnie skupić na rozmowach. Co prawda mimo późnej pory było bardzo gorąco, szczególnie w środku lokalu, ale w końcu wyszło na to, że większość osób przeniosła się do ogródka lub stało na pobliskim chodniku z piwem w ręku. Bawiłem się dobrze, poznałem sporo osób, które ledwo kojarzyłem z widzenia. Szkoda tylko, że następnego dnia od rana zaczynała się konferencja, przez co nie można było za bardzo poszaleć.

Dzień 3 - Relacja z konferencji

Konferencja odbyła się w kinie Femina - dosyć oryginalny pomysł, ale sprawdził się całkiem nieźle. Co prawda były małe problemy ze znalezieniem miejsca na spokojne zjedzenie obiadu, ale poza tym kino dało radę. Trochę brakowało książeczek z planem konferencji (i dokładniejszymi opisami), przez co trzeba było kursować w stronę plakatów z rozpiską. Nie było także dostępu do internetu, ale organizatorzy ładnie wytłumaczyli się z tego twierdząc, że jest to celowy zabieg, by skupić się na prezentacjach. Poza tymi drobnymi niedogodnościami całość organizacji stała na bardzo wysokim poziomie, za co należą się gratulacje organizatorom (Damian Wielgosik i Paweł Czerski). Mam nadzieję, że Falsy Values, w przeciwieństwie do także udanego Front Trends, będzie imprezą cykliczną. Ok, przejdźmy do poszczególnych prezentacji.

Douglas Crockford - Styling for Success

Doug przedstawił ciekawą koncepcję organizowania i odpowiedniego formatowania kodu, dzięki któremu programista przeglądający Twój kod nie będzie musiał łapać się za głowę i zastanawiać "co autor miał na myśli". Wstępem do dyskusji był przykład z koncernami tytoniowymi i walka między uczuciami a rozumem.

Dmitry Soshnikov - ECMAScript 6

Dmitry opowiedział o wielu interesujących, dopiero proponowanych elementach w kolejnej wersji ECMAScript. Bardzo ciekawym słowem kluczowym było let, używane w większości przykładów. Można było także zobaczyć dekompozycję struktur, czy szkolny przykład zamiany dwóch wartości bez użycia trzeciej w formie [x,y] = [y,x].

Juriy Zaytsev - Fabric.js

Kangax pokazał swoje wspaniałe narzędzie - Fabric pozwala programiście podejść do Canvas obiektowo, zamiast bawić się w niskopoziomowe, mało intuicyjne domyślne metody. Demo zobaczyć można tutaj. Warto także wspomnieć, iż jest to interesująca propozycja dla twórców gier - sam na pewno będę chciał zapoznać się z tą biblioteką i spróbuję stworzyć jakąś prostą, przykładową grę na jej podstawie.

Tom Hughes-Croucher - Node.js

Tom w bardzo ciekawy sposób pokazał jak łatwo można zacząć pracę (i zabawę) z Javascriptem po stronie serwera. Zainteresowanie Node.js jest bardzo duże i zapewne w ciągu najbliższych kilku lat dojdziemy do etapu, kiedy wszystkie serwery oprócz PHP będą miały także Javascript dostępny domyślnie.

Zbigniew Braniecki - Javascript compilation

Co prawda Gandalf miał opowiadać o internacjonalizacji i językach w Javascript, ale powiedział o czymś, co jest właściwie pomijane przez wszystkich i ciężko znaleźć jakiekolwiek informacje na ten temat. Przedstawił koncepcję optymalizacji kodu z punktu widzenia autorów przeglądarek (sam pracuje w Mozilli), opowiedział o testach wydajnościowych. Porównaliśmy dwa podejścia do JIT (Just-In-Time compilation): method i tracing, sposoby na ułatwienie kompilatorowi pracy. Dowiedzieliśmy się także o tym, że jeżli uda się zastosować koncepcję tracing, to zysk wydajnościowy będzie liczony w setkach tysięcy procent w stosunku do aktualnie używanej method. Zainteresowanie było duże, a dyskusje po prezentacji trwały długo. Samą prezentację zobaczyć można pod tym adresem.

Brian LeRoux - PhoneGap

Brian przedstawił narzędzie, które wyewoluowało z PhoneGapa - Cordova. W bardzo zabawny sposób przedstawiał kolejne możliwości kompilatora (jako, że jest fanem Star Treka). Zobaczyliśmy jak łatwo można kompilować nasz kod Javascriptowy bezpośrednio na docelowe urządzenia, czy to z systemem iOS czy Android. Prostym, ale jakże ładnym przykładem było sterowanie cieniem elementu na ekranie za pomocą wbudowanego żyroskopu.

Tantek Çelik - CASSIS

Tantek, podobnie jak Gandalf, poprowadził bardzo "gorący" temat, który wywołał ożywioną dyskusję, która była podobno kontynuowana już po konferencji w pobliskim barze. O co chodzi? O koncepcję stworzenia uniwersalnego kodu, który będzie działał identycznie na serwerze (PHP) i po stronie użytkownika (Javascript). Tantek osiągnął to za pomocą skomplikowanego systemu komentarzy, dzięki którym po odpaleniu kodu na serwerze interpreter omijał kod Javascript, a uruchomiony po stronie klienta uruchamiał tylko kod Javascript. Oczywiście wszystko musiało zostać napisane w odpowiedni sposób, np. zmienne z dolarem ($zmienna) - wymóg PHP, natomiast coś, co może działać także w Javascript.

Podsumowanie

Warsztaty były świetne - moja wiedza na temat użycia Canvas w grach była niewielka, a w ciągu tych dwóch dni nauczyłem się sporo, dzięki czemu mam ochotę i pomysły na kolejne gry i aplikacje. Impreza drugiego dnia wieczorem była świetną okazją na poznanie wielu ciekawych osób, wymianę poglądów i opinii. Podczas konferencji mieliśmy dużą dawkę wiedzy związanej z różnymi aspektami języka Javascript. Te trzy dni były bardzo intensywne i jestem bardzo szczęśliwy, że mogłem wziąć w tym wszystkim udział. Na pewno dowiedziałem się o wielu interesujących bibliotekach i technologiach. Już nie mogę się doczekać kolejnych edycji Falsy Values!
Ps. Wrzuciłem kilka fotek z tych minionych trzech dni, dosłownie 5 sztuk, które można zobaczyć tutaj.