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




Wednesday, December 21, 2016

ng-poland 2016 - konferencja frontendowa z perspektywy backendowca

Pierwsza polska edycja konferencji dotyczącej Angular'a odbyła się 22 listopada 2016 w rozpoznawalnym miejscu stolicy, które jest łatwo dostępne dla podróżujących każdym środkiem transportu - na Stadionie Narodowym w Warszawie.
Po dotarciu na miejsce i dokonaniu bardzo sprawnej rejestracji zająłem miejsce z dobrym widokiem (później okazało się, że nie aż tak dobrym ;)) na główny ekran i samą scenę.
W miarę szybka rundka po stoiskach sponsorów pozwoliła na zapoznanie się z ofertami pracy oraz uzyskaniem odpowiedzi na podstawowe pytania związane z codzienną atmosferą i podejściem do pracy w projektach.
Dużym plusem konferencji była forma jednej ścieżki prezentacji. Każdą z nich rozdzielała bardzo krótka przerwa poświęcona jedynie na przygotowanie sceny dla kolejnych prelegentów. Prezentacje w porannym bloku trwały 40 minut i osobiście uważam, że był to wystarczający czas na zapoznanie się z przygotowanymi tematami.

Wprowadzenie rozpoczęło się z lekkim opóźnieniem które jednak nie miało wpływu na godziny kolejnych prelekcji. W tematykę Angulara wprowadzili nas bracia Kalbarczyk - Dariusz oraz Arkadiusz.
Pierwszą prelekcję przeprowadził Wassim Chegham i dotyczyła ona biblioteki Universal służącej do server-side rendering'u. Przedstawione zostały wady Angular'a 1, a głównie brak omawianego mechanizmu SSR. Umożliwia on szybsze ładowanie się strony, uzyskanie lepszej pozycji w wynikach wyszukiwania i poprawia ogólny tzw. user experience. Następnie zademonstrowane zostały zmiany jakie zaszły w Angular 2 wprowadzające obsługę SSR.
Druga prezentacja prowadzona przez Tracy Lee rozpoczęła się spontaniczną sesją karaoke, która wprowadziła luźniejszy nastrój na sali.
Prelekcja przedstawiła możliwości Angular CLI, który łatwo rozwiązuje problemy wyboru stosowanej konwencji w projekcie - jak nazywać foldery, pliki z klasami itp. Pozwala on również na generowanie podstawowego kodu projektu, jego component'ów, service'ów przy użyciu komend linii poleceń.
W czasie 40 minutowej sesji live coding Tracy stworzyła stronę WWW dotyczącą zapowiadanej konferencji ng-cruise zawierającej dział ze spisem przygotowanych sesji, z opisami prezenterów oraz formularz dla sponsorów. Zrobiło to na mnie niemałe wrażenie jak w tak krótkim czasie można przygotować podstawowe funkcjonalności w niedużym projekcie.
Trzecia prezentacja w porannym bloku przeprowadzona przez Uri Shaked pokazała, że Angulara 2 można używać nie tylko w środowisku przeglądarki internetowej. Prelegent przed konferencją przygotował swoją wersję gry Simon w formie aplikacji web'owej, zaś w trakcie 40 minut dodał do niej fragmenty kodu umożliwiające granie na urządzeniu IoT zbudowanym w oparciu o Arduino i Raspberry Pi. W projekcie użyta została autorska biblioteka angular-iot zawierająca dyrektywy do wykorzystania obsługi przez interfejsy fizyczne.

Po pierwszej krótkiej przerwie na kawę rozpoczął się blok prezentacji sponsorów.
Pierwsza została przygotowana przez Adama Nowaczyka z firmy Acaisoft. W czasie prezentacji odpowiadaliśmy na pytania z quizu - web aplikacji wykorzystującej infrastrukturę AWS oraz technologię web socket'ów. Prosta aplikacja stworzona na szybko bardzo sprawnie obsłużyła ruch około 300 jednoczesnych użytkowników bez posiadania ani jednej linijki kodu backend'owego.
Podczas drugiej prezentacji z bloku sponsorskiego Paweł Zdziech z firmy 7N odpowiedział na pytanie czy znajomość frameworka Angular opłaca się pod względami finansowymi? Z danych przedstawionych na wykresach i diagramach wygląda, że tak. ;)
Na trzeciej, ostatniej prezentacji sponsora Phil Nash z Twilio przeprowadził nas przez historię przechowywania danych w frontend'owych aplikacjach - zaczynając od cookies, poprzez local storage, Web SQL i skończywszy na IndexedDB. Phil zaprezentował główne wady i zalety każdego z tych rozwiązań, ale głównie skupił się na ostatnim, najnowszym pomyśle czyli właśnie IndexedDB. Umożliwia ona pracę aplikacji bez dostępu do internetu, zapewnia dobrą wydajność oraz transakcyjność operacji w asynchronicznym środowisku.
Na koniec bloku sponsorskiego zostały rozdane nagrody dla grup developerów rozwijających i reklamujących Angular'a oraz najlepszych projektów go wykorzystujących.
Po tej części przyszedł czas na obiad - dla każdego uczestnika konferencji została zapewniona pizza co wg mnie jest nie lada wyczynem biorąc pod uwagę, że samych słuchaczy było około 550. :o

Popołudniowy blok prezentacji rozpoczął Nir Kaufman przedstawiając wykorzystanie Redux'a w Angular 2. Zaczęliśmy od teorii, która wg prowadzącego jest najtrudniejsza. Redux opiera się na założeniu, że w aplikacji znajduje tylko jedno miejsca przechowujące jej stan - tzw. Store, który jest "single point of truth". Aby zmienić stan aplikacji użytkownik inicjuje Akcje (Action), które są przetwarzane przez "prawdziwe funkcje" ("pure functions", Reducers). Funkcje te zmieniają stan aplikacji w przewidywalny sposób - każde wykonanej tej samej funkcji z tymi samymi danymi wejściowymi zwróci identyczny wynik.
Po wprowadzeniu do samej koncepcji Redux'a przeszliśmy przez poszczególne elementy na przykładowej aplikacji przygotowanej przez prowadzącego.
Druga prezentacja z popłudniowego bloku dotyczyła historii tworzenia aplikacji dla Spidermana przez prowadzącego - Gerarda Sansa. Największa część całej historii od strony praktycznej dotyczyła wykorzystania Router'a z Angular 2.
Omówione zostały najczęściej używane funkcje takie jak lazy-loading oraz jego przeciwieństwo – preloading czy też ograniczanie dostępu do pewnych zasobów. Każda z dostępnych funkcji została przedstawiona na przykładzie specjalnie stworzonej aplikacji.
Ostatnia prezentacja przed krótką przerwą na kawę dotyczyła wykorzystania biblioteki RxJS. Narzędzie to pozwala na zastąpienia dostępnych w języku standardowych Promise'ów.
Promise'y pozwalają na zwrócenie tylko jednej wartości jednokrotnie, ich wykonywanie nie może zostać przerwane i dzieje się od razu po zleceniu akcji.
RxJS z kolei opiera się na Observable'ach do których użytkownik się subskrybuje i dopiero wtedy wykonują zleconą akcję przez nawet nieskończony czas. Aby przerwać wykonywanie zadania wystarczy tylko usunąć subskrypcję na danym Stream'ie. Dodatkową zaletą Observable oraz RxJS są operatory pozwalające na modyfikacji wyników otrzymywanych na nasłuchiwanym strumieniu takie jak "filter", "map", "reduce" itp.

Po ostatniej przerwie z powodu nieobecności Todda Motto nastąpiła zmiana kolejności prezentacji.
Shai Reznik rozpoczął końcowy blok krótszych prezentacji trwających jedynie 20 minut.
W swojej prelekcji wyjaśnił czym są moduły w Angular. Przez cały czas prezentacji towarzyszył nam bóbr budowniczy, który chcąc stworzyć swoją aplikację przy użyciu frameworka Angular musiał poznać jego strukturę składającą się z:
- Component;
- Service;
- Pipe (filter);
- Directive.
W każdej aplikacji musi istnieć jeden moduł główny (root module), reszta funkcjonalności aplikacji powinna być rozdzielona na mniejsze moduły odpowiedzialne za pojedyncze operacje. Service'y (providers) wstrzykiwane przez Injector są pobierane ze wspólnej puli.
Kolejną prezentację dotyczącą Progressive Angular 2 apps poprowadził Ciro Nunes. Progressive App to aplikacja webowa dostępna z pulpitu. Do głównych zalet tego typu aplikacji należą:
- możliwość pracy bez dostępu do sieci;
- możliwość natychmiastowego uruchomienia aplikacji z pulpitu;
- możliwość informowania użytkownika o zdarzeniach poprzez powiadomienia systemu operacyjnego.
W czasie prelekcji, na kolejnych slajdach Ciro omawiał fragmenty kodu wcześniej przygotowanej demonstracyjnej aplikacji.
Następnie Alex Lakatos przedstawił pragmatyczne podejście do oficjalnego stylu tworzenia kodu w aplikacjach tworzonych przy użyciu Angular'a 2. Zaprezentowane zostały poszczególne zasady zalecane przez twórców Angular'a wraz z komentarzem Alexa popartym doświadczeniem z pracy własnej oraz swojego zespołu.
Jednym z niewielu polskich akcentów na ng-poland 2016 była prelekcja Tomasza Duciny dotycząca stworzenia oraz wdrożenia aplikacji bankowej w Angular 1. Całą praca zajęła ponad 1 rok i już w trakcie wdrożenia aplikacja mogła zostać uznana za przestarzałą ponieważ na rynku dostępny był Angular 2.
Tomasz opowiedział historię swojego projektu rozdzielając ją na poszczególne etapy:
- wybór technologii i bibliotek;
- projektowanie architektury;
- programowanie (rozproszony zespół, zależności między zadaniami);
- refactoring.
Kolejną prezentację Uri Goldsteina dotyczącą GraphQL niestety musiałem ominąć w większej części. Ogólnie wynika z niej, że GraphQL jest przyszłościowym sposobem komunikacji w aplikacjach klient-serwer i posiada sporo ulepszeń w stosunku do REST'a jak typowanie czy zapytania grupowe.
Na koniec konferencji Sebastian Witalec zaprezentował NativeScript - bibliotekę pozwalająca na tworzenie aplikacji natywnych. W czasie prelekcji poznaliśmy główne założenia biblioteki oraz podstawowe kontrolki UI wraz z przykładowym kodem.
Jednak oprócz aplikacji mobilnych NativeScript umożliwił Sebastianowi stworzenie bezprzewodowego kontrolera do obsługi robotów w oparciu o protokół Bluetooth. W czasie prezentacji poznaliśmy historię oraz większe perypetie jakie przydarzyły się Sebastianowi w czasie tworzenia aplikacji.

Konferencję ng-poland oceniam bardzo pozytywnie. Wszystkie elementy składowe przygotowane zostały na najwyższym poziomie, począwszy od rejestracji, cateringu i skończywszy na najważniejszym elemencie czyli prezentacjach. Każda z nich była pełna ciekawostek pod względem merytorycznym a profesjonalni prelegenci dodawali do nich pełno humoru jeszcze bardziej ulepszających ich odbiór.
Polecam wyszukanie materiałów z prezentacji w internecie i poznanie najbardziej interesujących tematów na własną rękę.
Jeśli w następnym roku będzie miała odbyć się kolejna edycja konferencji to każdemu developer'owi mającemu nawet niewielką styczność z frontendem polecam wzięcie udziału i poznanie innego środowiska od kuchni.

Monday, November 28, 2016

2016-11-22 DevOpsDays Warsaw 2016

Kilka suchych faktów na początek

Dzięki uprzejmości Łódzkiego Juga oraz odrobinie szczęścia podczas losowania, miałem możliwość uczestniczenia w świetnej konferencji DevOpsDays Warsaw 2016, która była organizowana przez firmę Proidea i tak samo jak inna duża warszawska konferencja 4Developers, miała miejsce w hotelu Gromada blisko Lotniska Chopina.

Format

Na konferencji była jedna ścieżka, co dosyć mocno ułatwiało wybór. Prezentacje trwały po 30 minut, ale jedna godzina pierwszego dnia była poświęcon na tzw. Ignite talks, na który każdy mógł się zgłosić z 5 minutową prezentacją. Ponadto, na koniec każdego dnia przewidziane były open space'y, czyli dyskusje w mniejszych gronach na interesujące tematy.

Dzień pierwszy

Oczywiście zaczęło się od rejestracji, która poszła bardzo szybko i sprawnie (dużo szybciej niż na wspomnianej wcześniej 4Developers), więc na ceremonii otwarcia mieliśmy pełną salę. Szybka ankieta wśród uczestników wykazała, że procentowy udział devów i opsów był parktycznie 50 na 50%. Zaskoczeniem była jednak bardzo duża liczba ludzi z tak zwanego enterprise'a, względem ludzi ze startupów lub małych firm.

Talk #1: From Monoliths Trough Cloud Native to Software Supply Chains

Świetna prezentacja pokazująca jak kontenery zmieniły świat. Nie nasz, programistyczny, ale ten przemysłowy. Jak kontenery, dzięki łatwości transportu, pozwoliły przenieść fabryki dalej od brzegu morskiego i przyczyniły się do utworzenia łańcucha dostawców, którzy nie musieli znajdować się w jednym miejscu. Pozwoliło to też na specjalizacje poszczególnych firm. Było to o tyle ciekawe, że powoli będziemy dochodzili do takich samych specjalizacji: każdy będzie mógł dostarczać swoje, specjalizowane kontenery i duże firmy (jak Google, Facebook, Twitter) nie będą musiały budować całego stosu usług tylko będą korzystali z usług innych dostawców.

Talk #2: A Journey Towards SRE @ Ocado

Prezentacja otwierająca oczy na bardzo ciekawy fakt - operation zajmuje więcej czasu niż development. W miarę rozwoju systemów, zespół operation powinien być powiększany. Ale czy tak sie dzieje naprawdę? Inna bardzo ważna prawda, o której zapominamy, to fakt, że najważniejszy feature każdego systemu to: It works, co odnosi się do nowych, ale przede wszystkim do istniejących już funkcji systemu.

Talk #3: The OutSystems R&D Continuous Delivery Journey

Moim zdaniem jedna z najlepszych prezentacji na tej konferencji. Opowiadała o długiej drodze jaką przeszła portugalska firma, z której przybył prelegent. Z małego zespołu z ciekawym produktem i brakiem testów, udało im się zbudować Continuous Delivery w miarę przybywania nowych funkcji, integracji i ludzi. Po maksymalnie godzinie byli gotowi do przekazania artefaktów na produkcję.

Talk #4: DevOps Transformation Tailored to Organizational Culture

Jak zmienić kulturę swojej firmy w stonę kultury Devops? Okazuje się, że w każdej firmie są obecne różne kultury: hierarchiczna, klanowa, adhokracyjna oraz zorientowana na market. Najpierw musimy zrozumieć, jaką kombinację kulturową prezentuje nasza firma oraz w którą stronę chcemy iść. Co ciekawe z wielu analiz wynika, że firmy chcą dążyć do kultury adhortacyjnej i jest to właśnie transformacja DevOpsowa.
Ciekawostka: pierwszy raz widziałem na prezentacji link do Linkedin prelegenta.

Talk #5: The Song of JBoss and Chef

Była to ciekawa prezentacja, jak za pomocą narzędzia Chef zarządzać swoim klastrem JBossów. Nie było to proste, bo wymagało korzystania tylko z CLI JBossa (a dostawcy najbardziej lubią przesyłać instrukcje w formacie screenshotów...). Dzięki determinacji zespołu możliwe było powiększenie klastra o dwa dodatkowe węzły w jedną godzinę.

Talk #6: Building a Resilient Log Aggregation Pipeline Using Elasticsearch and Kafka

Świetna prezentacja, choć tempo jej prowadzenia było bardzo duże, by w 30 minut przekazać tak wielką ilość informacji i dobrych rad. Jeśli zarządzasz klastrem Elasticsearch to ta prezentacja jest właśnie dla Ciebie. Jeśli chcesz się dowiedzieć jak podzielić swój klaster, jak skonfigurować poszczególne węzły, by były zoptymalizowane pod kątem swojej funkcji, jak przydzielić do nich zasoby, to musisz to zobaczyć. Było tutaj też trochę informacji na temat konfiguracji Kafki jako scentralizowanego buffora, konfiguracji dostawcy logów oraz systemu operacyjnego dla takiego stosu technologicznego.

Talk #7: Contive – Container Networking Done Right with Cisco ACI Fabric

Najsłabsza moim zdaniem prezentacja, prowadzona przez dwóch prelegentów. Pierwszy z nich opowiedział o narzędziu Mantl opartego na Mesosie, a drugi prelegent skupił się na zaletach narzędzia Contive od Cisco.

Ignite talks

Miało być maksymalnie 10 prelegentów - było ich 5. Dobra rada dla organizatorów: zapisujcie nie tylko tytuły prezentacji, ale i zgłaszających je, bo potem prelegenci się nie zjawiają:)

Ignite talk #1: How to manage on calls rotation effortlessly

Bardzo ciekawa prezentacja o powiązaniu DataDog, PagerDuty, aplikacji na Heroku oraz Twilio do obsługi i przekierowania połączeń. Była ona szczególnie interesująca dla mnie, bo właśnie taką aplikację potrzebujemy wdrożyć.

Ignite talk #2: Invitation to TestWarez conference

Zaproszenie na konferencje TestWarez 2017 - tak po prostu:)

Ignite talk #3: DevOps mind of security & Ignite talk 4: Testing infrastructure

Szybka prezentacja, jakie mamy zasady (ssh wystawione na innym niż 22 porcie, zasady tworzenia haseł) oraz jaki jest wpływ czynników ludzkich (szczególnie skleroza i lenistwo) na bezpieczeństwo systemów. Jak sobie z tym radzić i czego pilnować? Mamy zestaw reguł opisany w STIGs - Security Technical Implementation Guides i powinniśmy z nich korzystać, a nawet automatycznie je sprawdzać za pomocą np. Ansible (Ignite talk #4).

Ignite talk #5: Puppet vs Chef vs Ansible vs Bash

Mamy dużo dostępnych narzędzi do automatyzacji - prelegent w ekspresowym tempie wyjaśnił, jakie są zalety i wady każdego z nich. Najważniejsze:
  • bash przegrywa, bo nie ma możliwości łatwego rollbacku, ale dla obrazów dockerowych jest najlepszy
  • puppet skompiluje wszystko na masterze - ale właśnie master jest potrzebny
  • chef - możesz spodziewać się błędów w runtime
  • ansible - najlepszy do fire & forget

Open spaces

Open spaces zaczęły się od propozycji - zebranych zostało około 13, a następnie każdy za pomocą formularza Google głosował na interesujące go tematy. Wybranych zostało 8 tematów. Dla mnie najciekawsze tego dnia były Continuous delivery pipelines (najciekawsze cześć dyskusji dotyczyła zagadnienia testowania pipeline'ów) oraz F**k ups - worst experience (aż włos się jeżył na głowie).

Dzień drugi

Pierwsze dwie prezentacje przeszły mi koło nosa, ponieważ korki w Warszawie postanowiły zorganizować mi dwugodzinną podróż na miejsce prezentacji. Tak zwane: dogodne miejsce konferencji blisko lotniska nie zawsze znaczy, że będzie łatwo się na nią dostać...

Talk #1 & Talk #2

W autobusie...

Talk #3: Nobody Puts Java in a Container

Dlaczego nie uruchamiać aplikacji Javowych na dockerze? Nigdy o tym nie myślimy. Prelegent przez większość czasu opowiadał o tym jak działa docker, o co chodzi z namespaces i cgroups, a dopiero ostatnie 5 minut traktowało o samej Javie. Tylko, że bez tak długiego wstępu trudniej byłoby zrozumieć dlaczego nie uruchamiać JVMów na dockerze. Problemem jest to, że mimo iż docker pozwala na ograniczenie dostępnej pamięci lub ilości procesorów, JVM w wersji 8 nic sobie z tego nie robi i uruchamia się widząc wszystkie zasoby maszyny pod spodem. Dlatego czasem wybór wirtualizacji jest lepszy od konteneryzacji, bo daje większą izolację.

Talk #4: Learning From Configuration Management

Prezentacja opowiadająca o problemach z jakimi spotykamy się przy automatyzacji, które też paradoksalnie są często wymieniane jako plusy, np. niezmienna architektura, centralizacja, ukryte zależności systemów operacyjnych. Aktualnie narzędzia te przypominają instrumentacje (zarządzanie z boku), a my potrzebujemy choreografii, czyli dynamicznego reagowania na zainstniałe sytuacje. Rozwiązaniem tutaj ma być narzędzie Habitat od Chef.

Talk #5: Managing Server Secrets at Scale

Konkretny problem i wspaniałe rozwiązanie do niego: mamy setki albo tysiące serwerów, każdy serwer potrzebuje kilku kluczy: kluczy ssh, klucz do szyfrowania dysku, serwera zarządzania konfiguracją, tokenów do aplikacji itp. Gdzie przechowywać takie klucze? Przecież nie będziemy ręcznie ich przepisywać z płaskich plików z naszych komputerów. Przy wielkich data center to jest niewykonalne. Z pomocą przychodzi nam tu UEFI i możliwość zapisywania zmiennych w specjalnej przestrzeni w BIOSie. Jest ona łatwo dostępna, ale też bardzo mała, dlatego nie zapiszemy tam wszystkich kluczy. Jednak wystarczy zapisać jeden klucz, a z niego w deterministyczny sposób wygenerować inne podczas uruchamiania systemu. Do tego właśnie służy narzędzie gokey.

Talk #6: How We Phased out Motivational System: About Motivation in DevOps Culture

Problem motywowania ludzi nie jest nam obcy. Wszyscy odkrywają, że pieniądze to nie wszystko. Wycieranie pieniędzmi łez spowodowanych przez smutne zadania i atmosferę w pracy często nie wystarczą. Prezentacja powinna być obejrzana szczególnie przez firmy, które chcą sprawić, by ludziom pracowało się lepiej. Mam szczęście pracować w firmie, która większość z przedstawionych tu rzeczy używa w praktyce, dlatego mogę gorąco polecić ten sposób prowadzenia firmy.

Talk #7: Monitoring and Log Management for Docker Swarm and Kubernetes

Dobre porównanie możliwości zarządzania logami, gdy mamy Kubernetesa lub Docker Swarma. Poza logami ważne jest też zbieranie metryk. Istotne jest to, że są to mechanizmy wbudowane w dockera. Dla naszych aplikacji musimy sami radzić sobie z agregacją logów i metryk.

Talk #8: The Pipeline: a Shift from Classic UI-based Job Configuration Tool to a Domain-specific Language

Od historii Jenkinsa (i Hudsona) do pipeline'ów w Jenkinsie 2.0. Niestety uważam, że co do samego tematu pipeline oraz DSL, dużo szybciej można byłoby pozyskać więdzę z tutoriali dostępnych w internecie...

Talk #9: Patching 100 OpenStack Compute Nodes with Zero-day Patch within 16 Hours

Prelegent skupił się na patchowaniu libvirta używanego w OpenStacku. Jeśli chcesz się dowiedzieć jak w 16 godzin wgrać łatkę do całej masy maszyn wirtualnych i zrestartować je, ale tak by klienci tego nie odczuli, to ta prezentacja jest właśnie dla Ciebie. Hint: wyłącz Tunneling :)

Open spaces

Ponownie przeszliśmy przez proces zgłaszania i wyboru tematów do dyskusji. Tym razem dla mnie najciekawszy temat Automatic log anomaly detection. Wnioski: jeśli jesteś dużą firmą, to albo już masz narzędzie do takiej analizy, albo stać Cię na enterprise'ową wersję oprogramowania. Jeśli jesteś małą firmą, to niestety piszesz coś własnego lub bierzesz narzędzie, które ktoś już oddał jako open source. Tylko, że jeśli coś staje się w tym przypadku dostępne, tzn. to są już dużo lepsze narzędzia.

Problemy

Konferencja nie ustrzegła się błędów i problemów. Przede wszystkim trudności przysparzało podłączanie komputerów przed prezentacjami. To zawsze zajmuje dużo czasu i zawsze coś pójdzie nie tak...

Kilka słów na koniec

Konferencję mogę z czystym sumieniem polecić wszystkim zainteresowanym tematyką DevOps lub administrowania systemami informatycznymi. Sponsorzy dopisali, a prelegenci byli w większości dobrze przygotowani. Polecam też obejrzenie nagrań z konferencji, które ku mojemu zdziwieniu, zaczęły się pojawiać już w trakcie drugiego dnia konferencji.
Idąc na konferencję zastanawiałem się, co jest największym problemem w świecie DevOpsów... Myślałem, że jest to wojna Kubernetes vs. Docker Swarm. Okazuje się, że problemem tym jest wdrażanie odpowiedniej kultury w firmach oraz zarządzanie logami. To było całkiem ciekawe odkrycie.

Sunday, November 20, 2016

2016-10-06 Mobiconf


Na przestrzeni roku udało mi się odwiedzić wszystkie największe konferencje poświęcone technologiom mobilnym. W dużej mierze dzięki współpracy JUG Łódź wraz z organizatorami tychże eventów. (Polecam aktywne wspieranie stowarzyszenia JUG :)) W poprzednich swoich wpisach miałem przyjemność zrecenzować MCE oraz Droidcon. Tym razem przyszedł czas na ocenę wydarzenia jakim jest Mobiconf odbywający się w Krakowie. 

Tegoroczna edycja Mobiconf jest już trzecią z rzędu. Po raz drugi została zorganizowana w Multikinie, nieco z dala od centrum miasta, dzięki czemu unikniemy trudności związanych z zakorkowanymi o tej porze ulicami.  Unikniemy również wszelkich problemów z parkingami co na samym wstępie napawa optymizmem po dosyć długiej podróży z okolic Łodzi :). 

Organizacja konferencji
Po wejściu do Multikina witani jesteśmy przez miły zespół organizatorów, który czuwa nad tym, aby rejestracja przebiegała sprawnie i jak najszybciej. Przychodząc kilka minut wcześniej, na pewno nie będziemy mieć problemu ze zdążeniem na keynote’a. W tym miejscu warto wspomnieć również o bogatym “pakiecie startowy”, jaki został przygotowany dla każdego uczestnika - każdy odwiedzający konferencję otrzymał kubek, torbę oraz koszulkę. Jest to na pewno miły gest ze strony organizatorów. Dla gadżetów jednak nie pokonuje się kilkuset kilometrów, pozostaje nam zatem dobudzić się kawą i wybrać na pierwszą, otwierającą prelekcję.

Prelekcje
Podczas konferencji mogliśmy uczestniczyć w około 27 zróżnicowanych prelekcjach, rozłożonych na dwa dni oraz zgrupowanych w trzech równoległych trackach. Wykłady zostały tak rozplanowane, aby każdy mógł znaleźć coś dla siebie. Mieliśmy do wyboru tracki w pełni poświęcone głównym platformom: Android, iOS oraz Everything mobile, na którym poruszone zostały zagadnienia związane z szeroko pojętym designem aplikacji mobilnych. Same prelekcje prowadzone były natomiast przez osoby doświadczone, nierzadko z tytułem GDE. 

Ze względu na swoją prace zarówno z Androidem oraz iOS’em, wybierałem różne tracki, tak aby skorzystać z konferencji jak najbardziej. Mobiconf przyciągnął jako speakerów kilka rozpoznawalnych i znanych mi wcześniej z innych eventów osób. Jest to niewątpliwy plus, gdyż możemy posłuchać prelegentów, których prezentacje do tej pory mogliśmy jedynie spotkać na zagranicznych Droidcon’ach.

Jako, że konferencja posiadała ogromną ilość prelekcji, myślę iż warto skupić się przede wszystkim na tych, które zapadły mi w pamięci oraz znacząco wyróżniały się spośród pozostałych. Tradycyjnie każda konferencja powinna mieć mocne wejście, tak i było też w tym przypadku. 

Keynote uważam za najbardziej udany, chociaż nie poruszał bezpośrednio tematyki mobile. Kevlin Henney w swoim talku zatytułowanym “The programmer” poruszył zagadnienia, z którymi wszyscy programiści mają na co dzień do czynienia. Jakość oprogramowania, paradygmaty, detale - rzeczy, które są ważne dla każdego dewelopera tworzą istotę tej profesji. Kevlin porównując pracę programisty do pracy artysty sprawił, iż każdy ze słuchaczy mógł inaczej spojrzeć na wykonywany przez siebie zawód.

Konferencja poświęcona technologiom mobilnym, powinna jednak posiadać kilka mocnych prelekcji dotyczących samego mobile. Najlepszą według mnie zafundowała nam Anastasiia Voitova. Podczas “Building user-centric security model in iOS applications” poruszona została tematyka zabezpieczenia aplikacji iOS’owych przed atakami. Prelekcja poprowadzona w bardzo luźny sposób zwracała uwagę na istotne kwestie dotyczące bezpieczeństwa. Często zabezpieczenia w aplikacji kończą się jedynie na wykorzystaniu protokółu HTTPS, jednak jest to tylko czubek góry lodowej, o czym mogliśmy się przekonać podczas prezentacji.

Ogólne wrażenia

W ostatnim czasie uczestniczyłem w wielu konferencjach poświęconych technologiom mobilnym. Mobiconf na pewno zasługuję na pozytywną opinię, biorąc pod uwagę organizację wydarzenia. Jeżeli chodzi o odbiór samych prezentacji, myślę iż jest to zawsze kwestia indywidualna. Z tego też powodu, abyście sami mogli się przekonać czy warto odwiedzić tą konferencję zapraszam serdecznie do obejrzenia z niej relacji.  W momencie, gdy tworzę tą recenzję, organizatorzy przygotowali oraz udostępnili już część prezentacji do obejrzenia. Można je znaleźć na kanale Youtube Moibconf.

Tuesday, November 1, 2016

2016-10-22 Mobilization 2016

Zmobilizowani Studenci
Na konferencji Mobilization przybyła grupa studentów 4 roku informatyki na PŁ. Ogólnie wszyscy byliśmy miło zaskoczeni profesjonalnym zorganizowaniem jak i tematyką. Poniżej przedstawię opinie moich kolegów jak i moją nt. konferencji.

Paweł
Konferencja była na bardzo wysokim poziomie zarówno merytorycznym jak i organizacyjnym. Jak dla mnie najbardziej wartościowe prelekcje odbywały się w Auli chodzi mi o cały blok dotyczący reaktywnego programowania (prelegenta z Francji mało co zrozumiałem ale sam prywatnie zgłębiłem temat ), natomiast najciekawsza prelekcja była w sali Mobici dotyczyła beaconów, prelegenci opowiadali  na temat profesjonalnie i zaskakująco. o tym opowiadali. Życzyłbym sobie jak i innym żeby każda prelekcja zawierała tyle humoru i tyle wskazówek co ta. Po konferencji odbyło się party gdzie można było porozmawiać , poznać nowych deweloperów. W następnym roku biore w ciemno wejściówkę jak tylko się pojawi. Najlepsze stanowisko miała firma Harman która pokazywała zabawki które tworzą do Mercedesów klasy S.

Mariusz
Świetna konferencja. Dużo ciekawych prezentacji oraz profesjonalna organizacja. Osobiście najbardziej podobała mi się pierwsza prezentacja, którą prowadził TomTom. Temat dotyczył dronów jako "pomoc domowa", a dokładniej utworzenia mapy pomieszczenia i kazanie dronowi przenieść obiekt z punktu A do punktu B. Pokazane na niej był proces tworzenia mapy pomieszczenia na podstawie zdjęć, dopasowywania kawałków mapy na podstawie krawędzi obiektów oraz ogólnie pojętego przetwarzania obrazu w czasie rzeczywistym. Kolejną ciekawą dla mnie prezentacją była prezentacja o możliwościach języka Kotlin, prowadzona przez Francisco Estevez'a. Pokazane na niej były przykłady rozwiązań pewnych problemów właśnie z użyciem Kotlin'a, co doskonale pokazywało jego możliwości i prostotę. Bardzo podobało mi się również to, że przyszło bardzo dużo firm i można było porozmawiać z ich przedstawicielami na temat technologii przez nich używanych, czy na temat projektów które są przez nie realizowane i na przykład zostawić im swoje CV. Przychodząc na Mobilization nie wiedziałem, że można dowiedzieć się tylu ciekawych rzeczy w tak krótkim czasie. Mogę jednak z pewnością powiedzieć, że się nie zawiodłem i z pewnością udam się kolejną tego typu konferencję.

Kamil
ogólnie prelekcje na wysokim poziomie. Fajnie, że wszystko po angielsku, co pomaga się też wtłoczyć w język branżowy, choć niektórych ciężko było zrozumieć (mam na myśli prelegenta z Hiszpani).
Stoiska i poczęstunek - super, konkursy zadowalające.
Najlepsza prelekcja według mnie - ex aequo "Taming your node_modules with Yarn" oraz "(B)VIPER module applications" czy jakoś tak.
Jednym słowem konferencja, na którą warto się udać.


Dominik
Najlepsza prelekcja: Taming node_modules at facebook gdzie Konstantin Raev pokazał nowy menedżer pakietów dla node js o nazwie yarn który jest szybszy i bezpieczniejszy od npm  dodatkowo sam katalog node_modules.
Najgorsza prelekcja: Jedna prelekcja dla mnie była słaba głównie z powodu chaotyczności prelegenta.
Co mi się podobało: Przede wszystkim klimat konferencji i prelekcje.
Co mi się nie podobało: NIC!
Sama konferencja mi się podobała chociaż technologie mobilne to nie jest coś w czym pracuje albo się rozwijam ale zawsze takie wydarzenie pozwala poszerzyć horyzonty i zobaczyć że istnieje świat poza webem.

Mariusz
Mobilization VI, jest pierwszą edycją tej konferencji, w której miałem przyjemność wziąć udział. Organizatorzy postarali się, aby nie dało się nudzić.  Wiele tematów prezentacji, wśród których każdy mógł znaleźć coś dla siebie, a w przerwach możliwość porozmawiania z przedstawicielami firm na stoiskach, gdzie dodatkowo organizowane były konkursy i można było zdobyć ciekawe gadżety. Dodatkowo całość konferencji była przeprowadzona w militarnym klimacie, co dodało fajnego „uroku” całej imprezie. Organizatorzy zapewnili również, aby uczestnicy konferencji nie doznali głodu i pragnienia. Na korytarzu były przygotowane stoiska z jedzeniem i piciem, a także zapewniono ciepły posiłek obiadowy.
Wśród prezentacji najbardziej zaciekawił mnie wykład o tytule „Break the monolith with (B)Viper Modules. Or how do I start modularising my code for a better (engineering) life”. Nicola Zaghini przedstawił bardzo ciekawy sposób rozbicia aplikacji mobilnej na warstwy, którego wcześniej nie miałem okazji spotkać. Co więcej prezentacja była przeprowadzona w sposób bardzo zrozumiały oraz autor pokazywał przykłady kodu obrazujące to co mówił.
Mobilization jest konferencją, na którą na pewno warto się wybrać. Jedyne do czego mogę się przyczepić to brak prezentacji dotyczących Windows Phone (przynajmniej ja takich nie zauważyłem). Pomimo tego, że najmniej popularny system mobilny, to uważam, że powinien pojawić się na tego typu konferencji. Zabrakło mi również prezentacji o Xamarinie. Technologia bardzo niedoceniania, a myślę, że warto o nich posłuchać. Pomimo tych dwóch rzeczy, myślę, że nie ma co  narzekać, bo i tak było o czym posłuchać. Chętnie wybiorę się na kolejną edycję Mobilization.

Adam
Mobilization to najciekawsze wydarzenie organizowane przez łódzkiego JUG’a oraz zdecydowanie najlepsza konferencja programistyczna w Łodzi. Organizatorzy nie poszli na łatwiznę. Prelegenci wygłaszający wykłady zjechali się z wielu zakątków świata, aby dzielić się z nami swoją wiedzą i doświadczeniem. Każdy mógł znaleźć wśród wygłaszanych tematów coś dla siebie. Z tych najbardziej interesujących pojawiły się smaczki związane z programowaniem funkcyjnym, pomocami dla developerów Androida, zagadnieniami inżynierii oprogramowania, a nawet ku zaskoczeniu analizą obrazu i dronami. Oczywiście to tylko garstka z poruszonych tematów. Na pewno na żadnej z prelekcji nie można było odnieść wrażenia zmarnowanego czasu. Jak się można domyślić to nie wszystko. Stoiska firm związanych z łódzkim świadkiem IT też zasługują na oklaski. Na każdym z nich czekał na nas ktoś gotowy zaspokoić naszą ciekawość odpowiadając na nasze pytania. A gdyby komuś było jeszcze mało na deser czekały na niego wspaniałe nagrody i upominki. Całe wydarzenie zasługuje na piątkę z plusem. Kto się nie pojawił, niech koniecznie wpada za rok!

Tuesday, September 20, 2016

2016-09-09 Geecon Reactive


Rejestracja

Rejestracja odbyła się szybko i bezproblemowo. Można było przyjść na ostatnią chwilę.



Catering

Od rana dla uczestników konferencji czekało lekkie śniadanko. W przerwach organizatorzy zapewnili nieograniczony dostęp do ciastek, soków oraz oczywiście kawy. Na lunch można było zjeść dwudaniowy obiad. Był trochę problem z organizacją. Zrobienie z sali kinowej stołówki nie jest najlepszym pomysłem.



After Party

Po zakończeniu wykładów oczywiście after party. Organizatorzy zarezerwowali stoliki w pobliskiej pijalni, gdzie można było się napić za darmo piwa.



Miejsce

Konferencja odbyła się Multikinie. Została zarezerwowana sala kinowa mogąca pomieścić około 150 osób. Dzień organizacji konferencji (piątek), bliskość do morza zachęcały do pozostania na weekend w Sopocie.



https://www.google.pl/maps/place/Multikino/@54.4452412,18.5655159,17z/data=!3m1!4b1!4m5!3m4!1s0x46fd0a8e1c0cdea7:0x1b1a86f3e6f2719f!8m2!3d54.4452412!4d18.5677046



Prezentacje

Prezentacje trwały 45 minut. Z jednej strony w tak krótkim czasie ciężko człowieka znudzić. Z drugiej strony w większości przypadków to była walka z czasem. Szczególnie gdy był prezentowany przykład z kodami. Zdecydowanie brakło czasu na rozszerzenie przykładów.



RxJava in legacy project

Według wielu uczestników najlepszą prezentacją była RxJava in legacy projects, prowadzona przez Tomasz Nurkiewicza. Był to w zasadzie pokaz kodowania na żywo. Całość aplikacji była raczej prosta, a części kodu niepowiązane z reaktywnością zostały zamockowane. Pozwoliło to oszczędzić czas na pokazanie tego co w reaktywności najważniejsze. Było to dobre, praktyczne uzupełnienie zdobytej wcześniej (w większości tylko teoretycznej) wiedzy. Kod źródłowy został udostępniony na twitterze.






Driving new features quickly and safely with Elm

Prezentacja języka Elm z przykładami– coś dla frontendowców. Jeśli jesteś front developerem i chcesz kompilować z elma do javascriptu, to ta prezentacja była dla Ciebie. Dla reszty dobre zwolnienie tempa i pokazanie, że na froncie też dużo się z reaktywnością dzieje :).



Going Reactive

Pierwsza prezentacja będąca zupełnym wstępem. Nie było nic o technologiach, frameworkach. Nie było przykładowego kodu. Pokazanie problemów, które rozwiązuje „reaktywnośc” na bazie analogii do dystrybucji leków.





MicroServices - Old Fish, New Fish

Prezentacja-show. Wykład historyczny o pracy, projektach Kirka. Pełen niezłych żartów, elementów rasistowskich, ksenofobicznych względem programistów Cobola. Dowiadujemy się, że projekty z głównymi paradygmatami mikroserwisów były tworzone w przeszłości przez autora prezentacji. Na podsumowaniu oczywiście padło stwierdzenie, że według większości mikroserwisy to przyszłość, ale istnieją problemy z debugowaniem, konfiguracją itd.





Reactor 3.0, a JVM Foundation for Java 8 and Reactive Streams

Prezentacja prowadzona przez leada i core commitera projektu Reactor. Wprowadzenie wraz z przykładami do Reactor 3.0. Na końcu było także kilka słów o nowej wersji Springa. Ciekawy obraz przyszłości projektu Spring.












Going Reactive

Ciekawa prezentacja wraz z przykładami. Gdzie i po co można wykorzystać reaktywność. Przykład z zastosowaniem w mierzeniu wydajności JVM. Kilka ciekawostek i tricków.





Reactive back-pressure with Vert.x

Wstęp do kolejnej biblioteki do budowania reaktywnych aplikacji. Większość prezentacji zajęły przykłady. Autor mógłby zrobić refactor kodu :) .





Reactive reality check: pushing the limits

Prezentacja firmy Codewise. Zalety i problemy z jakimi programiści spotkali się podczas developowania aplikacji reaktywnych na bazie ich produktów. Wykorzystywanie reaktywności w programowaniu aplikacji mobilnych (iOS).







Podsumowanie

Na konferencji nie brakowało znanych nazwisk. Zostały przedstawione wszystkie bardziej znane biblioteki do reaktywności (Reactor, RxJava, Vert.x). Moim zdaniem największą wadą tej konferencji było to, że niektóre tematy nie zostały rozszerzone. Czas jednej prezentacji to 45 minut. Zdecydowanie to zbyt krótko, żeby dobrze wgryźć się w temat z zaawansowanymi przykładami.

Organizatorzy mogli zrezygnować z niektórych prezentacji i rozszerzyć takie zagadnienia jak programowanie w Reactor 3.0 czy w RxJava.


Sunday, July 24, 2016

2016-06-30 – Polyconf 2016

Ucz się co najmniej jednego nowego języka programowania każdego roku. Poszczególne języki rozwiązują te same problemy na różne sposoby. Ucząc się różnych podejść jesteś w stanie poszerzyć swoje horyzonty myślowe i uniknąć zapadnięcia w rutynę.
Pragmatic Programmer: From Journeyman to Master, Portable Documents, tłumaczenie własne
Tym krótkim cytatem chciałem odpowiedzieć na pytanie ale po co programista Javy ma jechać na taką konferencję? jak również i podsumować moje oczekiwania względem Polyconfa.
Dzięki współpracy łódzkiego JUG-a z organizatorami wielu ciekawych konferencji, opłaceniu symbolicznej składki 😉 i łutowi szczęścia miałem okazję wziąć udział w tym nietypowym wydarzeniu, a moją relacją postaram się Wam pomóc odpowiedzieć na pytanie, czy warto pojechać tam za rok oraz które prelekcje warto zobaczyć na YouTubie!


Czas

Już sama formuła konferencji była dość zaskakująca: trwała ona trzy dni, jednakże prelekcje odbywały się tylko jednym torem. Niosło to za sobą dosyć przewidywalne niewygody:

  • nie dało się ominąć prelekcji, których temat nie był dla nas interesujący (o ile nie odbyły się na początku lub końcu danego dnia)
  • miało się poczucie, że sama konferencja mogła trwać krócej (a więc być tańszą zarówno dla organizatorów, jak i dla uczestników) realizując te same cele i niosąc te same korzyści
Jak i pewne nieco mniej przewidywalne zalety:
  • brak konieczności wyboru toru i przemieszczania się w trakcie przerw, wraz z zaskakująco niską ilością stanowisk sponsorów i partnerów (w liczbie 1, które to stanowisko po dniu pierwszym stało już opuszczone) niewątpliwie wpłynęło na ogromne zachęcenie uczestników do networkingu, niebywałe wręcz na tle innych konferencji jakie znam
  • pozory mylą i tematy wydające się nieciekawymi (lub zwyczajnie – niezbyt dobrze nazwany) bywały jednymi z bardziej interesujących w mojej skromnej opinii
Dodać do tego trzeba również dużą rozpiętość czasową na przestrzeni pojedynczego dnia – prelekcje odbywały się od 9:00 do 19:00 każdego dnia. 
Ostatecznie, z perspektywy człowieka dojeżdżającego do miasta konferencji, godziny konferencji oceniam bardzo dobrze (choć zachowanie skupienia do samego końca wymagało stałego uzupełniania poziomu kofeiny w krwiobiegu), podczas gdy wolałbym, gdyby sama konferencja została skrócona do dwóch dni.
Ostatnią, fatalną cechą temporalną konferencji był konflikt z Confiturą, która odbyła się w ostatni dzień trwania Polyconfa. Zostałem do samego końca, jednakże w sobotę żałobnie przywdziałem koszulkę z poprzedniej edycji warszawskiej konferencji 😭.


Miejsce

Konferencja odbyła się na WPiA UAM w Poznaniu. Porównując uczelnię jako miejsce odbywania się konferencji z zeszłymi Confiturami, poznański uniwersytet wypadł całkiem przyzwoicie. Szczególną cechą (na tle moich doświadczeń) sali wykładowej była matryca monitorów w miejscu ekranu dla rzutnika. Kosztem widocznych krawędzi monitorów (nie aż tak duży problem) mieliśmy bardzo wyraźny obraz bez zgaszonych świateł na sali. Krzesełka również dawały radę.
Ogólnie miejsce oceniam nieźle, chociaż, z oczywistych powodów, do krakowskiego centrum konferencyjnemu było mu daleko.


Catering

Organizatorzy zapewnili mobilny kawomat, owoce, relatywnie zdrowe obiady (sałatka z kurczakiem, kanapki) oraz bardzo dużo bezwzględnie niezdrowych przekąsek. Ogólnie coś dla każdego, ale ostateczną ocenę pozostawiam Wam 😉.


Networking

Tak jak wspomniałem, formuła konferencji inherentnie promowała dyskusje pomiędzy uczestnikami, gdzie zwykle duża ilość stanowisk sponsorów i wyjazdy grupowe (ergo: trzymanie się we własnych grupach) mocno je ograniczają. Udało mi się odbyć wiele interesujących rozmów z programistami o różnych tłach. Prelegenci siedzieli pośród pozostałych uczestników, dlatego dostęp do nich również był bardzo łatwy.
Ostatecznie nie jestem w stanie przekazać tu wyciągniętych wniosków, ponieważ to zawsze dosyć osobista kwestia, jednakże fajnie było wyjść z szafy 😉.


Cherry picks

Trzy dni konferencji implikują relatywnie dużą ilość wykładów, z których nie wszystkie mogą być interesujące dla każdego. Rozpoczynające konferencję warsztaty, niestety, nie zostały nagrane – jednakże warsztat nt. Reacta i Clojure był – w krótkich, żołnierskich słowach – niewypałem). Również dyskusje po wykładach są nieodzowną częścią konferencyjnego doświadczenia. Dlatego też poniżej przedstawię pokrótce wykłady, które uważam za najbardziej interesujące i warte obejrzenia.


Functional Thinking – Artur Czajka

Programowanie funkcjonalne wdziera się do wszystkich platform i języków już od kilku lat. Nasz kolega z JUG Łódź w krótkiej (wykłady trwały pół godziny) i soczystej formie pokazał niedowiarkom (😜), jak funkcjonalne myślenie upraszcza wyrażanie codziennych algorytmów w programowaniu, a także jak radzić sobie z sytuacjami pozornie trudnymi dla sfunkcjonalizowania.
Prelekcja od samego początku stanowiła świetny wstęp do trendu funkcjonalnego programowania widocznego wyraźnie w całej konferencji. Jej temat nieco pokrywał się z OOP to FP – Julia Gao, jednakże Artur, w mojej opinii, znacznie lepiej wypełnił swoje zadanie.


Dynamics of change: why reactivity matters – Andre Staltz

Skoro odbębniliśmy już functional, to czas na reactive...
Jednak na poważnie, prezentacja Andre Staltza jest następną w kolejności odbywania się na konferencji, którą z czystym sercem mogę polecić każdemu. W bardzo dopracowanej, zwięzłej formie odpowiada ona na tytułowe pytanie – dlaczego reaktywność jest istotna? Znajdziemy tu rozważania na temat rozwiązań typowych problemów w ujęciu language agnostic (co dla mnie było bardzo istotne – bardzo duża ilość prelekcji dotyczyła osobistych problemów egzystencjalnych JavaScripta, gdzie dla programistów innych języków ciężko było wynieść coś ciekawego...), w tym porównania np. z AOP (bardzo trafne wg mnie) czy elementy kognitywnego podejścia do tworzenia kodu (czyli jak myślę o swoim kodzie?).
Ogólny wniosek z prezentacji mógłby brzmieć: jest miejsce na programowanie reaktywne, jest i miejsce na programowanie pasywne. Andre stwierdził jednakże, że do wszelkich problemów powinniśmy najpierw podchodzić w sposób reaktywny... Z czym osobiście uprzejmie się nie zgadzam, jednakże gorąco polecam obejrzenie prelekcji samemu.


Oden – A Functional Programming Language for the Go Ecosystem – Oskar Wickstrom

Polyconf obfitował w prelekcje w różnej formie prezentujące różne ciekawe, nowe (i stare) języki programowania. Prezentacja nt. języka Oden jest jedną z nich, którą mógłbym polecić, ponieważ:
  • bardzo łatwo go wypróbować
  • została zaprezentowana przez jego twórcę
  • jest to język na platformę Go, co samo w sobie jest dosyć interesujące
Niestety, sam język nie sprawia wrażenia, jakbyśmy za kilka lat mieli spodziewać się napisanych w nim, ogólnie dostępnych aplikacji (a, tym bardziej: sami w nim pisali 💰) – słowo eksperymentalny jest tu kluczowe, ale dla wspomnianego celu poszerzania horyzontów, warto poświęcić mu trochę uwagi i spróbować napisać kilka prostych algorytmów w REPLu. Poeksperymentować. Ja miałem sporo zabawy 😊.
Z innych prezentacji tego typu wyróżniłbym jeszcze My Adventure With Elm – Yan Cui. Poznanie podstaw Haskella mocno otwiera umysł na nowe idee, a istnienie takiego-jakby-Haskella transpilowanego do JavaScriptu (gdzie, wydawałoby się, nie da się obejść bez mutowalnego stanu) jest co najmniej fascynujące!


The Linguistic Relativity of Programming Languages – Jenna Zeigen

Tzw. miękkie podejście do programowania, które niezbyt interesowało mnie na początku mojej kariery, utorowało sobie ostatnio drogę do centrum mojego zainteresowania. Dlatego też już sam tytuł prezentacji pani Jenny wzbudził moje ogromne zainteresowanie.
To, w jaki sposób poznane języki kształtują (i ograniczają) nasze myślenie o programowaniu – taki polski, alternatywny tytuł wybrałbym dla prezentacji. Ciężko napisać tu coś więcej, więc po prostu – polecam.
Ja zasadniczo się nie zawiodłem, chociaż w tym przypadku pół godziny na prelekcję to było zdecydowanie za mało (i to mimo, że prelegentka bardzo szybkim, wyraźnym mówieniem bardzo efektywnie wykorzystała dostępny czas). Bardzo chciałbym posłuchać o tym temacie więcej.
Po jednej z prezentacji, pewien uczestnik postanowił wykorzystać czas przeznaczony na pytania aby wyrazić swoje niezadowolenie z postulatów stawianych wobec swojego ulubionego języka (stety-niestety nie pamiętam jaki to był język, ale nic ciekawego). Wówczas pewna pani o wyraźnie zagranicznej proweniencji uprzejmie przerwała mu słowami przepraszam cię stary, ale czy ty masz jakieś pytanie, czy tak sobie gadasz? Nie mogłem wyrazić tego lepiej.
Jakież było moje zadowolenie, gdy chwilę później pani ta okazała się kolejną prelegentką. Wasze doświadczenia w tej kwestii mogą się różnić, ale Julia była jedną z najbardziej nietypowych prelegentek (w grupie obu płci), jakie miałem okazję słuchać.
Wyobraźcie sobie Zooey Deschanel z serialu New Girl opowiadającą o programowaniu. Mającą ADHD. Na amfetaminie.
Chociaż jestem przekonany, że Julia nie wspomagała się w nielegalny sposób przed swoim wystąpieniem, to np. narysowana przez nią laurka na cześć narzędzia strace sprawiła, że mimo odbywania się jej prelekcji pod koniec ciężkiego, drugiego dnia konferencji, nawet bez porcji kofeiny ciężko byłoby na niej przysnąć.
Sama treść prezentacji wydaje się być oprawiona nie do końca dobrym tytułem – dotyczyła ona głównie debugowania aplikacji na poziomie systemu operacyjnego, a dokładnie – Linuksa. Wydaje się być ona zatem ciekawa i trafna dla dosyć szerokiego grona programistów, jednakże to forma prelekcji wydaje mi się najbardziej intrygująca – a nie powiedziałbym tego o wielu wykładach w moim życiu 😉.


Ecto vs. ActiveRecord: A Tale of Two ORMs – Brad Urani

Porównania różnych podejść do tych samych problemów w różnych językach programowania powinny być, wg mnie, najbardziej akcentowanym tematem na takiej konferencji jak Polyconf. Z ubolewaniem stwierdzam jednak, że było ich zdecydowanie za mało, a część z obecnych było, w mojej skromnej opinii, zwyczajnie słabych, np. Becoming a Polyglot – APIs in 4 Languages, gdzie temat wydawał się być doskonały, ale wybór porównywanych języków był jednak zbyt... klasyczny.
Prezentacja pana Brada (którą na YouTubie możecie też znaleźć w nagraniu z innej konferencji) dotknęła tematu różnych podejść do warstwy dostępu dodanych. Znów, tytuł wg mnie jest niezbyt trafny, bo tytułowe, Elixirowe Ecto ORM-em nie jest, a Rubiowe ActiveRecord tylko w pewnym sensie, ale nie jest to ważne.
Ważne jest natomiast porównanie klasycznych podejść do dostępu do danych w programowaniu, gdzie chcieliśmy zakryć wszystko obiektami i zapomnieć, że ta baza tam pod spodem jest, więc stworzyliśmy sobie na to wyjątkowo przeciekające abstrakcje (po czym stworzyliśmy noSQLe, bo SQL przestał być wydajny...), a podejściem funkcjonalnym, gdzie dostęp do danych, jak wszystko, jest cudownie explicit...
Cóż, w zdaniu powyżej nie udało mi się zachować dziennikarskiej obiektywności. Na szczęście jestem programistą, a nie dziennikarzem, zatem niezależnie od waszych opinii polecam obejrzenie prelekcji Brada, a ja w tym czasie poczekam na podobną do Ecto bibliotekę na JVM-a 😉.


Podsumowanie

To oczywiście nie wszystkie dobre prezentacje z Polyconfa. Było też kilka fatalnych. Jednakże, jeśli chociaż jedna prelekcja na całej konferencji zmieni twoje podejście do programowania lub sprawi, że będziesz lepszym programistą (albo człowiekiem?), to znaczy, że konferencja była tego warta. To oczywiście zawsze wymaga pewnej aktywnej pracy oprócz pasywnego przyjmowania informacji. Trzeba przetestować tą nową bibliotekę, albo napisać coś na blogu, albo obejrzeć prelekcję jeszcze raz, albo podzielić się nią ze znajomymi.
Czy zatem warto było pojechać na Polyconfa? Warto. Czy pojadę za rok? Cóż, zdecydowanie lepiej sprawdzę kalendarz konferencji, gdyż opuszczenie Confitury było dość bolesne, a ja wolałbym mieć możliwość wybrania innego toru zamiast oglądania prelekcji o bardzo specyficznych problemach dotyczących tylko JS-a (z całym szacunkiem dlań, ale było go jednak za dużo).