GeeCON Prague 2016, den 2

Zúčastnil jsem se dvoudenní Java vývojářské konference GeeCON Prague. Možná se mýlím, protože nemám potřebný rozhled a informace, ale GeeCON mi přijde jako momentálně nejlepší Java konference v Praze — má mezinároní spíkry (všechny přednášky v angličtině), slušné renomé a odpovídající podporu sponzorů.

Pokud máte tip na jinou Java/vývojářskou konferenci (obdobného rozsahu), dejte mi vědět v komentářích, ať vím, kam vyrazit příští rok.

Pátek

O prvním dni konference jsem se rozepsal v článku GeeCON Prague 2016, den 1. Dnes budu pokračovat druhým, pátečním dnem, který se mi celkově líbil víc. Což může být subjektivní — mě udělaly radost dvě výborné přednášky o Clojure, z nichž jedna pro mne byla vrcholem celého GeeCONu.

A kromě Clojure zde byla také výborná přednáška o Microservices a pokračování tématu Graal/Truffle.

How to Bake Reactive Behavior into Your Java EE Application

Přednáška Ondreje Mihályi (@OMihalyi) o reaktivním programování (RP) mne moc neoslovila, i když nebyla špatná. Přiznám se, poslední dva tři roky jsem nesledoval aktuální trendy, takže jsem možná vedle, ale tyhle rective záležitosti mi přijdou jako momentální hype.

V úvodu přednášky mi chybělo nějaké “zorientování se” pro ty z nás, co nejsme v reactive doma. Uvítal bych nějaké diagramy, který daný design osvětlí. A naopak bych oželel “programování ve slidech” (powerpoint programming).

Jinak měl Ondrej rozumný přístup — používat RP tam, kde to má smysl a pomocí refactoringu ho aplikovat na stávající design. Toho se týkalo také demo: na počátku byla aplikace (tuším nějaké vyhledávání letů) napsaná v JSF a JAX-RS, v níž se sekvenčně, ve vláčku, volali tři webové služby.

Během refactoringu došlo na zapojení WebSocketů a Event Busu v Payara Micro. S tou Payarou jsem to moc nepobral — zrovna tady bych ocenil nějaký komponent diagram. Odnáším si z toho, že Payara tam byla hlavně kvůli CDI Event Busu. Pokud to tak bylo, tak v realitě by stálo za to tam mít něco event-minimalistic, případně použít služby aplikačního serveru (pokud je poskytuje).

One VM to Rule Them All

Přednáška Jakuba Podlešáka (@japod) a Jana Štoly pokračovala v tématu čtvrteční key note — Graal VM a Truffle. Pánové to měli sladěný nejen tematicky, ale i outfitem, zkrátka bylo hned jasný, kdo dělá v Oracle Labs:

Obsahově byla přednáška zajímavá, ale pro mne ne moc záživná — přece jenom, kompilery a podobná havěť byly pro mne na škole jen nutné zlo. Takže byť stromy jsou velmi zajímavá algoritmická struktura, tak vytváření a manipulace AST velká zabava není.

Kluci se v prezentaci střídali, což trochu rozbilo plynulost a soudržnost. Začali prezentací Graalu a tím, jak rychle v něm běží jazyk R. Zkrátka R jako Rychle :-) Pak bylo něco o symbióze R a JavaScriptu (import funkce z jednoho jazyka do druhého).

A pak přišlo to AST… teda Truffle. Přiznám se, že po těch pár týdnech se mi toho už dost vykouřilo z hlavy a to i když se dívám do mind mapy (viz níže), kterou jsem si psal. Takže v krátkosti, viděli jsme jak napomoci parsování pomocí anotace @Specializaction a parametru guards. Pak tam bylo taky něco o optimalizaci a partial evaluation. No, a víc už vám k tomu neřeknu.

Thirty Months of Microservices. Stairway to Heaven or Highway to Hell?

Jednoznačně největší show celého GeeCONu. Holanďan Sander Hoogendoorn (@aahoogendoorn) to umí pořádně rozjet! Už jenom to, že jako cizinec je schopný do své prezentace naprat několik (smysluplných) slidů z A je to!

Sander začal obligátním “monoliths are bad”, aby pak pokračoval bojovými zkušenosti z implementace microservis. V jedné větě by se jeho příspěvek dal shrnout: “microservices are not easy”.

Sanderovi zkušenosti se dají shrnout do následujících bodů:

  • Microservices require evolutionary architecture.
  • Start with guiding principles — implement business process, avoid transactions, components own their own data/storage.
  • RESTfulness is not easy — Postel’s Law, have conventions (e.g. URI).
  • Testing — everything, fail quickly, automation, contract testing (JBehave).
  • DevOps is not easy — Infractructure as Code.

Hlavní poselství přednášky? Tak samozřejmě rozumné “microservices are not for everyone”. Rozumné proto, že cca poslední 3 roky se s microservices roztrhl pytel — prostě klasický hype (naštěstí už to opadá) — a opět to není žádná silver bullet.

TDD: That’s not What We Meant

Zklamáním pro mne bylo vystoupení Steva Freemana (@sf105). Steva mám zapsaného jako spoluautora frameworku jMock, bohužel, dnes už mrtvého, který jsem měl hodně rád (verzi 2). A také jako spoluautora oceňované knihy Growing Object-Oriented Software Guided by Tests. Takže jsem čekal hodně.

Steve byl jeden z mála nativních anglických speakerů (je z Londýna) a jak to tak někdy bývá, nebylo mu vůbec rozumět. Mám na akcenty docela ucho, ale řeknu vám, zlatý irský, nebo skotský akcent :-)

Zklamaný jsem byl hlavně proto, že Stevova přednáška byla nudná, unylá. A přitom tam bylo pár skrytých rubínů a smaragdů. Třeba o profláknuté slavné knize Kenta Becka Test Driven Development:

“It’s worth re-reading. Nothing much there for the 1st read. But, so much there… after couple of years!"

Steve hodně kritizoval praktiku, kdy se testy dělají jen na oko — “Look, we have tests!". Nazýval to “Test-Driven Theatre”.

Nejvíc se mi líbil tenhle slide:

Doing Data Science with Clojure: the Ugly, the Sad, the Joyful

Přednáška Simona Belaka (@sbelak) pro mne byla příjemným překvapením. Prezentaci jsem si vybral hlavně proto, že mám pro Clojure slabost (i když ho už pár let zanedbávám).

Simon mluvil o Clojure hlavně ve vztahu k Data Science. Proč je Clojure v této doméně ideální jazyk? V Data Science jsou různé oblasti, požadavky a většina používaných jazyků je řeší jenom částečně.

Infrastruktura se dá dobře řešit v Pythonu, nebo ve Scale. Modelování zase v R, nebo (opět) v Pythonu. Pak tu máme čištění a přípravu dat. A nakonec — a zde Clojure exceluje — manipulace se strukturou. A Clojure pokrývá všechny tyto aspekty. No a samozřejmostí (u všech jmenovaných jazyků), je Live Programming, které poskytuje REPL.

Dalším silným argumentem pro použití Clojure v Data Science je horká novinka: clojure.spec. Upřímně, neřeknu vám, co to je — budu si to muset pořádně nastudovat. Podle Simona se to dá použít na “dotazovatelný popis dat” (queryable data descriptions) a ve spojení s Apache Kafkou (distributed streaming platform) je to husto-krutý. Opět nevím, o čem píšu, je to na mne moc raketová věda. Teda datová.

Na závěr byly dvě zajímavé otázky z publika. Zaprvé, jak je na tom Clojure s unit testy. Odpověď — Clojure není TDD-oriented. Což mimochodem říkal už tvůrce jazyka Rich Hickey, který daleko radši debugguje. Mnohem vhodnější je spec.

Druhá otázka se týkala toho, jak se naučit Clojure. Odpověď mi přišla brilantní — na Clojure se dá dívat jako na funkce v Excelu. Takže v prvním kroku si zkusit problém “naimplementovat”, či ukázat v Excelu a pak totéž jako funkci v Clojure. Jednoduché, geniální.

Clojure, clojure.spec and Beyond

Pozor, famfára, tum tu du dú!! A cena za nejlepší přednášku jde za Carin Meier (@gigasquid). Za mne jednoznačně a bez diskuze. Moc pěkně provedená, moc pěkně přednesená a zatraceně zajímavá.

Carin je autorkou knihy Living Clojure, dle svých slov píše v Clojure na denní bázi a Clojure v jejím podání je ten nejvíc cool a sexy jazyk, na který letos narazíte… víc cool & sexy už je jen clojure.spec. Ehm, použil jsem právě v jedné větě 4x slovo Clojure?!?

No, dost chvály. O čem že byla ta přednáška? Carin si vzala za základ dětskou knížku Doktora Seusse One Fish Two Fish Red Fish Blue Fish a pomocí clojure.spec se jala čarovat. Programy jako stvoření, která se geneticky vyvíjejí.

Kdo někdy trochu přičichnul k Lispu a podobné havěti, ví, že code is data and data is code. To není nic nového, ale clojure.spec to posouvá na úplně jinou úroveň — můžete si generovat specifikace, které vám generují data, která mohou generovat další specifikace, přitom se modifikují a generují…

A Carin to krásně umí podat. Část její přednášky si můžete přečíst na jejím blogu: One Fish Spec Fish.

Asi jste si všimli, že v popisu téhle přednášky dost bruslím. Je to tak. I když se podíváte do mind mapy níže, uvidíte, že jsem si toho moc nezapsal. Ze dvou důvodů. Už jsem říkal, že to byla nejlepší přednáška? Bylo by prostě škoda si u toho dělat zápisky. A pak, bylo tam toho tolik, že je to výživné ještě na měsíce studia. O teď mě omluvte — jdu generovat testovací data, která se rýmují. (Mimochodem, všimli jste si, že two se rýmuje s blue?)

New Java Literals for the Brave and True

Na přednášku Lukáše Křečana (@lukas_krecan) jsem dorazil pozdě, vlastně až cca v druhé půlce, protože jsem se v předsálí zakecal s Carin Meier o clojure.spec.

Takže jestli jsem to ze závěru pochopil, šlo o to, mít v Javě literály podobně jako ve Scale a Lukáš k tomu zneužil Javovské lambdy.

Budu teď trochu ošklivý, nebo upřímný — šel jsem se na přednášku podívat, abych viděl Lukáše na živo. Protože — ruku na srdce — Scala je mi dost ukradená.

Dirty Hacks with Java Reflection

Závěrečná key note Heinze Kabutze (@heinzkabutz) mě minula. Možná to byla únava, po dvou dnech intenzivního vstřebávání informací, možná přeplněná mozková kapacita, anebo, po vrcholné přednášce Carin Meyer, už nic nemohlo být zajímavé. Zkoušel jsem to, ale po 10 minutách jsem sjížděl Twitter a pak jsem se, ještě před půlkou, sbalil a šel domů.

To málo, co jsem v úvodu zachytil, byly klíčový slova Reflection, Java 9, Atomic a Concurrent.

Organizace

Tak, to byly přednášky. Nejen ty ale tvoří konferenci. Co organizace? Byl to můj první GeeCON a tak nemám s čím srovnávat. Jasně, srovnávat třeba s Google Developer Day by nebylo fér.

V první řadě musím vyzdvihnout lidi z GeeCON, že se do toho vůbec pouští. Na téhle fan bázi, kdy za váma nestojí velká firma, to musí být velmi náročné, postavené na spoustě entuziasmu. I proto jsem tolerantnější.

Organizaci přednášek se v podstatě nedá nic vytknout. Technika fungovala, časový rozvrh klapal a to je hlavní. Android aplikace s programem konference fungovala uspokojivě. Dostal jsem zadarmo jednu el. knížku od O’Reilly.

Pak už to byly více méně drobnosti — třeba hostesky by mohly znát heslo na WiFi, anebo tak nezmatkovat (a lépe informovat) s konferenčním tričkem.

Jednu velkou výhradu bych ale měl… catering. Koláčky ke svačině a džusy dobrý. Obědy docela slabota — dalo se to, ale hodně lidí nedojídalo. Ale kafe? To byl průšvih! Java konference a mizerný kafe?!? Do zákulisí samozřejmě nevidím. Co ale příště domluvit sponzoring s Doubleshotem?

Shrnutí

GeeCON je opravdu dobrá Java konference. Přednášky jsou zajímavé a aktuální. Rozsah je tak akorát a ambice odpovídají Praze. Pokud během roku nenarazím na něco zajímavějšího, rád se na GeeCON podívám znovu.

Mind Map

GeeCON Prague 2016 — Key Note, organizace a témata

GeeCON Prague 2016 — Key Note, organizace a témata

GeeCON Prague 2016, den 2.

GeeCON Prague 2016, den 2.

Související články