Jak bylo na EuroClojure 2013 (úvod a den 1)
[fotku jsem ukradl Kamilu Tomanovi] Nedávno jsme se s @martinhynar vrátili z berlínské konference EuroClojure, kam jsme se podívali díky Vendavu. A tak se sluší a patří, abych si o tom malinko ublognul.
Jde o první větší evropskou konferenci zaměřenou výhradně na programovací jazyk Clojure a filosofii vývoje softwaru, která se kolem něj rodí. První ročník se konal minulý rok v Londýně, letos byl na řadě Berlín a jestli někdy dojde i na Prahu, to těžko odhadnout... :) Vyrazit do Berlína každopádně stálo za to, zvláště když je to z Ostravy pár hodin cesty autem. Akce se konala v areálu bývalého pivovaru, který byl v průběhu času proměněn v kulturní centrum. Není to sice tak impozantní stavba jako podobně využitý Stary Browar v polské Poznańi, ale i tak to je velmi stylový mix moderních technologií a syrové industriální architektury. Obité a hrubé zdi hal v kombinaci s moderním zázemím byly perfektním prostředím pro něco tak živelného a drzého, jako je Clojure. Člověk by měl skoro tendenci si myslet, že tahle platforma je ještě stále ve vývojářském undergroundu... Ovšem již dávno (z pohledu rychlosti vývoje světa IT) tomu tak není a právě i přednášky na téhle konferenci nás v tom utvrdily.
Co se týká organizace, tak ta byla perfektní. Šlo o relativně malou konferenci, takže pokud by člověk čekal, že u vstupu dostane tričko a tašku plnou propisek, bloků a reklamních materiálů, tak by byl zklamán. Naštěstí jsou tohle zcela irelevantní věci a tričko zdarma šlo získat i jinak :) Wifi z počátku haprovala (což bohužel pokazilo jeden kolaborativní talk), ale pak už běžela celkem spolehlivě - samozřejmě s rychlostí v rámci rozumných mezí (cca 200 lidí). Velmi pozitivní bylo jídlo a pití. Budova, kde se vše konalo, měla hned vedle přednáškového sálu plně vybavenou kavárnu s kuchyní (což se např. o polském GeeCONu konaném v kině říci nedá) a tak nebyl vůbec problém pro všechny zajistit stabilní přísun tekutin a dobrého jídla. Během přestávek mezi talky servíroval personál na baru nealko dle přání (typ i množství - káva vzhledem k podmínkám velmi dobrá) a nemálo breaků bylo také oslazeno zákusky, které samozřejmě zmizely velmi rychle. Obědy byly řešeny rautovým stylem a jídlo bylo pestré. V pondělí večer pak byla rezervace v jedné z obřích berlínských pivnic, kde pivo teklo proudem a klobásky se kutálely přímo do pusy (ne, to už v ceně nebylo), hlavně jsme se tam ovšem socializovali a to až tak, že druhý den měli někteří problém mluvit... Inu hromada geeků lačnících po hluboké filosofické konverzaci + vagóny kalících němců + tamní obdoba Evy a Vaška = bengál jak sviňa.
Dost bylo plků, pojďme k tomu, kvůli čemu vlastně vůbec tenhle článek píšu. Pokusím se teď popsat přednášky, které jsme slyšeli.
Keynote: States and Nomads: Handling Software Complexity - Zach Tellman
Zachova keynote byla jednoznačně nejfilosofičtější přednáškou celé konference, takže tenhle popis berte jen jako můj myšlenkový dump - prostě co mi utkvělo v mysli. Jo a není tam překlep. Nemá tam být "monads" :) V zásadě to bylo rozdílu mezi tím, jak k řešení komplexity přistupuje stát (resp. jaká je v tomto mentalita státu) a jak nomadická mysl - a jak to ilustruje chování nás vývojářů. Začal ji perfektní ilustrací principu leaky abstraction: použil dvě rasy z románu Time Machine od H. G. Wellse, Eloi a Morlocky. Eloi si žijí v luxusu na povrchu planety, ten je ovšem udržován při životě morlocky, otroky žijícími pod zemí. Ti každou noc vystupují na povrch a Eloi požírají. Naše leakující abstrakce fungují stejně - máme tendenci se nechat ukolébat tím, jak jsme problém krásně abstrahovali, ale v nestřežené chvíli se abstrakce proskočí skrz mříže a kousne... Realita je rhizoma, propojené kořeny s nuancemi, které nelze při přílišném zjednodušení postihnout. Stát se snaží toto změnit ve strom s jedním kořenem - musí vnucovat svou zjednodušující hierarchizující představu, aby mohl fungovat. Descriptive > Prescriptive.
Zach použil několik dalších ilustrací, některé z nich z knihy Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed od farmáře a anarchistického politologa Jamese C. Scotta (viz. také některé texty libertariánského institutu CATO - Scott sám ovšem klasickým libertariánem není). Mezi jinými to byly absurdní pokusy v pruském lesním hospodářství v 50. letech 19. století (devastace půdy sterilizací, geometrizací a homogenizací lesů ve snaze zefektivnit těžbu) nebo budování zcela odosobnělého města Brasília v 60. letech minulého století.
Keynote nekončila nějakou ultimátní radou, jak to všecho rozseknout a vyřešit. Bylo to spíše vykopnutí míče na hřiště, snaha nastartovat dlouhodobou diskusi, pokus dostat vývojáře od (možná přespříliš) exaktního techné taky trochu k nomádskému metis (wisdom, skill, craft). Co děláme, je prostě mnohem více fuzzy, než si občas jsme ochotní přiznat a sebevětší hromady computer science paperů nestačí.
Evolving Life In The Browser - Tom Hall
Toto byla ta přednáška, o které jsem již v úvodu zmínil, že jí pokazil haprující internet. Tommy ukazoval několik genetických algoritmů běžících v browseru na ClojureScriptu a po nás chtěl, abychom mu pomohli svými stroji algoritmy rozvíjet. Zajímavý byl např. malý Robbie, který se snaží najít nejlepší způsob, jak uklízet bordel, co se válí kolem. A nebo simulace umělého života s pomocí zipperů.
Build Your Own Lisp for Great Justice - Bodil Stokke
Svéráznou děvčicu Bodil nemusím clojurianům představovat. Na EC přijela ukázat dialekt Clojure / Lispu, na kterém pracuje - BODOL. Nabídla také pár narážek na uživatele jiných editorů než je Emacs a hromadu barevných ponnies ve vymakané Reveal.js prezentaci :) Zmínila ale i praktické věci, jako např. jak implementovala různé aspekty daného jazyka. To je pro lispaře důležité, jelikož implementace vlastního Lispu je smrtelná mozková nemoc, která potká každého lispaře a pokud ne, tak to nebyl lispař :)
Liberator – free your data with RFC 2616 - Philipp Meier
Autor knihovny zmíněné v nadpisu přednášky popisoval svojí cestu nebezpčnou džunglí zvanou HTTP. Dokud člověk nezačne kopat hlouběji, nedochází mu, jak obrovská a komplexní specifikace HTTP je. Liberator není jen o vystavení RESTových endpointů přes HTTP, je skutečně o pokrytí celé cesty tím rozhodovacím stromem, kterým je třeba podle RFC 2616 projít. Liberator umí onu cestu dokonce nakreslit jako SVG obrázek a to pak člověku dochází, kolik věcí většina dnešních knihoven abstrahuje pryč (za cenu nemožnosti do nich zasáhnout). <vtip>Pro mě to bylo opáčko, protože o Liberatoru mluvil na jednom z našich Lambda Meetupů Martin Hynar ;)</vtip>
Creative Machines - Joseph Wilk
Velmi zajímavá přednáška od skromného sympaťáka, upoutaného (snad dočasně?) na invalidní vozík. Joseph byl jedním z lidí, kteří reprezentovali na EuroClojure významné firmy používající Clojure ve velkém - a to přesto, že pokud se dobře pamatuji, vůbec během přednášky nezmínil, že pro tu firmu pracuje. Jde o (původem) berlínskou službu SoundCloud - jeden z nejdůležitějsích internetových hudebních hubů současnosti, který redefinuje způsob, jakým hudebníci a labely komunikují s fanoušky. Data science se tam dělá ve velkém, takže rozsáhlý deployment Clojure nepřekvapí. Není tedy ani divem, že Josephova přednáška se týkala umění, vizuálního i hudebního.
Zamýšlel se nad otázkou, zda stroje dokážou být kreativní... a jak vlastně vůbec pojem "kreativní" definovat. Můžou skládat hudbu? Malovat? Podle toho, co jsme viděli a slyšeli, tak rozhodně můžou - škarohlídi ovšem namítají, že to vždy bude pouze výsledek lidského naprogramování a tedy nelze o kreativitě mluvit. Těžko rozseknout takovou debatu během jednoho talku. A kde tam zapadá Clojure? Overtone - knihovna, která se během EC ještě předvedla (stay tuned) a kterou Joseph použil, aby učil počítač komponovat na motivy naučených útržků hudebních děl.
Nakonec hezky ilustroval obrovské kognitivní zkreslení, které tuhle problematiku provází: jakýsi profesor se rozplýval nad hudebním dílem a když ho za rok slyšel znovu a bylo mu řečeno, že ho složil počítač, označil ho za brak...
(assert (= (+ quadrocopter motion-detector core.async) :awesomeness)) - Jarppe Lansio
Jarppe! Legračně nervózní a extrovertní Fin (jo, existujou), který se na stage parádně vyblbnul s quadrocopterem. Řídil ho pohyby ruky nad snímacím zařízením, které předávalo informace Clojure programu používajícímu knihovnu core.async a ten pak ovládal tu bestii. Škoda slov, tady je video.
Functional 3D Game Design - James Reeves
Jméno možná mnoho neřekne, přezdívka @weavejester už by mohla - ano, jde o člověka, díky kterému se dá Clojure pěkně používat na serveru: Ring, Compojure, Hiccup. Jak už ovšem název napovídá, tady o server nešlo - James se rozhodl na chvíli odložit kariéru nezávislého kontraktora a na plný úvazek se věnuje vývoji 3D hry v Clojure. James se soustředil hlavně na to, jak dosáhnout uspokojivého výkonu při zachování důležitého funkcionálního aspektu Clojure - neměnných datových struktur. Herní engine toho ještě mnoho neumí, což me trochu zklamalo - čekal jsem trochu více než rotující kostku na černém pozadí... Ale ani v nejmenším nepochybuju, že to James bude schopen dotáhnout k něčemu efektnímu.
Common Clojure Smells - Jen Smith
První den zakončila Jen Smith z ThoughtWorks s přednáškou o code smells v Clojure. Ano, i tak übercool jazyk jako Clojure je má, i když se od objektových smellů často dost liší, nebo jsou s nimi přímo v rozporu. Např. Primitive Obsession je jedním z hlavních pilířů Clojure, jakožto data-oriented jazyku. S jednou věcí jsem ovšem nesouhlasil (a už jsem to před časem zmínil i někde na Twitteru): Jen popisovala přílišné zanoření do lispových struktur jako smell. To je samozřejmě OK, nikdo nechce ve svém kódu vidět na konci funkce )))))))))). Jejím řešením ovšem bylo použití threading maker -> a ->> a to je to, co mě nesedí. Threading makro nemá nic společného s vlákny v JVM, ale umožňuje vám obrátit pořadí zápisu lispových funkcí, viz. např. http://clojuredocs.org/clojure_core/clojure.core/-%3E Je to perfektní nástroj pro případy, kdy potřebujete využít z Clojure nějakou javovskou knihovnu a potřebujete volat Java metody postfixovým zápisem. Řešit s ním ale přílišné zanoření mi v mnoha případech přijde jen jako léčení symptomů. Podle mého by první pokus o řešení měla být dekompozice do malých funkcí a přidržení se standardní lispové syntaxe. Samozřejmě netvrdím, že mám patent na pravdu - např. v případě "obalování" middlewarů v Compojure to smysl dává.
Jinak ale určitě fajn přednáška - slidy zde.
No a to byl konec prvního dne. V dohledné době očekávejte druhý díl s povídáním o přednáškách z druhého dne.
Ještě dodám, že pozitivem konference pro mě byla i možnost se lépe seznámit s dalšími podobně postiženými čechy, ať už z Prahy nebo toho času z Norska. Rád jsem vás poznal, kluci :)