meet.js Poznań #39

26.04.2018 odbył się #39 meet.js Poznań. Pierwszy raz event odbył się w siedzibie firmy OLX. Jak było ? Czy warto na takie eventy chodzić ? Zapraszam na krótką relację ze spotkania.

Miejscówka

Na wstępie kilka słów o lokalizacji, tym bardziej, że był to pierwszy raz zarazem dla mnie (nigdy nie byłem w biurze OLX) jak i dla społeczności meet.js Poznań. Pierwsze co rzuciło się w oczy to komunikat dotyczący bramek na wejściu, a raczej prośba żeby ich nie forsować. Jak na nowoczesny biurowiec przystało, aby przejść z holu głównego w głąb budynku należy przejść przez bramki bezpieczeństwa. No a żeby przez takie bramki przejść należy mieć kartę :) Nie przeszkodziło to jednak organizatorom na sprawne przepuszczanie uczestników, a i ochrona budynku z tego co wiem nie miała żadnych pretensji. Wiadomo, nie jest to, to samo co "Collegium Da Vinci" czy "Za Bramką", gdzie w każdym momencie mogliśmy wejść i wyjść, ale ludzie odpowiedzialni z OLX stanęli na wysokości zadania. Drugie co rzuciło się w oczy to biuro. Sprawiało wrażenie miejsca przytulnego, nowoczesnego, czystego...dobra nie popadajmy w wielki zachwyt :) czysto, schludnie, nowocześnie. Miło się w takim wnętrzu przebywało. Sala duża, klimatyzowana. Telewizor 90" :), co kilka razy było podkreślane, dawał radę. Jedyne do czego mógłbym się delikatnie doczepić to nagłośnienie...dokładniej mówiąc to mikrofon. Po pierwsze słabo zbierał i kiedy prelegenci trzymali go zbyt daleko od "źródła dźwięku" :D trzeba było wytężyć słuch, żeby coś usłyszeć. Jednak mikroport w takich wypadkach sprawdza się o niebo lepiej. Tym bardziej, że ostatni z prelegentów przeprowadzał live coding i w momencie kiedy miał obie ręce zajęte nie było jak trzymać mikrofonu. Na szczęście z pomocą przybył Eryk i sprawa się rozwiązała. Brawo TY ! :)

Tematy prezentacji

Przejdźmy teraz do samych prezentacji. Jak to zwykle bywa na meet.js omówione zostały 3 tematy:

  • Jakub Holak opowiadał o Web Componentach
    "Beyond Polymer - current state of web components. Are we getting closer to the end of Framework Churn?"

  • Radosław Małecki przedstawił podejście zaimplementowane w aplikacji OLX dotyczące podziału na sub-aplikacje w reduxie.
    "Redux subapps: as a solution for dealing with large scale/team apps"

  • Wojciech Ogrodowczyk na koniec przybliżył jego podejście do JS i języków do JS'a kompilowanych.
    "Beyond JavaScript: The Hidden Benefit of React Native"

Wszystkie prezentacje trzymały wysoki poziom. Ale nie mogę oprzeć się wrażeniu, że im dalej w las tym jednak poziom skupienia spadał. Ale po kolei...

Beyond Polymer / Web Components

Pierwsza prezentacja dotyczyła Web Componentów. Punktem wyjścia był wykres przedstawiający tempo wzrostu wymagań dotyczących aplikacji webowych. Biznes coraz bardziej dąży/wymaga tego, aby aplikacje webowe sprawiały wrażenie natywnych. SPA, PWA, fancy animacje itp. itd. Z drugiej strony ilość natywnych API na platformie WEB rośnie w nieco wolniejszym tempie. Nie zawsze producenci przeglądarek zgadzają się z implementacją. Niektórzy implementują nowe API szybciej inni wolniej. Aby zakopać ten rów, jak określił to Jakub, społeczność zaczęła tworzyć frameworki i biblioteki, które zbliżają nas, developerów, ostatecznie do spełnienia wymagań. W kolejnych krokach przedstawił technologię, która teoretycznie powinna zakończyć ten pęd w kierunku tworzenia coraz to nowszych frameworków. Technologia ta to Web Components, które wcale nie są takie nowe. Pierwszy raz o Web Components usłyszałem około roku 2013/2014. W skład specyfikacji Web Components wchodzą między innymi:

  • Custom Elements
  • Shadow DOM
  • HTML templates
  • HTML/ES6 imports

Każdy z tych elementów został bardzo fajnie omówiony i wytłumaczony. Na koniec autor prezentacji postawił pytanie czy aby na pewno Web Components spowodują zatrzymanie tego trendu w tworzeniu coraz to nowych frameworków, czy może WC okażą się ich składnikiem budulcowym. Osobiście skłaniałbym się ku tej drugiej opcji ;) Tym bardziej, że ostatnio dużo mówi się o podejściu micro-frontends, gdzie Custom Elements, są elementem bazowym. Myślę, że w niedługim czasie się o tym przekonamy.

Redux Subapps

Drugim prelegentem był Radek Małecki. Z Radkiem pracowałem kiedyś w Samsungu i bardzo miło to wspominam. Temat, który prezentował ze względu na specyfikę pracy w Egnyte bardzo mnie zainteresował i miałem wobec tego bardzo duże oczekiwania. Niestety troszeczkę się zawiodłem. Radek opowiadał o tym jak w OLX'ie zaczęli przechodzić na model sub-aplikacji w reduxie. Głównym problemem z jakim mieli się zmierzyć był duży, rozlokowany w 2 krajach zespół podzielony na 5 mniejszych sub-zespołów, pracujących nad wspólnym code-basem. Wow...już sam opis wydaje się zagmatwany. Dodatkowo chcieli zmniejszyć rozmiar bundla, który potrzebny jest do zainicjowania aplikacji po stronie klienta. Koniec, końców doszli do wniosku, że skorzystają z podejścia sub-app. Początek prezentacji był bardzo obiecujący. Krótkie, treściwe wprowadzenie do tematu wraz z najważniejszą zasadą podejścia:

  • aplikacje są od siebie niezależne (nie współdzielą danych, akcji ani nie komunikują się ze sobą)

Koncept rzeczywiście jest prosty i łatwy do zrozumienia. Po więcej zapraszam do dokumentacji reduxa.

Niestety z kolejnymi slajdami Radek przedstawił jak w OLX zaczęli łamać podstawową zasadę przedstawioną na samym początku. Ciężko w tak dużej aplikacji jak OLX nie współdzielić danych. Standardowym przykładem jest tu np. informacja o zalogowanym użytkowniku. W tym wypadku części wspólne zostały wydzielone do tzw. core'a - aplikacji nadrzędnej. Natomiast sub-aplikacje korzystają ze zbinowanych selectorów do głównego store'a. Po prezentacji wyłącznie fragmentów implementacji ciężko oceniać czy takie rozwiązanie ma przyszłość. Ciężko jednak oprzeć się wrażeniu, że koncept sub-aplikacji został tu błędnie zinterpretowany, a główna jego zasada złamana. Jednym z celów, jaki przyświecał tej idei było zminimalizowanie rozmiaru aplikacji na stracie. Cel koniec końców został zrealizowany - główny reducer nie ma pojęcia o sub-reducerach i akcjach, więc nie trzeba ich ładować na starcie aplikacji.

Po krótkiej dyskusji z kolegami z OLX'a, doszliśmy do wniosku, że "póki działa jest ok" ...ale nie mogliśmy się oprzeć pokusie podsumowania w stylu:

a

Z drugiej strony, zasady są po to żeby je łamać, a ja nie pracuję w OLX ;) ...Radek, Bartek, Tomek ---- Trzymam kciuki za wasze sub-apki ! :)

Beyond JavaScript

Trzecim prelegentem był Wojciech Ogrodowczyk. Z tematu prezentacji "Beyond JavaScript: The Hidden Benefit of React Native" ciężko było wykminić jej główny zamysł. Tym bardziej, że zapowiadający prezentację powiedział mniej więcej: "A teraz Wojtek opowie nam coś więcej o React Native"...gdzie o RN nie było prawie nic :) ...prawie...

Wojciech wyszedł od nawiązania do plemienia Pirahã, które ma bardzo specyficzny dialekt. Nie posiadają np. czasu przeszłego ani przyszłego, przez co nie opowiadają o przeszłości, o planach, nie mają bogów ani wrogów itp. itd. Nie mają też nazw kolorów. Jeśli chcą powiedzieć o czymś, że coś jest zielone - używają sformułowania, że coś wygląda jak trawa. Autor prezentacji poprzez dialekt plemienia Pirahã przeszedł płynnie do języków programowania. Odniosłem wrażenie, że głównym przesłaniem całej prezentacji było to, że użycie statycznie typowanego języka kompilowanego do JS'a potrafi oszczędzić kilku bugów. Krótko i zwięźle co nie ? Cała reszta była bardzo ciekawie opowiedzianą historią z perspektywy człowieka, który z JS'em niewiele ma wspólnego :) Na koniec Wojtek przeprowadził live coding, w którym pokazał jak przy użyciu REASON'a dopisać prosty filtr treści w aplikacji mobilnej.

And the winner is ...

Tak jak wspomniałem na początku - wszystkie prezentacje były na bardzo wysokim poziomie. Każdy z prelegentów był bardzo dobrze przygotowany. Sposób mówienia, każdego z nich nie był nużący. Za to wielki szacunek. Gdybym jednak miał wybrać jedną prezkę, która mnie porwała to wybrał bym Kubę Holaka i jego opowieść o Web Componentach.

Czy warto chodzić na takie meetupy?

TAK, TAK i jeszcze raz tak.

Po raz kolejny doświadczyłem mega inspiracji po takim spotkaniu. Najciekawsze z tego wszystkiego są dyskusje już po prezentacjach...w przerwie przy piwku i pizzy, albo na bar-campie, który od pewnego czasu odbywa się regularnie na poznańskim meet.js. Wczorajsze spotkanie zainspirowało mnie do napisania tego posta :) Dzięki! Co więcej sam zgłosiłem dwa tematy na prezentacje i kto wie...może na następnym meet.js wystąpię po drugiej stronie sceny w roli prelegenta.

Wielkie dzięki organizatorom i sponsorom.
Do zobaczenia na następnym meet.js !