Monday, February 27, 2017

Lambda Days 2017

Konferencja Lambda Days 2017 odbyła się 9-10 lutego 2017 roku w Krakowie. Dzięki temu, że JUG zorganizował nam możliwość uczestnictwa w tym wydarzeniu, odrobinie szczęścia oraz temu, że opłaciłem składkę członkowską, miałem okazję odwiedzić Kraków i posłuchać ciekawych prelekcji z tematyki programowania funkcyjnego. 

Zanim przejdę do relacjonowania wysłuchanych prelekcji, opowiem Wam trochę o kwestiach techniczno – organizacyjnych. Konferencja, podobnie jak w ubiegłym roku, odbyła się w budynku Auditorium Maximum UJ. Uczestnicy i prelegenci zajmowali trzy aule – dwie małe i jedną dużą. Jak na prognozowane 500 uczestników, miejsca było wystarczająco dużo. Nie zdarzyło się, żeby dla kogoś zabrakło krzesła na sali, jak widywałem na bardziej obleganych prezentacjach GeeCona. Organizacja konferencji również przebiegała dość sprawnie – szybka rejestracja, dobrze zorganizowana szatnia, catering i rozrywki w przerwach między prelekcjami. Doskwierał mi jedynie (z resztą nie tylko mi) problem z dostępnością gniazdek do podłączenia laptopa, zarówno w aulach jak i na korytarzach. Pojedyncze wolne gniazda były „porezerwowane” do przodu. Dało się jednak obyć bez laptopa. Jeśli chodzi o organizację, muszę również pochwalić catering. Lunche i przekąski były naprawdę dobre i w wystarczających ilościach. Nie zabrakło również słodkich przekąsek w wersji light, co również było na plus. Pojawiło się nawet bezglutenowe ciasto, strefy crossfit niestety nigdzie nie znalazłem :)

Przejdźmy jednak do rzeczy. Pierwsza prezentacja rozpoczęła się z kilkuminutowych opóźnieniem, warto było jednak być cierpliwym i nie uciekać z głównej auli. Jako pierwsi wystąpili John Hughes oraz Mary Sheeran. W swojej prelekcji pt. „Why Functional Programming Matters” zainspirowanej artykułem Johna o tej samej nazwie z przed przeszło 25 lat. Para mówiła o historii i znaczeniu programowania funkcyjnego. I tak cofnęliśmy się do roku 1940. John opowiadał o koncepcji programowania funkcyjnego wymyślonej przez Alonzo Churcha, w której typy czy struktury danych były zastąpione funkcjami. John przytoczył również artykuł P.J Landina  pt. „The Next 700 Programming Languages”, w którym autor opisał koncepcję języka ISWIM (“If You See What I Mean”). Po chwili na scenie pojawiła się Mary z artykułem Johna Backusa “Can Programming Be Liberated from the von Neuman Style? A Functional Style and Its Algebra of Programs” opisując matematyczny koncept programowania funkcyjnego. Po kilku artykułach autorzy przybliżyli nam swoje koncepcje opisane w ich autorskich artykułach. Po drodze spotkaliśmy się również z funkcyjnymi językami jak Lava czy Bluespec. Podsumowując, była to bardzo ciekawa prelekcja poprowadzona w interesujący sposób, z czystym sumieniem mogę powiedzieć, że jest warta miana Keynote. Nagranie prelekcji jest już dostępne na YouTube.

Po keynote udałem się na dwa krótkie talk’i w ramach ścieżki Research Track. Najpierw profesor Uniwerytetu Warszawskiego Stanisław Ambroszkiewicz mówił o koncepcji sprzętowego programowania funkcyjnego. Następnie gość z Univeristy of St Andrews Kevin Hammond zaprezentował swoją pracę pt. „Automatically Deriving Cost Models for Structured Parallel Programs using Types and Hylomorphisms”. Obydwie prelekcje mnie nie porwały, sam pomysł ścieżki również, dlatego to były jedyne talki, których wysłuchałem w ramach tej ścieżki.
I can haz no Futures? Pierwsza, bardzo udana prelekcja z live codingiem. Michał Płachta z Ocado Technology pokazał na żywych przykładach, w jaki sposób poprawić czytelność asynchronicznego kodu w Scali poprzez refaktoring i pozbycie się nadmiarowych Future’ów. Bardzo udany talk, fajne przykłady, poprowadzone w zachęcający sposób – polecam!

Po lunchu udałem się na prelekcję Choucri Faheda „Full Stack Type-safety: Elm with Scala”. Był to talk, na którym mogliśmy poznać podstawy języka Elm oraz architektury TEA (The Elm Architecture), wykorzystywanych do tworzenia aplikacji webowych. Z całej koncepcji najbardziej spodobał mi się debugguer ELMa, z możliwością śledzenia historii życia aplikacji.

The Dramatic Consequences of the Open Source Revolution: Unrecognized Challenges & Some Modest Attempts at Solutions in Scala Heather Miller, która niestety nie dotarła do Krakowa i prowadziła prelekcję zdalnie, próbowała przedstawić zalety, ale również problemy i ryzyka rozwiązań OpenSource na podstawie głównie ecosystemu Scali. Okazuje się, że technologie OS są już na tyle popularne, że większość firm czy zespołów developerskich w ogóle nie zastanawia się nad komercyjnymi alternatywami. Naturalnym wyborem staje się Open Source – i to jest super. Jest tylko drobny haczyk. Jak mówiła Heather, „życie” wielu znanych i wszechstronnie wykorzystywanych projektów OS jest uzależnione od kilku programistów. Jest to tzw.niski Truck Factor (designates the minimal number of developers that must leave (i.e., get hit by a truck or bus, or win in the lottery) before a project becomes unsustainable [1]). Dlatego musimy znać to ryzyko, analizować i myśleć o potencjalnych problemach w momencie, kiedy decydujemy się na OS. Ale jeszcze ważniejsze jest to, żebyśmy jako programiści angażowali się, tworzyli, dołączali do środowisk ludzi zajmujących się projektami OpenSource. Mimo, że prelekcja nie była ściśle techniczna, bardzo przypadła mi do gustu. Dodam, że fakt braku prelegentki na auli wcale nie ujął nic samej prelekcji i nie dało się odczuć problemów technicznych.

Distributed Computing challenges in the gaming and betting industry Sławek Zając, Dyrektor Techniczny w Grand Parade opowiadał, z jakimi wyzwaniem przyszło się zmierzyć jego zespołom w trakcie projektowania i developmentu systemu bukmacherskiego. Sławek najpierw przybliżył nam jak działa taki system oraz jakie wnosi problemy - obsługa milionów wewnętrznych i zewnętrznych zdarzeń, procesowanie 160TB danych dziennie czy 5 milionów dziennych zmian stawek oczywiście przy zachowaniu transakcyjności. Zespołowi udało się to osiągnąć z użyciem aktorów Akka w Scali.
Keynote, który miał zakończyć dzień pierwszy niestety się nie odbył. Idalin Bobé miała poprowadzić prelekcję pt. „The Gap Between Diversity and Social Justice”. Dzięi temu było troszkę więcej czasu na Lightning Talks. Ochotnicy zgłosili 5 krótkich talk’ów – jedne mniej, niektóre bardziej interesujące. Najbardziej utkwił mi w pamięci kolega, który zaprezentował grę wymyśloną i napisaną przez siebie w Elixirze.

Drugiego dnia wszyscy wyraźnie zrelaksowani po czwartkowym after party. Zaczęło się interesującym keynote’em „Build Good Software: Of Politics and Methods” od Briana Troutwine. Brian postawił dwa pytania: 1. How do we make software that makes money? 2. How do we make software of quality? Na historycznych przykładach mówił, jak skomplikowane mogą być systemy, które wytwarzamy i jak duże jest prawdopodobieństwo wystąpienia katastroficznych błędów. Sformułował również kilka zasada, które powinny być przestrzegane przez wytwórców oprogramowania. Wszystkie przykłady dotyczyły „dużych” systemów np. rektor jądrowy w Czarnobylu, jednak wydaje mi się, że przesłaniem tej prezentacji było to, że liczy się jakość każdego, choćby najmniejszego wytwarzanego przez nas oprogramowania.

A song of types and errors, or how I found myself leading teams of Scala developers Valentin Kasas porównał plusy i minusy pracy w mainstrem’owej do niszowej technologii. Przyznam szczerze, że z mojego punktu widzenia oraz doświadczenia było to bardzo udane porównanie. Całość prezentacji skupiała się nad doświadczeniami autora jako developera Scali. Opowiadał jak z mało doświadczonego developera Scali stał się w krótkim czasie ekspertem oraz liderem zespołu developerów. Mówił o problemach z jakimi się zetknął oraz podał kilka porad dla ludzi, którzy znajdą się w podobnej sytuacji. Prezentacja była okraszona trafnymi ilustracjami ze znanego serialu z kanału HBO.

W prelekcji pt. „The Origins of Free” Adam Warski mówił o “Free Monad”, co to jest, z czym się to je i jaki sposób możemy to wykorzystać. Mimo, iż autor podkreślił na początku, że programistyczny background jest wystarczający, to w mojej ocenie cała prelekcja była z byt bardzo „matematyczna”. Po tym wykładzie algebry udałem się na kolejny wykład, którego obawiałem się, że również będzie bardzo teoretyczny – „Going bananas with recursion schemes for fixed point data types”. Na szczęście okazało się inaczej. Paweł Szulc na żywych przykładach kodu w Scali pokazywał, czym jest „ZOO of morphisims” – katamorfizm, anamorfizm i hylomorfizm. Na koniec konferencji trafiłem na prezentację – live coding, na którym Jacek Kunicki pokazywał praktyczny przykład wykorzystania Akka Streams.  Bardzo udana prelekcja, szybkie wprowadzenie do Akki.

Konferencję uznaję za bardzo udaną i cieszę się, że mogłem wziąć w niej udział.


[1]https://medium.com/@aserg.ufmg/what-is-the-truck-factor-of-github-projects-bb0d5f019a6f#.h14c6ccti