Delivery Camp 7.0

19.11.2019

Začiatkom novembra sme usporiadali už siedmy a zároveň najväčší DeliveryCamp v histórii Lundegaardu, tentoraz v príjemnom prostredí statku Vletice.

Zúčastnilo sa celkovo 27 ľudí naprieč celou firmou. Rozdelili sme sa do niekoľkých tímov, ktoré celé tri dni pracovali na vopred stanovených témach. Cieľom bolo si vyskúšať inovatívne technológie, spolupracovať s ľuďmi, s ktorými sa normálne na projekte nestretneme a inovatívne premýšľať. To všetko v súlade s našimi hodnotami a cieľmi v Lundegaarde.

Okrem usilovnej práce na projektoch sme naplno využili aj voľnočasové aktivity, ktoré nám priestory Statku Vletice ponúkli. Našiel sa tak čas na relax v saune alebo vo vírivke, na spoločné hranie hier, dobrú kávu, pivko alebo miešané koktaily.

dCamp

„Tohtoročný premiérový DeliveryCamp, predtým známy pod oddelenými pojmami ako DevCamp a DXCamp, si stanovil nemalý cieľ: Prepojiť čiastkové esencie nášho Delivery by Lundegaard do multi-cross-tímovej udalosti a preskúmať tak naše silné stránky, spoznať kolegov aj z iných pohľadov a v iných disciplínach a hlavne focus a priestor pre koncentráciu na našu spoločnú myšlienku a cieľ.“ hovorí hlavný organizátor akcie Tomáš Plecháč.

Každá téma mala svojho mentálneho vodcu – lídra, ktorý dohliadal na dodržanie cieľa jeho tímu a tiež na to, aby dané témy korelovali s cieľmi Lundegaardu. Tu predstavujeme detailnejší popis vybraných tém dCampu.

voice ui 

Ako už je z názvu zrejmé, v tomto tíme sme sa zaoberali hlasovým ovládaním zariadenia. Cieľom bolo odskúšať jednak nástroj, ktorý umožňuje ako vstup okrem klasického klikania alebo „ťapnutia“ aj hlasový vstup. Zároveň sme chceli navrhnúť a viesť takýto rozhovor.

Po vytvorení prototypu v nástroji Adobe XD sme všetky tri navrhnuté situácie nahrali do Amazon Echo, ktorý vo vyšších verziách podporuje aj jednoduchý grafický výstup. Vďaka tomu sme náš prototyp pripravili aj na zobrazenie jednoduchých informácií.

ai track

V tomto tíme bolo cieľom vytvoriť narrow umelú inteligenciu, ktorá prekoná ľudské schopnosti. Konkrétne vytvoriť agenta umelej inteligencie, ktorý bude vedieť hrať hru Othello (alebo Reversi) a porazí človeka. Rozhodli sme sa na to použiť metódu, ktorej narastá popularita tzv. Reinforcement Learning. Táto metóda strojového učenia je založená na interakcii agenta s prostredím. Ten sa snaží maximalizovať kumulatívnu odmenu a za každú svoju akciu je odmenený alebo penalizovaný.

Aj keď sme si hru zjednodušili z pôvodných 8x8 polí na 5x5, tak hra nadobudla asi 870 miliárd potenciálnych stavov, čo bolo výpočtovo mimo našich možností. Výpočet modelu sme pustili aj cez noc, ale dosahoval asi len 70% úspešnosti proti náhodne hrajúcemu hráčovi. Čiže ďalším krokom bolo vytvoriť agenta využívajúceho hlbokú neurónovú sieť (DNN). Dokázali sme tým veľmi zrýchliť tréning modelu a taktiež jednoznačne poraziť náhodne hrajúceho hráča (úspešnosť 90-95% na 5x5 polí a 87% na 8x8 polí). Okrem hier s ľudským agentom sme aj na záver testovali hru umelej inteligencie s tradičným minimax algoritmom. Na menšom poli dokázala AI konkurovať na väčšom poli už nie. Tam by sme potrebovali vylepšiť učenie AI, tak aby sa učila už z týchto pokročilých hier, ale na to sa už v rámci dCampu nedostalo a je to podnet k ďalšiemu zlepšeniu.

mobilný vývoj reasonml

Tento tím sa rozhodol posunúť lásku k funkcionálnemu programovaniu a mobilnému vývoju zase o niečo ďalej. V Lundegaarde sme doposiaľ mobilné aplikácie zakladali na technológii React-native a na dCampe sme si ju okorenili funkcionálnym žargónom vo forme ReasonML. Tato technológia je totiž len jedna z mála možností, ako vyvíjať mobilné aplikácie vo funkcionálnom paradigmate. Okrem toho sa nám páčila historická spojnica s Reactom ako takým. Jeho prapôvodná verzia bola napísaná v Ocaml (ReasonML je jeho alternatívnou syntaxou).

Pre začiatok sme si dali za cieľ vytvoriť jednoduchú mobilnú aplikáciu, ktorá by kolegom v Lundegaarde pomohla s evidenciou pracovných ciest. Už počas prvého dňa sme zistili, že nás čaká množstvo práce a štúdia. Okrem samotného jazyka bolo potrebné naštudovať a integrovať frameworky na riešenie obecných problémov, ako je samotné UI, formuláre alebo state management. Zistili sme, ako využiť prekladač BuckleScript k interoperabilite s JavaScriptovým, respektíve Reactovým, ekosystémom. Vďaka tomu väčšinu knižníc určených pre React-native je možné použiť aj v ReasonML svete.

Vedľa mobilnej aplikácií vzniklo restové API na generovanie dokumentov nutných k evidencii pracovných ciest. Tu sme sa rozhodli ísť už overenou cestou Node.js.

Príjemné prostredie statku Vletice a jeho okolie nám dodalo množstvo chuti do ďalších projektov s ReasonML.

mobilný vývoj flutter (Meeting costs app)

Obdobne ako druhý mobilný tím sme sa rozhodli preskúmať alternatívu k preferovanému React Native. Vydali sme sa ale úplne opačným smerom a zvolili technológiu Flutter poháňanú objektovým Dartom, pretože vo vývojárskych kruhoch posledné roky rezonuje a ide o hlavnú "konkurenciu" pre RN. Z predchádzajúcich prieskumov sme naviac vedeli, že Flutter vyniká práve v oblastiach, kde má RN najväčšie nedostatky.

Pre prieskum sme si vymysleli jednoduchú aplikáciu na počítanie nákladov na meetingy. Tá umožňuje zadávať meetingy s počtom účastníkov a podľa priemernej MD rate v reálnom čase zobrazuje vynaložené náklady. Ako veľmi jednoduchý backend sme použili firebase, pre ktorý má Flutter skvelú podporu (obe technológie Google) a nám teda umožnil s minimom času implementovať rýchlu databázu s obnovou dát v reálnom čase pomocou websocketu.

Aplikáciu sa nám nepodarilo dotiahnuť k našej úplnej spokojnosti, ale rozhodli sme sa, že ju nenecháme umrieť a dotlačíme ju až ku skutočnému releasu do storov.

Záverom môžeme povedať, že vo Flutteri je veľmi rýchla práca s UI – za jeden deň sa nám podarilo poskladať základnú view aplikáciu. Animácie fungujú výrazne lepšie než v RN. Vďaka InteliSense väčšina kódu vznikla jednoduchým stlačením enteru, ale všeobecne je Dart trochu neprehľadný a zhodli sme sa, že by sme v tom nechceli udržovať veľký projekt. V mobilnej appke toto však nemusí byť tak podstatné.

machine learning - tool evaluation

Misiou tohto tímu bolo zanalyzovať, prípadne vyskúšať technológie umožňujúce automatizáciu či zjednodušenie práce s Machine Learning modelmi.

Zhrnutie: Aktuálna situácia rozdeľuje dočasné technologické riešenia do nasledujúcich kategórií:

  • Komplexné riešenie postavené na Kubernetes prípadne rovno platenej službe (aktuálne nezaujímavý segment, riešiaci často spracovanie obrazu alebo sú dané technológie užitočné pri big data machine learning problémoch)
  • Pipeline zviazané iba s jedným algoritmom či ML knižnicou (vendor lockin)
  • Riešenie užitočné iba pre menší segment našej problematiky (model versioning, ML prediction cez REST)

V rámci evaluácie sme vykonali otestovanie open source produktu MlFlow. Riešenie aktuálne ponúka pestrú podporu pre nasadzovanie modelov rôznych projektov (H2O, TensorFlow, PyTorch ..) a flexibilný zápis metrík či artefaktov pre jednotlivé modely. V rámci testovania sme vykonali testovací use case a prácu s metrikami a registráciou artefaktov. Táto technológia by v rámci projektu FastAI mohla riešiť historické zápisy pri tvorbe a tréningu modelov pre ich znovu na trénovanie a spätnú analýzu. Technológia sama o sebe je pomerne jednoduchá a neprináša do projektu prílišnú komplexitu. Zároveň ponúka flexibilitu a vyžaduje prípravu zo strany tímu pre ich adopciu (tvorba modelov musí s použitím MlFlow počítať).

Závery: MlFlow nerieši celý problém s nasadzovaním ML modelov avšak jednoducho a elegantne ponúka ich verzovanie a historický pohľad na ich tvorbu (hyper-parameter tuning)

sassdoc - automaticky generovaný design systém

V tomto tíme si kóderi vzali za úlohu preskúmať automatizovanú dokumentáciu pre štýlovanie SassDoc. Cieľ bol jednoduchý: spustiť a upraviť SassDoc pre potreby našich projektov, kde bude slúžiť ako centralizovaný zdroj informácií pre úpravu a údržbu UI komponent. Kvalitná a systematická dokumentácia potom nie je iba vôdzka pre vývojára, ale môže slúžiť aj ako solídny základ pre design systém.

SassDoc nie je vo svete front-endu žiadnou novinkou. No codebase a architektúra SassDocu dokáže rozšíriť už kvalitný nástroj pre podrobnú dokumentáciu projektu na automaticky generovaný (technický) design systém. Jednoznačne nás prekvapila jednoduchosť v škálovateľnosti celého SassDoc-u a množstvo možností zobrazenia dokumentácie. Záverom môžeme konštatovať, že cieľ bol splnený, pivo bolo vypité a Slávka vybojovala remízu s Barčou ... deliveryCamp ako vínko. 😊

Tomáš záverom dodáva: „V duchu neformálnej atmosféry, dobrého jedla, inšpiratívneho pitia, vidieckeho prostredia a vďaka entuziazmu, ktorým sa kolegyne a kolegovia zhostili svojich rolí, sa nám, môžem slovom organizátora konštatovať, cieľ podarilo nielen splniť ale aj zlepšiť. Spoločne sa tak tešíme na ďalší ročník 2020."

 

 

Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0
Delivery Camp 7.0