Wednesday, May 3, 2017

Scalasphere 2017 by Jędrzej Nowowiejski & Sebastian Szyller

Beginning of March in Cracow brought us the 2nd edition of this conference. Scalasphere could be categorized as quite unusual as it's focused not on academic discussions, frameworks or languages themselves but rather on tooling. Tooling, which usually is not perceived as valuable itself (that's a shame). Fortunately, we know the truth, the truth that these 'secret friends' help us be effective and successful on a daily basis. All developers using such complex and rich languages as Scala will probably agree that without proper automated help they would spent significantly more time doing things that seem trivial in other languages. Frankly, it's amazing that this conference gathered around 200 people that are not only interested in this kind of software but also eager to spend their free time on improving these tools. Congratulations to organizers and kudos to everyone that participated! Let's start with a few words about the venue. Beautiful view on Wisła river and real palms growing inside a building were so impressive and made us curious what would come next. Big lecture-rooms, interesting sponsors’ stands and nice coffee service and we were finally prepared to absorb knowledge. To write about all talks that we attended would take too much space and time to read about, especially that all of them are available on the conference website/youtube (scalasphere.org/). Therefore, in this review we decided to focus on "the things", sthe things that we as participants are taking home (of course except sponsor's gifts;)). Bear in mind that it's very opinionated and does not cover everything that was presented at ScalaSphere, so we strongly recommend to check talks online by yourself.

  1. Scala compiler is slow, but this is not a curse. We believe that many new Scala coders are not aware that the way they are writing apps may radically change the compilation time. The great example are implicits. They are a really powerful tool that may be applied in many different contexts. However as one of the comics says: "With Great Power Comes Great Responsibility" and that's really true when it comes to implicits. Compiler is doing many things for you and one of them is resolution of implicits. It has to take time, if you have many of them in scope and you don't want to help compiler hunt them. Advice: always think about their scope, it will save a lot of CPU time. But that's not all that you can do to decrease compile time:)

    Secondly, there was a common theme that was present during different talks and that’s speed of the type parser. We all know that compilation consists of different subtasks like indexing or bytecode generation and the abovementioned type parsing is also one of such steps. Long story short, the role of the type parser is to analyse all types in the code and generate a syntax tree that can be later used to validate the type-safety of the code and then make the bytecode from it. It’s worth pointing out that this task is crucial because at the bytecode level JVM does not handle any types explicitly, but only implicitly through static type inference. This is particularly important in case of Scala as its generics are a lot more powerful than the Java counterparts and more widely used, when it comes to mainstream development. As a result, many people tried to come up with a solution that would speed up the overall compilation time e.g. via caching partial compilation results (Krzysztof Romanowski @RomanowskiKr from Virtus Lab), using distributed version of the Scalac compiler (Hydra compiler from @triple_quote - you can see that they already helped a lot Zalando to make their builds over a 3x faster) or trying to reinvent the type parser itself (Scala.meta). Let’s focus on the last case. It should be noted that at the moment there are three official type parsers in Scala - in Scalac (used in sbt, comes with the Scala distribution), in dotty-compiler (next version of Scalac that will come with Dotty i.e. Scala version 3.0) and in IntelliJ’s (or rather IntelliJ Scala plugin’s) implementation of the Scala compiler and presentation compiler. They do not differ substantially but unfortunately in all cases the type parsing step is quite slow. This is where Scala.meta comes to the rescue. This library is supposed to work on the meta-level of the language and fill the role of the Scala’s reflection API as well as replace or at least aid the procedure of the building the abstract syntax tree. But what is abstract syntax tree? Every language has types, keywords and syntax features that define how the code is written. AST is a tree representation of all those constructs and in the end it corresponds to a semantically consistent structure that represents our code. So far, Scala.meta is in quite early stages but it already shows promising results. Furthermore, rumour has it that JetBrains is planning to invest time in Scala.meta and rewrite its Scala plugin using that library. The only thing that is really needed are contributors so feel free to have a look at the git repository and drop a pull request or two!

  2. Find new usage of already existing simple language mechanisms. That point was inspired by Jon Pretty @propensive talk about contextual. Library that allows you to use String interpolation to validate your inputs. It already supports: some bash command’s syntax, emails, jsons, xml and some more. You can also use it to add your own implementations and that sounds great. To be honest we were sceptical about that as interpolators are applied during compilation phase, so it will work only for strings that you as developer put directly in the codebase. However (thanks to Kamil Owczarek) we found a way to use it in our daily work, we can use it when we want to write some tests with jsons and validate their content (at least on the json specification correctness level). Also bush support sounds promising and may be a true friend, which helps you to avoid unexpected problems in Production runtime as again it works during compilation, so you will know that you made a mistake, before you will try to run it! It took our some time, but we realized that the real greatness, which stands behind it, is to move runtime errors to compilation phase and solve them there. Genius! That conept is amazing. Now we are thinking, if we can’t use some other similar concepts to move further - really interesting homework :)
  3. Building community is really important and Scala have great one. After conference organizers invited everyone to join hackathon. What's more during this event people made some PRs for scalafmt etc. (Ólafur Páll Geirsson about hackathon). We think that's cool, that we are not only using, but also actively trying to help develop tools.

To sum up conference was really nice, great after party and comfortable venue. There was also chance to participate in sister ReactSphere that was taking part at the first day of ScalaSphere (where Jan Pustelnik and Kamil Owczarek from Lodz have their talk), but we were too interested in tooling and missed almost all talks there. Can we recommend this conference to other people - yes and no at the same time. If you didn't work with Scala, we have a mixed feelling if you should go there. You would see that Scala compiler is slow and people work on improving it, developing tools to help you with refactoring, debugging and dependency management, but this is still WIP. That may discourage you from trying to work with it. That's a mistake! You can do many things in this language (for sure more than in Java), but you have to be aware that Scala compiler is doing many things for you, just to let you reduce time of writing code and that comes with price. If you want to spend less time coding, compiler have to do more things for you and that's the tradeoff. You have to choose wisely what you prefer: lower compilation time or flexibility and powerful type system. From the other hand we can recommend this conference to all people who already worked with Scala. It was a real pleasure to be 'an ambassadors' of JUG Łódź at this conference (thanks again for tickets JUG!).

Jędrzej Nowowiejski & Sebastian Szyller

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.