DevFest Pardubice 2013

Tento víkend se v Pardubicích konal historicky první "pardubický" Google DevFest a bylo by hříchem nevydat se na tak zajímavou akci zvlášť, když probíhá jen pár stovek metrů od mého domu. Na programu byli přitom samí zajímaví řečníci - Michal Špaček, Daniel Steigerwald, Pavel Lahoda, googleři Danut Echanoiu a Margarita Manterola a další.

Pokud vás zajímá, jak vše vypadalo okem diváka, připravil jsem pro vás tuto reportáž.

OAuth 2 (Danut Echanoiu)

První přednáška Danuta Echanoiu byla na již trošku ohrané téma OAuth autentizačního a autorizačního protokolu. Ačkoliv jsem již byl asi na dvou přednáškách o OAuth - tato mi přišla mimořádně dobrá a to především kvůli tomu, že veškeré technikálie byly vysvětleny velmi jednoduše a lidsky.

Základem bylo přirovnání mechanismu OAuth k situaci, kdy nám kamarád svěří nějaká svá soukromá data jako třeba bankovní výpisy, osobní deník, závěť atp. Následně zavolá jeho účetní s žádostí o poskytnutí jeho bankovních výpisů. Přirozeně, že neznámému člověku bychom data svého kamaráda jen tak nedali a proto mu zavoláme, jestli účetního zná a jestli je to v pořádku, že mu ta data předáme. Kamarád nám svolení dá a tak, účetnímu předáme požadovaná data.

Situace se opakuje i následující den, ale tentokrát účetní požaduje kamarádovu závěť. To nám nicméně připadá divné a proto se opět obrátíme na kamaráda, jestli je poskytnutí závěti v pořádku. Ten ale účetního pošle k šípku a poprosí nás, abychom mu už napříště už žádné údaje neposkytovali.

No a to je zjednodušeně celá podstata OAuth. Danut skutečně dokázal vystihnout podstatu věci tak, že od této doby nikdo z přítomných určitě už nezaváhá. Následovala i praktická ukázka autentizačního mechanismu a vysvětlení základních pojmů. Zajímavá mi přišla zmínka o OAuth Playground, díky kterému si můžeme jednoduše vyzkoušet protokol v praxi s vysvětlivkami a zobrazením jednotlivých požadavků a odpovědí.

Danut samozřejmě doporučoval nepsat si celý autentizační mechanismus znovu, ale použít již vyladěné Google knihovny, které jsou dostupné pro řadu programovacích jazyků včetně JavaScriptu.

Zajímavá byla také zmínka o tom, že aplikace běžící na AppEnginu mají od Google implementovanou i serverovou část OAuth protokolu, takže stačí jen pár řádek a OAuth server s možností přidělovat přístupy k datům aplikace na AppEnginu začne dýchat.

Improving Android XP (Pavel Lahoda)

V druhé přednášce Pavel Lahoda rozebíral bolavá místa při vývoji Android aplikací a místy propíral Google tak, až jsem si říkal, jestli bude na DevFestech ještě někdy vítaným hostem :)

Kromě kritiky ale také nabízel řešení - třeba místo sady layoutů pro různé formáty obrazovek a orientace doporučuje skládat view programově. Tento přístup kromě lepší správy obrazovek pro řadu rozlišení i zrychluje odezvy aplikace při změně orientace (díky tomu, že se neprovádí aplikace nového layout z XML s bindingem na komponenty).

V krátkosti také představil knihovnu pro rychlé prototypování (nejen) formulářově oritentovaných aplikací Object Forms, která (pokud jsem správně pochopil) prozatím ještě není oficiálně dostupná, ale která by měla být v dohledné době k dispozici ke stažení. Knihovná má duální licencování - pro komerční použití stojí pár dolarů a v GPL licenci je zdarma.

V přednášce zazněla celá řada dalších doporučení, ale vzhledem k tomu, že sám nejsem Android vývojář, nejsem schopen je dostatečně srozumitelně reprodukovat a proto na tomto místě radši skončím. Pro ty z vás, kteří pro Android vyvíjíte bych ale přednášku určitě doporučil a pokud jsem správně zaslechl, její záznam by se měl objevit na stránce DevFestu brzy ke shlédnutí.

Webová bezpečnost (Michal Špaček)

Nenajde se mnoho lidí, kteří by dělali něco s webem a neznali Michala Špačka, přesto jsem ho na této konferenci viděl naživo poprvé. Přednáška byla perfektní a přesto, že některé problémy jsou spíš doménou PHP (např. SQL Injection), dozvěděl jsem se také spoustu nových věcí, z nichž celou řadu jsem si nestačil ani zapsat. Takže se společně s vámi budu těšit na záznam s přednášky, abych si ty věci projel znova.

Co mi přišlo zajímavé je třeba možnost použít cizí weby (třeba W3C validátor) pro port scanning webů. Možnost volat z JavaScriptu v omezené míře Javovský kód (WTF) nebo získat zdrojové kódy webů přes získání obsahu VCS adresářů, které se na produkci dostali i s ostrým kódem a které se zapomněly zabezpečit.

Z některých věcí trochu mrazí v zádech a proto každá podobná přednáška rozhodně není ztraceným časem. Shlédnout tuto přednášku je prostě povinnost ;)

Reaktivní programování (Aleš Roubíček)

Následovala poměrně teoretická přednáška zaměřená na aspekty funkcionálního programování. Osobně jsem do funkcionálního programování jen nakouknul a tak jsem přestal v některých pasážích stíhat. Funkcionální programování se musí (stejně jako logické programování) zažít, to se nedá pochopit z jedné přednášky.

Zajímavá mi přišla zmínka o Reactive Extensions, které pocházejí z dílny M$ a které jsou v současné době portovány do celé řady dalších jazyků (Javy, C a JavaScriptu nevyjímaje). Jejich hlavní motivací bylo vytvořit responsivní systém, který realizuje většinu operací asynchronně a tím dochází ke zvýšení prostupnosti systému. Rx jsou postaveny nad Observer patternem, který spojují s prvky funkcionálního programování. Výsledkem je potom krátký a čitelný kód, který se navíc ve vícevláknovém zpracování chová předvídatelně.

Google protocol buffers (Pavel Jetenský)

Na další přednášku jsem si odskočil do lightning-talk room, kde přednášel můj kamarád Pavel Jetenský z Inmite o komunikačním protokolu, který používají mezi mobilními přístroji a serverem a zároveň mezi mobilními přístroji navzájem. Jedná se o binární protokol, který je velmi úsporný jak ve srovnání s XML, tak i JSON. Protokol minimalizuje náklady na infrastrukturní část (tj. názvy polí, hlavičky atp.) výměnnou za nečitelnost dat, které tudy protékají.

GPB vyžadují pro svoje fungování tzv. deskriptor dat, který popisuje v jaké verzi protokolu se přenášejí které datové pole konkrétního typu (z výše uvedeného vyplývá, že protokol řeší verzování). Další velkou výhodou GBP je, že jsou dostupné pro celou řadu jazyků a tudíž mohou sloužit jako protokol pro multiplatformní výměnu dat podobně jako je tomu v případě JSON formátu.

Pokud tedy potřebujete použít nějaký úsporný datový formát pro přenos dat, je GBP daleko lepší varianta, než zastaralý Hessian.

Google Closure Tools (Daniel Steigerwald)

Přednáška od Daniela Steigerwalda byla jedním slovem divadlo a druhým cirkus :) Destilovaná zábava od začátku až do konce :)

V dnešní vyhypované a turbulentní době programování v JavaScriptu není jednoduché se vyznat ve spoustě knihoven a frameworků, které vznikají. Právem se řada lidí (a především těch z M$ platformy, kteří jsou zvyklí na nalinkovanou cestu vpřed) cítí ztracena a hledá ten "správný přístup". A jestli se nebudete bránit, Daniel vás jednoduše přesvědčí o správnosti přístup Google Closure Tools. V naší firmě měl taky školení a ani my jsme se neubránili - náš nový Edee pohání právě GCT.

Na přednášce padla celá spousta zajímavých jmen - AngularJs počínaje, přes BackBone až k Ember.js ovšem žádný neobstál Danově kritice. Jeho názorem je, že všechny tyto frameworky škálují jen do určité složitosti projektu a pokud potřebujete jít dál,  je zatím GCT jedinou možnou variantou. Už jen třeba z toho důvodu, že se jedná o stabilizovanou knihovnu, která je již několik let ve stavu "production ready". GCT ovšem nejsou frameworkem - jen ekosystémem, který potřebuje zasadit do nějakého rámce. Tento rámec nabízí Danův pet-project Este.js, který GCT propojuje se zbytkem světa a dává dohromady lépe uchopitelný nástroj pro vývoj web aplikací.

Mezi další zajímavé technologie zařadil například Bower - nástroj pro jednoduchou správu a linkování dependencí v JavaScriptu a Grunt - nástroj pro spouštění automatizovaných tasků na správu projektu.

Při dotazu na nový Meteor.js jej Dan označil na zajímavou technologii, se kterou by se ovšem neodvážil jít zatím do produkce.

Závěrem

Myslím, že pardubický DevFest byla výborná akce, která oživila vody Východních Čech a rozhodně byl vidět velký kus odvedené organizační práce. Skvělé bylo, že se sem podařilo dostat zajímavé řečníky a sponzory. Pokud bude následovat další ročník, určitě vám jej doporučuji navštívit - už jen kvůli té rodinné atmosféře, kterou na hektických konferencích v Praze nemáte šanci zažít. Moje speciální díky patří Jirkovi Pénzešovi a Honzovi Voráčkovi, kteří mají velký podíl na tom, že se podobné akce v Pardubicích konají.

Update 16.5.2013: Podle organizátorů by měly být přednášky online nejpozději do prázdnin a toto oznámí skrz standardní kanály - tj. Twitter, Facebook či web.