Wednesday, May 4, 2016

April with a broad range of technologies @ JUG Lodz

April was a very intensive month in JUG Lodz. We had some guests from outside our city who performed very interesting presentation and exciting workshop on some new technologies. We also had some presentations made by our local specialists and generally the range of topics was so broad that you could find something interesting about deployments, programming and domain modeling.

Kubernates

On April 7th we had something what was not seen on JUG for a while - two presentations at the same day! First was Łukasz Zajączkowski who has shown us how easily you can create your own cluster with Kubernetes.

In the next presentation Michał Balinski (https://twitter.com/MichalBalinski) and Kuba Filipczak shared with us a lot of hints from their experience with every day use of Kubernetes.


So the "Kubernetes day" was full of interesting stuff to learn.

Java 8

On April 9th full day Java8 workshops was conducted by the winner of "JUG Lodz Best Presentation 2015" - Tomasz Nurkiewicz (https://twitter.com/tnurkiewicz). Tomasz had prepared a lot of interesting exercises which show participants whole range of new mechanisms introduced in Java8. You can find those exercises here : https://github.com/nurkiewicz/java8-workshop

Akka

In the middle of April we had a chance to listen about Akka directly form the source. Konrad Malawski (https://twitter.com/ktosopl) first give us an introduction to reactive stream ecosystem...

... and the next day give practical workshops about Akka Streams so we had a chance to listen to many interesting stories about origins of some parts of this framework.

Java 8 Streams

Couple days later we had another interesting workshops where we could train knowledge powerful mechanisms added to Java8. Damian Warszawski(https://twitter.com/DWarszawski) prepared a set of nice exercises on Java 8 Streams.

Cryptography

Next we dived into another useful area - cryptography. Marek Śmigielski explained many interesting nuances which you can came across when you are working in this area. We learn how secure or insecure are mechanism which we are using in our everyday life and how special production process tries to raise this safety.

Domain Driven Design

The last presentation in April was about Domain Driven Design and it was perfomed by Krzysztofa Muchewicz (https://twitter.com/KrzyMucha) from Torun JUG. Krzysztof talked about holistic approach to creation of IT systems and how he uses DDD in his daily work.

Workshops

In April we had some internal workshops where we could learn about functional programming in Java and Scala

And also we could participate in "Akka Introduction" workshops

What's Next

Monday, April 11, 2016

JUG Lodz in March - Invasion of Architectures

In March we had a chance to take a different perspective of our daily work. Because of many presentations about general conception of Architecture we looked at a IT systems as a whole with all consequences of how particular parts interacts with each other. Beside that we continued our cycle of Functional programming workshops.

Open Stack

On March 3rd Łukasz Zajączkowski presented OpenStack. This technology allow us to relatively easy manage a big cluster of computer and other resources (by resources I think about machines, we should not user word "resources" to describe people). You can read more about OpenStack on : https://www.openstack.org/.

12 Rules of Architecture

Kamil Porembiński (@kporembinski) started Architecture marathon with his talk about 12 rules of Architecture. It was very funny talk with a lot of life example from real life in which we could saw how lack of knowledge and experience may lead to funny (for some people) situations.

A journey through architectures...

The culmination of Architecture wave hit us on March 18-19. First Tomek Borek (@LAFK) took everyone on a journey through many architectures - from classical Enterprise one to the new approaches based on micro services. Tomek visited JUG Lodz second time during last 3 months - previously he showed great presentation about JVM Internals (more in -> Januray at JUG Lodz)

... & KATA

Theory is always useful and interesting but it needs practice to make you real craftsman

30 people from JUG Lodz gathered during one day workshops on March 19th to solve real life problems in full system scale. We rarely have a chance to look at a system as a whole during our daily jobs so this way everyone gathered very valuable experience.

Architecture KATA was conducted by Tomek Borek (@LAFK) (again!) and Jarosław Pałka (https://twitter.com/j_palka)

Functional Programming Workshops

JUG Lodz organizes two path of Functional Programming - one in Java and second one in Scala.

People seems to be happy!

What's in April

Friday, April 1, 2016

2016-03-31 Warsztaty Functional programming (Scala)

Warsztaty Function programming (Scala) 

Wstęp

Są czasami momenty w pracy programisty, gdy dostajesz olśnienia lub momenty gdy uświadamiasz sobie, że mało wiesz, chociaż wydawało Ci się inaczej.
Obie sytuacje są super uczuciem, bo chce Ci się uczyć więcej i więcej.

Funktory 

Programowanie funkcyjne, każdy o tym mówi jest o tym głośno na konferencjach i w projektach. Wcześniej z guavą teraz z java8, rxjava coraz łatwiej możemy programować funkcyjnie w javie. Scale traktowałem jako takiego wrapera na jave. Byłem na warsztatach z Haskala Artura Czajki, który opowiadał o monadach, funktorach ale w języku, który nie jest popularny czyt. pewnie komercyjnie nigdy ich nie użyje. Wczoraj cała ta wiedza wróciła  i przydała się na warsztatach scali. Scali, która już jest używana komercyjnie w projektach w Łodzi. 
(http://www.meetup.com/Java-User-Group-Lodz/events/229761679/) link do warsztatów - tam też link do github-a. 

Paweł wymiata

Jestem pod wrażeniem profesjonaliści warsztatów, które przygotował Paweł Włodarski, rzadko się zdarza widzieć tak dobrze przygotowane warsztaty nawet za $$. Paweł przekazał dużo ciekawej wiedzy przez te dwie godziny w ciekawy sposób. 
Jeśli człowiek zda sobie sprawę jak dużo czasu trzeba poświęcić, żeby przygotować takie warsztaty, że Paweł robi to za free i robi to lepiej niż na większości komercyjnych warsztatach i jeszcze jest poczęstunek, kawa i jeszcze jest to zrobione w ładnym miejscu ( hotel Hilton ) 
to tylko do głowy przychodzi: 

CHAPEAU BAS! dla Pawła 



Sunday, March 6, 2016

February 2016 at JUG Lodz

February started with a lecture from Tomasz Dziurko (https://twitter.com/TomaszDziurko) about recruitment in IT.

The presentation gave developers richer perspective on how their actions are being seen by companies they are want to join. And beside regular JUG participants we could some new faces from local "HR Industry" :)

CRDT

Two weeks later we had a chance to listen to a very interesting topic of Conflict-free Replicated Data Types. In the more and more distributed world problem of data consistency materializes more and more in day-to-day work of every developer.

The presentation was brought to us by two guests from abroad : Dmitry Ivanov (https://twitter.com/idajantis) and Nami Nasserazad­ (https://twitter.com/namiazad)

Ascii Doc

It is easier to implement solution when you know the requirements :) So we had a chance to see a great presentation about very interesting tool AsciiDoc which allows us to create very convenient documentation and track all Changes.

And this knowledge was brought to us by Jakub Marchwicki (https://twitter.com/kubem)

Functional Programming Workshops

Also in February we had w chance to participate in two workshops about Functional Programming conducted by Paweł Włodarski (https://twitter.com/PawelWlodarski)


What's in March

  • Łuaksz Zajaczkowski already told us about OpenStack so he will make appearance in the next episode :)
  • On March 10th Kamil Porembiński is going to perform a presentation about Architecture Meetup - 12 rules of Architecture
  • And the main event of March will be full day workshop conducted by Jarek Pałka and Tomek Borek: Architecture Kata on Meetup

Sunday, February 28, 2016

2016-02-18 - Lambda Days 2016

Zaczniemy od propagandy, czyli - ludzie, płaćcie składki JUGa, bo można wygrać wejściówki na konferencje :)

Wejściówkę wygrałem i pojechałem na Lambda Days do Krakowa, 18-19 lutego 2016 r. Prelekcje odbywały się równolegle w 3 salach Auditorium Maximum UJ.

Na początek...

...muszę wspomnieć o niemym bohaterze tego wydarzenia, czyli aplikacji do głosowania. Prosta, ładna - jeden ekran, trzy emotki (yay, meh, ney), które wdzięcznie pulsują pod palcami kolejnych uczestników. Po zakończeniu każdej prelekcji przed przed drzwiami czekał człowiek z obsługi z tabletem w ręku. Wyniki nie były jawne, ale widać było, że dużo osób oddaje głosy i kosztuje ich to minimum wysiłku.

Pakiet startowy, oprócz identyfikatora, obejmował płócienną torbę w logiem, stos ulotek, cukierki z masy cukrowej z małą lambdą oraz ołówek. O papierowy program trzeba było poprosić w rejestracji, naraz tylko na jeden dzień. I od razu nieaktualny, ale to uroki druku.

Przybyłem na miejsce kilka minut po otwarciu rejestracji, więc było mi dane zobaczyć jak ktoś na szybko prasuje narzutę na stoisku sponsorskim, a korytarze powoli zapełniają się uczestnikami.

Wszystkie prelekcje były nagrywane, a plotka głosi, że powinny pojawić się w ciągu miesiąca. Zobaczymy! Pierwsze zaczęły się już pokazywać na YouTube, więc polecam odwiedzić stronę konferencji, a potem wyszukać tytułami prelekcje.

Aktualizacja: filmy pojawiają się na stronie konferencji! Wystarczy wejść w profil prelegenta, by zobaczyć udostępnione materiały.

Pierwszy dzień...

...rozpoczął się krótkim wstępem, opóźnionym o 20 minut, ale i tak zdążyli przejść przez wszystkie slajdy powitalne.

Wstępniak płynnie przeszedł w pierwszy keynote - Propositions as Types. Philip Wadler, po wstępie historycznym opowiadał o paralelach między logiką a programowaniem (a dokładniej prosto typowanym rachunkiem lambda), które zostawili nam po sobie Haskell Curry i William Howard - w skrócie - program jest tezą, a jego wykonanie dowodem. Jednym z wniosków wykładu było to, że są języki programowania, które ktoś odkrył czy tez zbudował wokół odkrycia (matematycznego), a są też takie, które ktoś wyssał z palca, jak Java czy C++. Te pierwsze są lepsze. Nazwiska do zapamiętania (i prace do do przeczytania): Hilbert (Entscheidungsproblem), Gödel (Incompleteness, Recursive functions), Church (Lambda calculus), Turing (Turing Machines). Na zakończenie dowiedzieliśmy się, że najnowszym problemem, nad którym pracuje też sam Wadler, są typy sesyjne, opisane po raz pierwszy przez Kohei Hondę w 1993, a wywiedzione z logiki linowej (Jean-Yves Girard, 1987). Jest już nagranie!

A brief history of history of programming languages: sprawdźcie kto stworzył ALGOLa, a następnie przeczytajcie przynajmniej po jednej publikacji każdego z autorów. Jeszcze tego nie zrobiłem, ale najwyraźniej warto!

The mysteries of Dropbox: testowanie synchronizacji plików jest trudne - autor QuickChecka, John Hughes, zrobił to z kolegami za pomocą laptopa, kilku maszyn wirtualnych i QuickChecka dla Erlanga. Nie było to robione na zlecenie Dropboksa! Polecam przeczytać opis metodologii, bo omawia, jak przetestować złożony system za pomocą losowych danych. Tak, znaleźli kilka przypadków brzegowych i zgłosili je Dropboksowi.

Zaliczyłem dwie sesje o Data Science, które pokazały jak powinno się promować DS - za pomocą ciekawych pytań! Pierwsza z nich zaraz po lunchu: A board game night with geeks i pytanie: czy można zremisować w Quarto? Quarto to gra planszowa, w której trzeba na planszy 4x4 ułożyć w rzędzie, kolumnie lub kwadracie zestaw klocków, które mają wspólną cechę. Jeśli użyjecie SAT solvera, to dowiecie się, że owszem, można w tej grze zremisować. Kod i prezentacja są dostępne na GitHubie. Tych samych metod używa się, m. in., przy planowaniu rozkładów, testowaniu i sekwencjonowaniu DNA.

W następnej prelekcji - Teaching functional programming to n00bs in mobs - Rob Martin przekonywał, że powinniśmy uczyć wszystkich juniorów programować funkcyjnie! Dlaczego? Bo nauczyć ich funkcyjnego myślenia jest prościej niż seniorów, trudno jest zatrudnić dobrego seniora, a ci seniorzy, których już masz, będą się lepiej rozwijać, jeśli będą mogli kogoś uczyć. Do tego dwie lektury podane przez prelegenta: Why Functional Programming Matters i Why "Why Functional Programming Matters" Matters. Druga część prelekcji była pochwałą dla “mob programming”. Programowanie grupowe - 4-15 osób siedzi nad jednym problemem, tylko jedna klawiatura i myszka, jeden (duży) monitor. W takim środowisku powstaje lepszy kod (prezentacja z perspektywy roku) i sprzyja ono równomiernemu rozwijaniu kompetencji - w grupie większość stanowią juniorzy. I jeśli chcecie rozumieć funkcyjne koncepcje lepiej, to uczcie się Haskella ;)

Byłem na dwóch “małych” prelekcjach. Pierwsza, Elixir and Elm - the perfect couple, wychwalała duet Elm + Elixir, zaznaczając jednocześnie, by starać się wybierać narzędzie (język, framework itd.) do potrzeb, zamiast używać zawsze złotego młotka. Druga, Embracing change - how to introduce Clojure into your company technology stack seamlessly, traktowała o tym, jak wprowadzić Clojure, albo jak twierdził autor - dowolną nową technologię, do swojej organizacji. Krok pierwszy: zdobądź pierwszych wyznawców, krok drugi: wybierz mały, niekrytyczny projekt, krok trzeci: ???, krok czwarty: profit, nowa technologia została wprowadzona. Prelegentowi się udało, a prostym projektem był serwis do healthchecku, który odpowiadał tylko “żyję!”, jeśli serwer działał.

Na koniec pierwszego dnia odbyło się 5 lightning talków, które niestety przegapiłem, bo dołączyłem do grupy dopytującej Roba Martina, jak np. mierzyć wydajność pojedynczych pracowników w takim programistycznym tłumie. Po pierwsze: nie rób tego, używaj retrospektyw żeby dawać sobie wzajemną informację zwrotną, przy czym jeśli jesteś zwierzchnikiem, to najlepiej nic nie mów, żeby niechcący nie uciszyć jakiejś inicjatywy (prowadzącemu się to raz zdarzyło). Po drugie: jeśli masz nóż na gardle, to zrób 360 Review.

Afterparty było w The Legend Music Club.

Drugi dzień...

...otworzył moim zdaniem najsłabszy z 3 keynote’ów - Things that Matter autora Siedem języków w siedem tygodni. W skrócie: języki, których autorom przyświecała jakaś idea i którzy pozostali jej wierni są fajne (i o nich poczytacie w książce, jest Haskell!), a Java jest zmyślona.

Pierwsza zwykła prezentacja, na którą trafiłem to The Zen of Akka prowadzona przez Konrada Malawskiego z Typesafe’a (teraz Lightbend). Zen Akki składa się z 13 punktów, których jednak nie pokuszę się o szczegółowe omówienie i będziecie musieli wyciągnąć je z nagrania, kiedy się ukaże. Kilka przykładów to:
  • Używajcie niemodyfikowalnych wartości i unikajcie jak ognia modyfikowalnych zmiennych; 
  • Unikajcie javowej binarnej serializacji - użyjcie Kryo, Thrifta, ProtoBufa albo czegokolwiek innego, co nie jest domyślnym mechanizmem; 
  • Akka to nie framework - to zestaw narzędzi - można z niego wybrać swoje ulubione części i nie wkładać do projektu całości. 
Do poczytania - rozproszone strumienie dla Akki, o których prowadzący wspomniał w odpowiedzi na jedno z pytań po prezentacji: Intel Gear Pump.

Druga prezentacja tego dnia to druga sesja z Data Science: The F#orce awakens, czyli kto jest najważniejszą postacią w Star Wars i dlaczego epizody I-III mają kiepskie oceny? Trzeba dokonać analizy grafu stworzonego ze sparsowanych scenariuszy Gwiezdnych Wojen. W samej analizie pomaga nam język R. W epizodach I-VI najważniejszy jest Obi-Wan, a jeśli dołożymy VII, to jest to C3-PO! Ale to tylko wierzchołek góry lodowej, dużo więcej znajdziecie na blogu autorki: The Star Wars social network, Star Wars social networks: The Force Awakens. W prawdziwym życiu tych samych technik używa się do analizy rozmów online przez czaty, e-maile, przy pracy z siatkami zaopatrzenia czy też do analizy sieci biologicznych.

Następna prezentacja, Getting started with Frege [czyt. frige], zachęcała do zapoznania się z implementacją składni Haskella dla JVM. Za przykład posłużyła prosta aplikacja do walidacji JSONa. Język kompiluje się do Javy, nie do bytecode’u. Chciałbym coś więcej o tym powiedzieć, ale sama implementacja jeszcze nie jest w pełni kompatybilna, więc niestety nie będzie mi dane wprowadzić jutro Haskella do projektu niskim kosztem ;) Można oczywiście obserwować projekt na GitHubie.

Kolejną była prezentacja dwóch ludzi z TomToma, którą mogliście zobaczyć już na spotkaniu JUGa - Practical demystifcation of CRDT. CRDT to Conflict-free Replicated Data Type. Tło prezentacji to usługa synchronizacji dla danych z nawigacji (np. ulubionych miejsc, zapisanych tras). Magia tych typów polega na tym, że obsługują przemienną i przechodnią operację łączenia, dzięki czemu nie ma znaczenia w jakiej kolejności nakładane są zmiany - wynik będzie zawsze taki sam. Omówili typy danych, których używają, dochodząc do tego, że musieli wymyślić własny, bazujący na OR-Set (Observed/Removed Set), OUR-Set (OR-Set + Updated). Taki zbiór trzyma w sobie listy utworzony, zaktualizowanych i usuniętych obiektów. Jednym z problemów przy używaniu CRDT jest brak niezawodnego zegara, więc kompromisem jest taka priorytetyzacja dostępnych czasów: zegar GPS > czas serwera > czas lokalny+1 > czas lokalny. Prelegenci powiedzieli, że byli na prezentacji Johna Hughesa, więc dowiedzieli się też o nowych sposobach, w jaki mogą ten system przetestować. Post, który zainspirował prelegentów do zgłębienia tematu: CRDTs for fun and eventual profit.

Ostatnia zwykła prelekcja to Purely Functional Web Apps, która opowiadała historię aplikacji internetowej napisanej w Haskellu i Elmie. Potrzebowali aplikacji, która na podstawie historii pull requestów z ich GitLaba ekstrapolowała potencjalną długość trwania review w zależności od ilości kodu. Do części serwerowej użyty został zestaw narzędzi Haskell Servant. Po stronie Elma za to pomocny okazał się jego Time Traveling Debugger, który używanie wygląda jak pokaz magiczny. Padło też zdanie, że powinniśmy nauczyć się Haskella, bo dzięki temu staniemy się lepszymi programistami.

Ostatni keynote - The Truth about Types Bartosza Milewskiego - mówił o teorii kategorii. Kategoria to byt matematyczny, który składa się z obiektów, przekształceń między nimi (strzałek) i operacji łączenia ze sobą strzałek. Dowiedzieliśmy się, że tak jak istnieją paralela między logiką i rachunkiem lambda, tak można wykazać paralelę między nimi i teorią kategorii. Prezentacja była mocno abstrakcyjna. Przeszliśmy przez Kategorię Zbiorów (Set Category), intuicjonistyczną logikę, kontynuacje, a zakończyliśmy stwierdzeniem, że skoro istnieją analogie między tymi trzeba dziedzinami (logika, rachunek lambda, teoria kategorii), to może istnieje jakaś większa abstrakcja, która obejmie je wszystkie? Tym właśnie zajmują się teraz badacze. Niestety nam, zwykłym zjadaczom chleba, pozostaje czekać.

Koniec!


Wyjazd uznaję za udany, konferencja bardzo mi się podobała. Mam nadzieję, że będę mógł pojechać na nią również w przyszłym roku :)

Sunday, February 7, 2016

Happy New Year - January 2016 @ JUG Lodz

Modularity and OSGI

We started 2016 by having a chance to listen an interesting lecture from true IT Industry veteran - Milen Dynkov (https://twitter.com/milendyankov). Milen spoke about many good ways of achieving modualarity in the project and later during great live demo shown practical implementation of his concepts with usage of OSGI.

You can watch the full presentation here :

Learning Functional Programming

Next week we switched to Functional Programming theory and a question - what is the best way to learn this approach? Paweł Włodarski (https://twitter.com/pawelwlodarski) described some practical and theoretical aspects of FP - but just by listening FP can not be mastered - that's why soon a full cycle of FP workshops will take place in the city of Lodz - material for the first one is ready FP in Java8 - workshop 1 material

Back to reality - Java memory model

In the last week of January Tomek Borek (https://twitter.com/LAFK_pl) brought us back to earth with his great presentation about Java Memory Model where he described with many details how physical architecture influences computations and our daily work.

What next

When I'm writing those wrods Tomek Dziurko has already performed his presentation about recruitment in IT and on February 16 we had a chance to see two great presenters from Tomtom : http://www.meetup.com/Java-User-Group-Lodz/events/228119198/. After their presentation on JUG Lodz Dmitry and Nami are going directly to Lambda Days conference where they also perform as presenters.

Sunday, January 3, 2016

JVM Armageddon just before Christmas (and more ) - December @ JUG Lodz

Take a look at the picture below to feel the magic of December and then you can move on to read about presentations

JVM Armageddon

At the very beginning of the last month of 2015 we had a pleasure to listen to very experienced speaker - Jaroslaw Palka @j_palka - who told us many interesting facts about JVM internals.

So we had a chance to see some parts of JVM source code where exceptions are literally swallowed and hear stories about debug sessions "till 4 A.M."

Haskell Continues

This time on Haskell Workshops Artur Czajka @tr00per87 was teaching about Functors, Monads and Monad transformers.

Haskell is a very good way to learn Functional Programming - more people should try it

For the first time in Lodz - Security Workshops

And for the first time in Lodz we had a workshop about general topic of applications security. Marcin Mela from HARMAN give us many examples how insecure web applications can be, which cryptographic function is safe and how easily it is to find on google someones private cameras streaming live content!

In the second part we had one hour to hack small web application and find all security holes.

Spark & Dataframes

We also had a chance to learn about "bridge between Programming and Data Science" - Dataframes - during workshops prepared by Paweł Włodarski @PawelWlodarski

This workshops was organised in Business Link where we receive a free room with wifi!

Lambda Architecture

The last presentation in 2015 was made by Kamil Owczarek and the topic was "Lambda Architecture"

So we saw an alternate application architecture centered around Big Data

2016

We are going to start with :

Everyone's welcome!