Konferencja Scalar 2016

16.04.2016 miałam przyjemność uczestniczyć w konferencji Scalar w Warszawie. To już trzecia edycja, więc da się odczuć doświadczenie organizatorów. Prelegenci przybyli z różnych zakątków, żeby podzielić się tym co w Scali piszczy.

Scalar odbył się w Centrum Konferencyjnym Muranów w Muzeum Historii Żydów Polskich. Ze względu na niski wzrost byłam miło zaskoczona wielką aulą ze stopniowanymi rzędami krzesełek. Było wygodnie i komfortowo. Ekran na którym wyświetlano prezentacje był na tyle duży, że z ostatnich rzędów nie było problemów z odczytaniem kodu – zupełnie jak w kinie!

Scalar 2016 - rozpoczęcie

Having a cake and eating it too. Introduction to typeclasses

Paweł Szulc opowiedział w 4 aktach lekką historię o Jimmim który miał wykonać zadanie programistyczne. Oczywiście, żeby nie było zbyt nudno strony StackOverflow i Google padły.

Po początkowym przerażeniu, Jimmy zaczął implementować rozwiązanie problemu rozszerzając je o dodatkowe “prośby – wymagania” od swoich przyjaciół.

Doskonale poprowadzona prezentacja wzbudziła duży entuzjazm u publiczności. Wiedza o type classes została przekazana w formie, która zachęciłaby nawet osoby niechętne do nauki.

Swave – a fresh reactive streams implementation

Mathias Doenitz stworzył nową bibliotekę do przetwarzania strumieni. Pierwszy publiczny commit pojawił się w dniu konferencji Scalar.

Autor chce, żeby przetwarzanie strumieni w Swave było tak proste jak operowanie na kolekcjach w Scali. Swave jest niewielki, lekki i nie bierze pod uwagę wielu maszyn. Dzięki temu możemy wybrać Swave jako rozwiązanie wygodne dla mniejszych projektów.

The Eff Monad, one monad to rule them all

Prezentacja rozpoczęła się zabawnym cytatem Ady Lovelace – już ona miała problemy z efektami ubocznymi :). Dalej było już trudniej, monady nie są moją mocną stroną. Eric Torreborre opowiadał o Eff Monad, która jest zgrabną monadą pozwalającą obsługiwać efekty uboczne.

Incremental Compiler: taming Scalac

Nie znam chyba osoby, która nie narzekałaby na czas kompilacji projektów napisanych w Scali. Krzysztof Romanowski przedstawił ogólny algorytm kompilacji w SBT. Dzięki temu, że do kompilatora Scalac dostarczane są tylko fragmenty kodu, cały proces jest sporo krótszy niż kompilacja całego projektu.

Akka-cluster-etcd

Maciej Biłas wraz ze swoim kolegą od kilku miesięcy rozwijają projekt zarządzający klastrem Akki. Prezentacja była pokazem na żywo deployowania klastra Akki. Wszystko wyglądało bardzo dobrze, narzędzie obsługuje dodawanie/usuwanie serwerów, zarządzanie replikami itp.

Lift framework in 30 minutes

Live coding prostej aplikacji webowej z wykorzystaniem Lifta. Nie obyło się bez literówek, błędów kompilacji, jednak Łukasz Lenart zdołał zaprezentować część możliwości biblioteki. Rzucił mi się w oczy mankament Lifta – brak walidacji wielu elementów podczas kompilacji.

Shapeless? Easy!

Bardzo podobał mi się sposób budowy prezentacji – była w interpreterze! Valentin Kasas popisał się kreatywnością. Shapeless to biblioteka do programowania generycznego. Większość wykładu poświęcona była na omówienieHList.

Scalar 2016 - Shapeless? Easy!

IOT, timeseries and prediction with Android, Cassandra and Spark

Ucieszyłam się, że wśród prowadzących nie zabrakło kobiety. Amira Lakhal pokazała jak połączyć kilka technologii i móc przetwarzać dane w czasie rzeczywistym.

Aplikacja działająca na Androidzie zbierała dane o aktywności człowieka (siedzenie, stanie, bieg, chodzenie), a część serwerowa przetwarzała na bieżąco wyniki. Nie zabrakło prezentacji na żywo. Prelegentka biegająca po scenie to niezapomniany widok.

Amira przyznała, że uwielbia biegać, więc aplikacja jest również przykładem na dobre połączenie informatyki ze swoim hobby.

Making sense of initialization order in Scala

Dmytro Petrashko z jednej strony rozbawił mnie swoją prezentacją, a z drugiej strony zwrócił uwagę na to jak dużo rzeczy programiści muszą brać pod uwagę projektując kod. Niby jest to oczywiste a jednak…

Prowadzący wprowadził mnie w osłupienie pokazując jak po kolei inicjalizują się traity jeśli klasa używa więcej niż jednego. Jeśli zdaje Ci się, że wiesz jak to działa polecam obejrzeć nagranie tej prezentacji. Wyniki były dla mnie zaskakujące i utwierdziły mnie w przekonaniu, że Scala nie należy do prostych języków.

Problemy z kolejnością może rozwiązać używanie early definitions np. class C extends { val name = „Bob” } with Greeting. Jednak Dmytro wspomniał, że są prowadzone prace nad tym, żeby rozwiązać te problemy w bardziej przystępny sposób.

Wisienką na torcie było to, że jeśli Dotty w przyszłości (na co się zapowiada) zajmie miejsce aktualnych kompilatorów to kolejność inicjalizacji się zmieni. Myślę, że to może nieźle namieszać w niejednym projekcie.

Cool Toolz in Scalaz and Cats Toolboxes

Na początku prezentacji Jan Pustelnik przedstawił dlaczego zaczął używać Scali i słusznie stwierdził, że nie jest to język dla początkujących.

Prezentacja była porównaniem bibliotek Scalaz i Cats ułatwiających pisanie czysto funkcyjnego kodu. Po drodze pojawiło się kilka wzorców projektowych. Ogólne mechanizmy w obu bibliotekach są podobne, jednak są między nimi wyraźne różnice np. działanie operatorów.

Contract first, session types later!

Marco Borst i Slava Schmidt zajmują się rozwijaniem narzędzia do generowania klientów i serwerów REST – Swagger. Rozpoczęli opisem jak wygląda model dojrzałości REST. Pokazali, że można sprawdzać poprawność typów API już podczas kompilacji.

Scalar 2016 - Contract first, session types later!

Scala SWAT: Tackling 1 Billion Member Social Network

Prezentacja Artura Bańkowskiego szczególnie zapadła mi w pamięć. Dobry mówca, dobry temat, dobre rozwiązanie.

Jak sam stwierdził przyjechał na Scalara po to, żeby udowodnić, że Scala nadaje się do projektów komercyjnych i udało mu się to perfekcyjnie. Przedstawił jak za pomocą przeszukiwania grafów obsłużyć gigantyczną sieć zależności i mieć pierwsze wyniki w czasie poniżej 1 minuty. Finalnie ten czas był dużo niższy.

Bardzo wartościowe było omówienie dlaczego skorzystał z konkretnych technologii i porównanie ich z innymi. Przykładowo rozważając grafową bazę danych zespół brał po uwagę:

  • Titan – działał dobrze, ale wyglądało jakby przestał być rozwijany,
  • OrientDB – wolno importował dane, po jakimś czasie przestał importować co z miejsca go zdyskwalifikowało,
  • Neo4j – demonem prędkości nie jest, ale działa stabilnie więc został docelowym rozwiązaniem.

Takie porównania i testy na danych dużych rozmiarów są cenne dla wszystkich, którzy zastanawiają się nad wyborem technologii do projektu. Prezentacja do obowiązkowego obejrzenia po publikacji nagrań.

Scalar - finał

Subiektywna opinia

Pod względem organizacyjnym było bardzo dobrze. Co prawda nie było zbyt wiele miejsc do siedzenia podczas obiadu, więc wybrałam opcję wyjścia do pobliskiej knajpki (na szczęście była dość blisko).

Prelegenci dobrze przygotowali się do swoich wystąpień, kilka prezentacji było prawdziwymi show, co uwielbiam, bo wiedza wtedy “wiedza sama wchodzi do głowy”.

Było dużo ciekawych informacji. Oprócz prezentacji bibliotek, narzędzi itp. pojawiło się sporo rad od doświadczonych praktyków dotyczących przyziemnych tematów o których każdy powinien pamiętać.

Wydaje mi się, że Scalar to jedna z tych konferencji, na których warto pojawiać się co roku.

Related Posts

Kraków Scala User Group – DI in Akka, Reactive Streams

29 lutego miałam przyjemność uczestniczyć w spotkaniu Kraków Scala User Group. Zaprezentowano dwa tematy, o których niewiele wcześniej wiedziałam. Obie prezentacje były na wysokim poziomie merytorycznym, a jednocześnie przykłady były tak dobrane, żeby każdy mógł zrozumieć temat. Miłym zaskoczeniem było nagrywanie spotkania, niedługo powinny być dostępne filmy z prezentacji.

Read More

ScalaSphere DevTools Summit

W dniach 11-12 lutego 2016 w Krakowie wzięłam udział w konferencji ScalaSphere DevTool Summit. Była poświęcona narzędziom wspomagającym pracę programistów Scali. Jedna z najbardziej technicznych konferencji w jakich brałam udział. Doświadczeni prelegenci, ciekawe tematy, luźne after party – dla mnie świetnie spędzony weekend.

Read More

1 Comment

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *