Vojtech Miksu
Vojtěch Mikšů
Atlanta, GA. Georgia Tech. Minulost: ČVUT, MSOE a Masdar. Twitter. Kontakty. RSS.
San Francisco a život
24.07.2016

Pokud byste mohli navštívit jenom jedno město v Americe, muselo by to být San Francisco. Proč? Protože je nejhezčí! No dobrá, tohle je subjektivní a navíc jsem zas v tolika jiných městech nebyl. Nicméně kde jinde najdete stavbu jako Golden Gate Bridge? Výhledy na rozvlněný oceán? Prosluněnou zátoku s dalším obřím mostem? Extrémně příkré ulice? Úžasné průhledy skrz horizont do všech směrů? Architekturu připomínající evropské středomoří, Asii, továrny přestavěné na open-space kanceláře, klasické mrakodrapové business centrum? Mlhu plázící se skrz ulice, objímající vrcholky kopců a vytvářejíc tak neuvěřitelné scenérie?

IMG_2108

San Francisco ale není jen pěkná tvářička. Je to pravděpodobně nejliberálnější místo v celé Americe. Střízlivý středoevropan by to mohl popsat slovem „bizarní“. Nicméně více by se slušela použít nálepka „oslava jinakosti“. Ona existuje tolerance a tolerance. Ta první končí tam, kam naše oko nedohlédne. Tam kde se nás to netýká. Tam kde končí nějaký paragraf antidiskriminačních zákonů. Ta druhá, skutečná a upřímnější, je však daleko vzácnější a pokud se dá vůbec někde vypozorovat, tak právě v San Franciscu (Neplést s politickou korektností!). Jak se to pozná? Nevím jak to vlastně popsat. Je to v lidech. Plyne to z konverzací, stylem jakým o životě a světě kolem sebe přemýšlí. Možná něco přidávají do vody. Nevím.

IMG_2053

Další charakeristikou města jsou technologické společnosti. Ground zero. Zaměstnávají desítky tisíc lidí, fungují globálně a udělali ze San Francisca nejdražší město v celé Americe. Je to tak ráj geeků. Máte nápad na nějakou službu? Začnete tady a pokud se uchytí u San Francisčanů, spustíte jí v dalších amerických městech a po pár letech možná i v Evropě. Pokud chcete testovat nejnovější aplikace a gadgety, tak jste na správné adrese.

IMG_2098

Kalifornie. San Francisco není izolované samo pro sebe. Je vcelku malé (menší než Praha počtem obyvatel a daleko daleko menší rozlohou). Je ale v Kalifornii. Stát, který má úžasnou přírodu a počasí. Stačí popojet kousek na jih a najdete parádní pláže kde se prohání surfaři. Za pár hodin dojedete do národních parků jako Yosemite nebo Sequoia. Nebo Lake Tahoe, kde si i zalyžujete. Sunshine state je sice Florida, ale dalo by se argumentovat, že právě Kalifornie má to pravé ideální počasí. Slunečné, suché, příjemně teplochladné a extrémně stabilní.

IMG_2135

Všechno má ale i své záporné stránky. Největším průserem San Francisca, že si v něm téměř nikdo nemůže dovolit bydlet. Trh s bydlením je bez nadsázky totální apokalypsa, která navíc nemá ani žádnou naději na zlepšení. Díky tech společnostem tu každý rok vznikne hromada vysoce placených pozic, která už roky převyšuje počet nově vystavěných bytů. Protože poptávka a nabídka, ceny se vyšroubovaly do absurdních výšek.

IMG_2235

Pokud byste chtěli bydlet sami, v slušně vypadající garsonce, připravte si kolem $3000 za měsíc. To je taková raketa, že i s vysoce nadprůměrnými platy se životní úrovní jen těžko přiblížíte ostatním Americkým městům. Ze San Francisca se tak stalo místo, kde v podstatě výhradně bydlí jen programátoři a bankéři. A to ještě většinou minimálně po dvou v jednom bytě.

IMG_2139

Dalším problémem města je bezdomovectví. Podle odhadů jsou jich na ulicích kolem 10 000 a město má jen asi 1000 lůžek. Na rozloze 10x10km tak na ně narazíte prakticky všude. Vůbec nejviditelnější je to v centru na Market Street (kde teď bydlím), v noci tu spí na ulicích přes 4000 lidí (a to jsme relativně malá čtvrť). Pokud  to nečekáte, tak se připravte na šok. Naštěstí tito lidé nejsou nijak nebezpeční. Většinou si vás nevšímají nebo jenom žebrají. Ovšem občas jsou pod vlivem nějakých drog nebo mají různé mentální nemoci a musíte být tak trochu obezřetní. Moc nerozumím tomu, proč není město schopné zřídit třeba víc míst, kde by mohli alespoň přespat.

IMG_2194

Když to shrnu. Na San Franciscu je nejlepší to, že má svůj jedinečný charakter. Je zcela unikátní a nenapodobitelné. Má bohatou historii a kulturu. Je v něm vždy co dělat. Ideální místo pro hledání práce. Nepůsobí přelidněně. Život tu není uspěchaný. Všude úžasné výhledy a vždy pěkné počasí. Dá se celé krásně přejít pěšky nebo projet na kole. To vše z něj ale paradoxně udělalo místo, kde je nyní téměř nemožné bydlet díky ultravysokým nájmům.

San Francisco a CloudFlare
18.07.2016

Dnes to jsou téměř dva měsíce od mého příletu do San Francisca. Není to sice moje první návštěva, ale přeci jen je dost jiné být někde pár dní na výletě nebo tam několik měsíců žít a chodit do práce. Když jsem na jaře hledal práci na léto, nehledal jsem nikde jinde než právě v San Franciscu (tedy až na společnost Mailchimp v Atlantě). Proč právě sem?

San Francisco (a Silicon Valley) jsou pro vývojáře tím čím je Wall Street pro bankéře či Paříž pro módní návrháře. V jednom místě se koncentruje obrovské množství těch nejúspěšnějších počítačových a internetových firem, všelijakých startupů, investorů a talentovaných lidí (tech people or techies). Jelikož je tohle moje poslední „studentské léto“, je to také jedinečná příležitost pro networking a získání první full-time práce. Dneska chci popsat, co tu vlastně dělám (takže to bude techničtější).

Na čem pracuji

Práce pro CloudFlare je jedním slovem super. Jsem součástí WWW týmu, který má na starosti vše kolem cloudflare.com a API. Původně jsem měl pomáhat s přechodem na nový JavaScriptový stack (React, Redux…), ale nakonec jsem dostal úplně vlastní projekt – https://api.cloudflare.com. Jediným zadáním bylo: „Udělej to lepším“. Pro specifikaci našeho API používáme formát JSON HyperSchema. Máme vlastní open source nástroj JSDC (kompletně napsaný v JavaScriptu), který z těchto schémat a handlebars šablon umí vygenerovat celý https://api.cloudflare.com web.

První tři týdny jsem strávil tím, že jsem dotáhl jeho novou verzi (opravil spoustu bugů) a nasadil ho pro generování naší dokumentace. Dalším úkolem bylo, aby ho začali používat i další týmy v CloudFlare a aby se daly jednodušeji vytvářet nové vzhledy. Nakonec padlo rozhodnutí, že celá věc by měla být ještě více obecná a modulární, tak aby jí začali používat i další organizace (na CF je super, že hodně investuje do open source).

A tak jsem navrhl úplně novou architekturu a začal na ní několik týdnů pracovat. Potíž JSDC byla v tom, že dělá moc věcí naráz. Musí umět prolinkovat odkazy v schématech (podobný systém odkazů jako na webu), následně schémata transformovat do něčeho, co můžeme prezentovat na webu (vytvořit příklady API volání…), zkombinovat šablony s daty a ještě vše vyrendrovat. Vývojaři chtěji typicky upravit nějakou hodnotu ve schématu a podívat se na výslednou stránku. To ovšem znamená, že se musí vše znovu přegenerovat, což trvá…

Rozhodl jsem se tedy JSDC rozbít na menší části a vytvořit pár webpack loaderů, které mají několik ideálních vlastností. Transformují data z jednoho stavu do druhého. Umí vytvářet mapu závislostí (změnil se soubor A na který odkazuje soubor B, je potřeba znovu načíst i soubor B…). Cacheuje jednotlivé moduly – není potřeba vždy přegenerovat všechna schémata.  Jeden webpack loader řeší odkazy v schématech. Druhý webpack loader pak upravuje jejich strukturu (vytváří příklady, odstraní nepoužívané klíče…).

Další problém nástroje, který všechno naráz generuje, je ten, že je dost problematické, pokud chcete výslednou dokumentaci nějak více upravovat. Například jí rozdelit do více sekcí či stránek. Druhým opakem je pak stav, kdy žádný takový nástroj nemáte a všechno si „napíšete ručně“, což však také není ideální. Kompromisem je další knihovna na které pracuji (nazvaná doca). Otevřete adresář, kde máte uložená schémata, zavoláte „doca init“ a ona vám vytvoří kompletní webovou aplikaci (dokumentaci). Stačí už jen následně zavolat „npm run build“ a je hotovo. Pro interaktivní vývojářský mód pak „npm start“. Díky webpacku a hot reloadu můžete každou změnu v schématech okamžitě vidět v prohlížeči. Žádné zdlouhavé přegenerovávání, refreshování prohlížeče či debugování v terminálu. Nicméně nic vám nebrání v tom, začít výslednou aplikaci jakkoliv upravovat.

Posledním dílkem skládačky jsou šablony. Volba nepřekvapivě padla na React. Největší výhoda oproti Handlebars je ta, že do React komponent mohou vývojáři implementovat i různé dynamické události (rozkrývání jednotlivých sekcí, atp) aniž by bylo potřeba mít někde odděleně ještě další jQuery skripty. React se pak bez problémů dá zkompilovat i na serveru a webpack tak může vygenerovat 100% statickou verzi webu. Můžeme se pak rozhodnout, zda k výsledku přibalíme i JS bundle a stránka tak bude interaktivní. Jednotlivé vzhledy jsou samostatné NPM balíčky. Je to v podstatě jen set React komponent. Máme svůj vlastní privátní vzhled pro CloudFlare, ale vytvořil jsem také další založený na Twitter Bootstrapu, který bude open sourcnutý. Chcete svůj vlastní? Stačí si ho forknout.

Když to shrnu. Máme teď balíček nástrojů, kde vám stačí 2 příkazy na vegenerování kompletní HTML dokumentace. Chcete upravit její vzhled? Použijte 3rd party theme nebo si vytvořte svůj vlastní. Chcete jí rozdělit do více stránek, sekcí či kompletně jiného uspořádání? Upravte si onu vygenerovanou web aplikaci. Chcete použít Angular, Ember či úplně jiný soubor knihoven? Vyházejte z aplikace vše krom webpack loaderů a have fun.

Momentálně pracuji na tom, abychom to vše mohli v přístím týdnu open sourcnout (píšu dokumentaci, testy…). Zároveň s tím zveřejním i příspěvek na https://blog.cloudflare.com a budu mít i krátkou přednášku na firemním all-hands meetingu. Fakt, že v podstatě vše na čem jsem v létě pracoval skončí na GitHubu, je to nejlepší, co se mi mohlo stát. Je to super reference.

CloudFlare kultura

CloudFlare je středně velká společnost. V současnosti má kolem 300 zaměstnanců a agresivně nabírá nové lidi (každý rok se zdvojnásobuje). Do dvou let by měla být veřejná s celkovou hodnotou kolem 6 až 10 miliard dolarů. Vlastní jednu z největších sítí na světě (co do počtu datacenter i přenosové kapacity) a přes její infrastrukturu teče už 10% internetu. Hostuje milióny webů a spousta z nich je kontroverzní. Je tak obrovským terčem všech možných útoků – kybernetických (skupiny jako Anonymous), právních (spousta žalob, žádosti úřadů) i fyzických (dopisy s výhružkami či bílým práškem, to takhle jedno odpoledne přijelo do firmy několik jednotek hasičů a policistů).

I přes typickou uvolněnou atmosféru, je cítit velká zodpovědnost, kterou firma má vůči svým zákazníkům. Jakýkoliv výpadek infrastruktury by znamenal ohromné finanční škody a ještě větší problém by byla ztráta důvěry. Ta je přitom klíčová, protože naše služba funguje jako „man in the middle“ a má tak přístup k těm nejcitlivějším datům. Vše se tak pečlivě testuje. Pokud by nám někdo dokázal ukradnout privátní klíče zákazníků, byla by to až existenciální rána. Občas se tak stane, že za váma přijde někdo z InfoSec týmu a požádá vás, abyste si laskavě zavřeli určité porty. 🙂

Co mě překvapilo je, jak velká fluktuace lidí tu panuje. Prakticky nikdo nezůstává v jedné firmě více než 2 roky (což je typicky doba, kdy se vám odemkne velký balík zaměstnaneckých akcií) a odchody tak nikdo nebere moc osobně. Každou středu je tak s někým rozlučka v nedalekém baru a každý druhý pátek zas welcome party pro 5-10 nových zaměstnanců. Z firem do kterých lidé odcházejí zároveň další lidé přicházejí.

Firma sídlí v nejslunnější části San Francisca a má pobočky v Londýně a Singapuru. Hned přes ulici jsou firmy jako Docker, AirBnb, Dropbox, Pinterest či Mozilla a všude v okolí desítky (možná stovky) dalších startupů. Každé ráno můžete vidět davy techies, který se na kolech, elektrických koloběžkách, longboardech či jiných šílenostech typu airwheel valí do práce.

Poslední tři týdny v CloudFlare bych měl pak pracovat i na hlavním webu. Náš frontend subtým měl totiž 5 lidí včetně mě a dva vývojáři z něj minulý měsíc odešli (do Facebooku a Twitche). Jsem teď jediným FE vývojářem v San Franciscu a tak se mě občas choděj lidi na něco ptát a samozřejmě vůbec netuším 🙂  V přístím článku napíšu něco i o samotném San Franciscu.

Aktualizace: Knihovna na které jsem pracoval je už venku! Přečtěte si můj článek CloudFlare’s JSON-powered Documentation Generator.

Letní semester na Techu
9.05.2016

Další semester hotov a cesta Georgia Techem se tak blíží k zdárnému konci. Na jednu stranu je super po šesti letech a čtyřech různých vysokých školách vidět světlo na konci tunelu. Na druhou je to taky tak trochu smutné. Dostat se na Tech byl několikaroční proces a když tu konečně jsem, tak si připadám, jak v zrychlené bublině. Pod závalem projektů, úkolů a hodin není moc času nazbyt a všechno velmi rychle utíká. Rok je navíc ona kritická doba, kdy se někde konečně usadíte, vyznáte se dobře v okolí, uděláte si kamarády a život začne být pohodlný. A za půl roku zase od znova.

V letním semestru jsem si zapsal opět 12 kreditů aka čtyři předměty. Celkově byl semester lehčí než ten zimní. Za prvé, už jsem věděl, jak tu věci chodí a tak jsem lépe soustředil čas do věcí, které přinesly největší hodnotu (například nemá smysl trávit hodiny čtením textbooků pokud rozumíte výkladu v hodinách). Za druhé, ani jeden z předmětů nebyl tak pekelný jako Applied Cryptography, ve kterém jsem se plácal od začátku do konce.

Network Security (A)

Síťová bezpečnost. Jediný předmět z mého povinného InfoSec okruhu. Soustředil se na kryptografii, DNS a DDOS útoky, malware a botnety, detekování anomálií. Nejlepší částí byly studie reálných útoků z poslední doby a vhled do toho, jak probíhají state-of-the-art útoky na důležitou infrastrukturu. Profesor a jeho laboratoř se soutředí na výzkum DNS, například sbírají ohromné množství dat od velkých amerických operátorů a pomocí různých klasifikátorů se v nich snaží najít zajímavé vzorce. Velkou částí předmětu byl týmový projekt. Náš se zabýval sbíráním záškodnických IP adres, domén atp. z různých blacklistů. V projektu nejspíš budu pokračovat v rámci praktika, jelikož i tyhle data poskytují zajímavé souvislosti.

Software Analysis and Testing (A)

Softwarová analýza a testování. Nejtěžší a nezajímavější předmět. Věnoval se různým druhům testování, (částečně) automatizovaným a různým pokusným. Většinou daleko mocnějším než těm, které se dnes běžně používají. Vše se motalo kolem dynamické, statické a hybridní analýzy. Měli jsme celkem 8 různých programovacích úkolů, někdy se daly zvládnout za pár hodin, jindy však zabraly i několik dní. Vždycky mě bavilo vše kolem automatů, kompilátorů a podobným oblastem CS. Navíc bylo super, že to nebyl jenom teoretický předmět, ale mohli jsme si i zaprogramovat. Midterm a závěrečná zkouška byly takovou sérií různých hádanek a simulací některých algoritmů, což mě vždy dost baví.

Internet Architecture and Protocols (B)

Internetová architektura a protokoly. Máte 100GB síť. Router tak musí klasifikovat a přeposlat jeden paket v řádech nanosekund, jaký algoritmus a logické obvody použít? V Computer Science je spousta předmětů, které se věnují algoritmizaci a datovým strukturám, většinou však jen velmi teoreticky. Tenhle předmět na to jde velmi prakticky a kombinuje dohromady tak nějak všechno (včetně hardwaru), protože je potřeba vše optimalizovat až na dřeň. Známé CS algoritmy/datové struktury se tak vylepšují pomocí různých vychytávek, mikrooptimalizací a zkratek, aby dnešní internet mohl být tak rychlý. Každá „prasárnička“ je dovolená, pokud ušetří další instrukci či místo v paměti. Až do tohodle předmětu jsem neměl páru, jak komplikované vlastně je udržet internet v „optických“ rychlostech a „Network Algorithmics“ byl tak pro mě úplně nový svět.

56830581

Advanced Internet Systems (A)

Pokročilé internetové systémy. Zatím nejhorší a současně nejlehčí předmět, co jsem na Techu měl. Byl tak nějak o všem a tudíž o ničem. Většina materiálů byla dost zastaralá a nikdy se nešlo do hloubky. Takové povídání o celém internetu. Profesorka učí ještě další 2 předměty v podobném stylu. Nedává žádné testy, celé známkování je založené jen na domácích úkolech a docházce. Přijde mi, že je to takový ten předmět, který si studenti zapisují, aby si zlepšili průměr a měli více času na ty zbývající. Nicméně v rámci předmětu jsme dělali projekty a tak jsem na to napasoval svůj side projekt ChessB a implementoval alespoň pár věcí.

Bylo fajn, že jsem měl tentokrát větší možnost výběru, jelikož většinu oborových předmětů jsem udělal už na podzim. Až na Advanced Internet Systems mě všechny předměty dost bavily. Konec semestru byl tradičně velmi výživný – aneb opět se mi tak trochu sesypal po dobu 2 týdnů běžný denní režim (cvičení, normální jídlo, spaní, zdraví…), ale nakonec se všechno podařilo dotáhnout. Příští (poslední) semester by měl být volnější, jelikož budu mít jen 2 předměty a praktikum (individuální práce, tak trochu ve stylu diplomky ale bez diplomky, nicméně mohla by z toho vypadnout publikace).

Nyní 2 týdny prázdnin a pak hurá do San Francisca, což bude nejdůležitější léto v mém životě. Krom práce v super společnosti, na kterou se hodně těším, budu muset zároveň obrážet i všemožné firmy, eventy, hackathony, meetupy a hledat svou první full-time práci, protože v lednu 2017 mi začne odtikávat 15 měsíců, kdy můžu v Americe pracovat bez pracovního víza.

STARŠÍ »