Kosmiczny soft

Tegoroczną konferencję otworzył Todd Montgomery programista z NASA, który podzielił się własnymi przemyśleniami i dziesięcioletnim doświadczeniem zdobytym przy implementacji „kosmicznego” softu.

Mr. Todd zwracał uwagę, że kluczem do sukcesu (w tym przypadku sukces = wartościowe oprogramowanie) nie jest wybór framework’a, super-fancy modnego w danej chwili języka programowania, tylko zrozumienie domeny, zaangażowanie i poczucie odpowiedzialności za kod, który tworzymy, modelując wybrany wycinek rzeczywistości.

Najlepsze narzędzia (bez umiejętnego i kreatywnego ich wykorzystania) nie wystarczą artyście do stworzenia pięknego dzieła sztuki. Ta sama zasada dotyczy modelowania-kodowania, które — podobnie jak na przykład rzeźbiarstwo  też jest sztuką.

Pomijając kwestię „dobrego smaku”, pojawiają się aspekty materialne koszt rozbicia międzyplanetarnej sondy spowodowany bug’iem w kodzie jest troszkę większy niż uwzględnienie reklamacji klienta, którego zamówienie na skarpetki w cyber-renifery zaginęło w czeluściach logów, po „zjedzeniu” wyjątku z systemu bazodanowego. W przypadku pewnej grupy projektów (na nasze szczęście niewielkiej) od jakości oprogramowania zależy ludzkie życie.

 

Ciekawym wnioskiem prowadzącego (potwierdzającym moje własne przemyślenia) było stwierdzenie, że w realizacji projektów informatycznych dotyczących specyficznych domen najlepiej sprawdzają się małe, 2-3 osobowe zespoły.

Podsumowując kosmiczne wystąpienie: twórzmy przemyślany, czytelny i wartościowy kod, z którego bylibyśmy dumni, a jednocześnie czulibyśmy się za nasze dzieło odpowiedzialni. Do propagatorów sztuki w świecie technologii, grupy ludzi przywiązujących dużą wagę do jakości, na pewno zaliczyć można autora poniższej sentencji. Zwieńczyła ona występ pana Montgomery’ego.

Powrót na Ziemię – dockery, DDD oraz reaktywne kodowanie „na żywca”

Po kosmicznym i filozoficznym wstępie nastąpił powrót na planetę Ziemia. Zaczęła się seria technicznych, bardziej specjalistycznych wykładów. Tak jak w ubiegłym roku, kolejne prezentacje podzielone zostały na trzy równoległe ścieżki.

Na pierwszy ogień wybrałem prezentację dotyczącą bardzo popularnej ostatnimi czasy techniki-technologii określanej jako „reactive programming”. Mark Heckler w prezentacji „Full-stack Reactive Java with Project Reactor & Spring Boot 2” na oczach konferencjowiczów prezentował reaktywne narzędzia i „ficzery” biblioteki „Project Reactor” (https://projectreactor.io) oraz jej integrację z nowym Spring Boot’em… „The Silence of the Lambdas”. 🙂

W kolejnej prezentacji przedstawiciel Oracle opowiadał o nowościach i usprawnieniach dostępnych w ostatnim wydaniu Javy 8 Enterprise Edition: JAX-RS w wersji 2.1 z nowym, „reaktywnym” API, HTTP/2, asynchronicznych eventach oraz lepszym wsparciu dla serializacji-deserializacji Object-JSON (JSON-B 1.0). Jak widać na załączonym poniżej obrazku opowieść o wersjach, nazwach, skrótach i skrótowcach nazw API oraz bibliotekach nie przyciągnęła zbyt wielu słuchaczy.

Czwarta prezentacja  „Deep dive and learn about your Operating System” przeniosła słuchaczy na niższy poziom – w świat systemu operacyjnego, zasobów i izolacji procesów. Prowadzący wyjaśniał tajniki działania docker’ów, rocket’ów, xen’ów i virtualbox’ów oraz omówił różnice pomiędzy kontenerami a maszynami wirtualnymi. Wirtualizacja i kontenery to obecnymi czasy – w świecie microserwisów i continuous delivery technologie z grupy „#must_have, #must_know”. Poza ciekawym tematem Adam Quentin pochwalił się bardzo efektowną formą prezentacji.

W ramach poobiedniego spacerku odwiedziłem stoiska tegorocznych sponsorów, uzupełniając roczny zapas długopisów oraz wzbogacając kolekcję spinner’ów o nowe okazy. 😉 Na deserek zaserwowałem sobie prezentację z serii „live coding”, która dotyczyła mojego ulubionego podejścia do tworzenia oprogramowania — DDD. Aki Salmi na przykładzie tworzonego w trakcie prezentacji kodu objaśniał zagadnienia związane z użyciem popularnych w świecie DDD wzorców: CQRS (Command-Query Responsibility Segregation) oraz Event Sourcing.

Na zakończenie pierwszego dnia konferencji przed tradycyjną pielgrzymką do pubu w celu podsumowania dnia z kuflem rzezanego Pan z NASA w towarzystwie kolegi (określającego siebie tytułem „performance gangster”) opowiedzieli o projektowaniu ultraszybkich protokołów komunikacyjnych.

Day 02

Głęboko techniczne prezentacje o: NoSQL’owych bazach danych (CosmoDB), Hibernate’owych sztuczkach nieznanych przeciętnemu ORM’owcowi, użyciu biblioteki Akka Streams w Javie 8 oraz wpływie architektury microserwisowej na proces tworzenia oprogramowania drugi dzień konferencji urozmaiciły trzy rewelacyjne prezentacje z serii „case study”.

To Protect and to Serve

Zbudowany niewielkimi nakładami finansowymi system monitoringu oparty o Raspberry Pi oraz algorytm rozpoznawania obrazów dostępny w serwisach AWS przyczyniły się do ujęcia osiedlowego włamywacza. Mark West z imponującą dbałością o detale, w interesujący i zabawny sposób, przedstawił wielowymiarową (koszty, wydajność, łatwość użycia) analizę wykonanego projektu oraz zademonstrował sposoby integracji z serwisami AWS.

DJ Clojure

Czy można kodować rave’owe bity? Czy „notatnik” może zastąpić DJ-ską konsolę? Odpowiedź w nagraniu poniżej.

DJ Clojure from Sniegu on Vimeo.

Skolioza a moduły na pasie Oriona

Jeżeli Twój kręgosłup woła o pomoc, a Ty masz dosyć oglądania kodu z perspektywy krzesła, to powinieneś zainteresować się rozwiązaniem Jarka Ratajskiego. W oparciu o technologię VR (webvr, aframe) zbudował on system umożliwiający wirtualne spacery wśród klas, podróże pomiędzy galaktykami modułów. Twój kod będzie dostępny „dosłownie” na wyciągnięcie ręki. Omawiany system jest narzędziem służącym do statycznej analizy kodu. Zależności pomiędzy klasami/modułami zwizualizowane zostały w wirtualnej przestrzeni poprzez analogię do rozmieszczenia planet, gwiazd i galaktyk w kosmosie.


Last, but not least

Konferencję zakończył Kevlin Henney wystąpieniem pod tytułem „Full Stack Developer”. Henney przedstawił własne przemyślenia dotyczące szeroko rozumianego procesu wytwarzania oprogramowania. Prezentację odebrałem jako zbiór luźnych myśli i anegdot ze świata IT.

Epilog

Konferencja pokazała, że świat IT nadal podąża w kierunku „programowania reaktywnego”. Dobrze mają się także techniki DDD, a świat microserwisów często-gęsto korzysta z dobrodziejstw kontenerów. Jeżeli miałbym określić tegoroczne prezentacje, to użyłbym zwrotu „bardzo poprawne”. Zabrakło mi wyjątkowo utalentowanych mówców, showmanów, którzy – niezależnie od tematu wystąpienia — potrafią podładować u słuchacza akumulatory pasji i wzbudzają chęć eksploracji nowych obszarów koderskiego świata. Wydaje mi się, że widoczny był także brak ubiegłorocznego złotego sponsora w tym roku nie było już „chillout room’u” z japońskimi pilsami, nie zorganizowano także imprezy integracyjnej (rok temu był nią nocny rejs po Wełtawie). Pomimo tych drobnych mankamentów, konferencję uważam za udaną, a elementy socjalno-integracyjne z powodzeniem zorganizowaliśmy we własnym zakresie. 🙂