2. listopadu 2011 ↴

Nehostinný vesmír README.TXT

Nehostinný vesmír je minimalistický prototyp HTML5 3D hry. Zahrát si jej můžete zde. UPDATE: Ke hře si můžete pustit skladbu Angry Universe od Ondřeje Václavíka, která vznikla za tímto účelem.

Naprogramování Nehostinného vesmíru mělo jediný cíl: ukázat, že za 3 večery jde vytvořit prototyp HTML5 hry, který už je aspoň minimálně hratelný. Jak jsem psal na Google Blogu:

HTML5 je právě teď možná jediná platforma, na které lze vysloveně za jeden den vytvořit něco originálního, ale přitom potenciálně masově využívaného. […] Shodou okolností je HTML5 také platforma s obrovskou uživatelskou bází, která bude v nejbližších letech jenom růst.

V současném stavu Nehostinný vesmír skoro nic neumí. Hráč se snaží kometou strefit planetu Zemi. Kometa se chová podle fyzikálních zákonů (setrvačnost, zrychlení, gravitace). Score se navyšuje za zajímavé průlety. Zcela chybí persistence, tím pádem i high scores apod. Grafika (jestli se tomu tak dá říkat) je škaredá a splácaná horkou jehlou. A tak dále.

Jako PC hra by Nehostinný vesmír byl naprosto zoufalý. Vtip je v tom, že jako HTML5 hru si jej můžete zahrát bez instalace, okamžitě, bez přihlašování, a s jakýmkoliv moderním prohlížečem (s podporou WebGL). Už z toho důvodu toho člověk takové aplikaci také hodně odpustí. To jsou v tuto chvíli dvě hlavní výhody HTML5: skoro nulová bariéra vstupu a nízká očekávání.

Jak Nehostinný vesmír vznikl:

  • Nápad trochu vychází z jedné staré edukativní PC hry, kde jste mj. měli za úkol “řídit” raketoplán orbitující Zemi. Název si bohužel nevzpomenu.
  • Při programování WebGL jsem vyšel z tohoto Three.js dema od Mr Dooba.
  • Nejvíce času mi zabralo:
    • dostat se do Three.js (tahle úžasná WebGL knihovna bohužel není úplně svědomitě dokumentovaná)
      • ale tohle se bude hodit … :)
    • vzpomenout si na různá úskalí a specifika JavaScriptu
      • od TMZNS jsem na JS nesáhl — a TMZNS jsem navíc dělal v Closure
    • odladit fyzikální model, aby byl přiměřeně hratelný a přiměřeně realistický
      • nejvíc mi dal zabrat jeden idiotský bug, který jsem si na sebe sám ušil
  • Programování mě hodně bavilo (až na ten bug, teda), což přičítám hlavně extrémně rychlé iteraci
  • Prototyp bych měl hotový o dost dřív, kdybych nebyl tak důsledný a nebral ohled na (možný) budoucí vývoj:
    • Snažil jsem se vyhnout prasárnám jako globální proměnné apod. všude, kde to šlo.
    • Přestože se hra v podstatě odehrává ve 2D (plochá sluneční soustava), kód by fungoval i v plném 3D
      • zkuste při hře dát do adresního řádku toto a stisknout Enter:
        javascript:g_game.match.level.reset();g_game.match.level.shoot();g_game.match.level.playerControlledBody.velocity.set(0,100,0);
    • Není problém jakkoliv změnit sluneční soustavu
      • Orbitujících vesmírných těles může být kolik chcete, a můžou orbitovat kolem sebe navzájem (takže například zemský měsíc by klidně mohl mít svůj vlastní malý měsíc nebo by v prostřed soustavy mohly orbitovat dvě slunce kolem společného těžiště)
      • Přidat další planetu je záležitost nalezení textury a přídání příslušného elementu do JSONu na začátku html souboru
    • V kódu se počítá s levely, s více kometami (které se navzájem ovlivňují gravitačním polem), s různě rychle plynoucím časem
    • Krokový fyzikální model si dává pozor na příliš prudké změny. Pokud je těleso v silném gravitačním poli, na pozadí se až 16x zpomalí čas.
    • A tak dále..

Moc rád bych, kdyby tenhle můj experiment někoho povzbudil k tomu také si něco vytvořit v HTML5. V českém Googlu jsme nedávno spustili soutěž Mám padla, která má podobný cíl: povzbudit lidi k napsání minimalistických HTML5 aplikací. (S tím, že uděláme “galerii” přihlášených aplikací, kterou mediálně podpoříme!) Znáte tu analogii o naskakování na ujíždějící vlak? Mám pocit, že v tuto chvíli HTML5 vlak ještě ani nevystartoval (ale už zazněla píšťalka průvodčího) .. :)

Kód Nehostinného vesmíru je k dispozici open-source zde. Nevylučuji, že se k němu už nevrátím. Budu proto moc rád, pokud kdokoliv z vás kód jakkoliv využije. Buď z toho udělá regulérní hru, nebo třeba pomůcku pro výuku fyziky.

PS: Jestlipak uhádnete, která populární hra mě inspirovala k pracovnímu názvu “Angry Universe”. :)

6. října 2011 ↴

Zájmové aktivity → zajímavější kariéra?

Uvědomil jsem si, že za všechny důležité postupy ve své kariéře (dá-li se to už tak nazvat) vděčím svým zájmům. Tedy ne tomu, co jsem kdy dělal “9-to-5” (anglosaské “od devíti od rána do pěti do večera”), ale tomu, co jsem dělal ve volném čase — po večerech a o víkendech. Přišlo mi to natolik zajímavé a úžasné zjištění, že jsem se o něj rozhodl podělit.

Příklad 1: Zájem o počítače

Můj zájem o počítače začal s knížkou Tak funguje počítač.* Nedlouho po jejím přečtení jsem začal programovat v BASICu na čtverečkovaný papír. (Programy to byly jistě pěkné, ale neměl jsem je jak otestovat.) Pak naše ZŠ koupila počítač a já se přihlásil do nepovinného kroužku. Následně jsem dostal Commodore 64. O několik let později jsem své rodiče donutil koupit neuvěřitelně drahé PC a v jeho přítomnosti strávil většinu volného času svého mládí.

Tenhle koníček mi otevřel dveře do možná nejdynamičtější oblasti dnešního pracovního trhu: informačních technologií. O žádném povinném předmětu, který jsem na ZŠ měl, se tohle říct nedá. (Což samozřejmě neznamená, že byly k ničemu!)

* Aspoň myslím, že se ta knížka takto jmenovala. Byla taková kreslená a hrdinové se v ní zmenšení procházeli po procesorech a vysvětlovali binární kód.

Příklad 2: Japonština

Ke konci gymnázia jsem se přihlásil do kurzů japonštiny. Všichni to brali jako úlet, mnozí se nahlas divili, proč se někdo v ČR učí zrovna japonsky. Sám jsem to nevěděl. Našel jsem tehdy plakátek na chodbě a připadlo mi to zajímavé.

O pár let později jsem právě díky znalosti japonštiny odcestoval na necelý rok do Ósaky. Už jenom samotná zmínka o tom, že jsem byl rok v Japonsku, mi od té doby otevřela mnoho dveří. A to ani nemluvím o všem, co jsem se pobytem v Japonsku naučil.

Příklad 3: Visible.cz

Tady pro stručnost trochu přeskakuji, ale ve své první pracovní pozici, ve firmě FAnn Retail, jsem se často setkával se samozvanými pseudo-experty na internetovou reklamu. Po večerech jsem začal vytvářet (Ruby on Rails) web, kam jsem umisťoval moudra o SEO a SEM. Později jsem tam rozjel i blog. Celý projekt jsem nazval visible.cz.

Tahle volnočasová aktivita mi později vynesla možnost školit internetový marketing pro společnost Nicom — a nepřímo pak i pozici v Googlu. Svoji 9-to-5 práci ve FAnnu jsem odváděl myslím velmi dobře, ale na další stupínek v mém profesním životě mě vyneslo to, co jsem dělal po večerech.

Příklad 4: Google

V Googlu jsem nastoupil na pozici Account Strategist — technologicky a copywritersky jsem pomáhal top klientům s jejich AdWords reklamou. Byly to skvělé 2 roky, ale moje srdce čím dál víc bilo pro něco trochu víc IT/geeky. Po večerech jsem v průběhu těch dvou let dělal na několika málo interních projektech a na několika málo vlastních věcech — vše se točilo kolem programování.

Zhruba před rokem jsem přestoupil na svoji současnou pozici, která je mnohem víc o technologiích. Pochopitelně mi k tomu pomohl i nadprůměrný výkon v “9-to-5” aktivitách, ale moje volnočasové IT projektíky měly nejméně stejný podíl.

Nejde jen o mě

Známý známého se zamiloval do leteckých simulátorů. Po práci doma létal mezi virtuální Ruzyní a Frankfurtem (a tak podobně). Koupil si drahou výbavu, profesionální joystick, atd. Dnes létá jako dopravní pilot v jedné aerolince, s opravdovými letadly a pasažéry a letuškami a Ruzyněmi a Frankfurty.

Michal Kašpárek píše články pro FinMag, Peníze.cz, MF Dnes. Ve volném čase zaregistroval doménu ŽítBrno.cz a začal na ní satiricko-recesistický projekt. Podle čeho dnes většina lidí Michala Kašpárka zná? Kvůli čemu se s ním dělají rozhovory? Kvůli ŽitBrno.

A nyní: ponaučení!

Nepovažujte své zájmy za zbytečné. Nebo dokonce za ztrátu času.

A naopak: nečekejte, že když budete excelentně odvádět svoji 9-to-5 práci, že vás to automaticky někam posune. Podle mých zkušeností dostanete maximálně přidáno, ale budete dělat jen víc toho, co děláte už teď.

Pokud by nebylo mých zájmů, a pokud bych se držel čistě jen “osnov”, osobně bych měl po VŠ problém se vůbec uplatnit na pracovním trhu. Česká republika nepotřebuje zase tolik žurnalistů s přehledem o mezinárodní politice a IT. :)

Pár důležitých poznámek

Strašně nerad bych, aby článek vyzněl jako potvrzení takového toho “vaše kariéra je pouze ve vašich rukou”. To jsou kecy. Potřebujete hodně štěstí a podpory.

  • Ne všechny zájmy jsou stejně užitečné.
    • Pokud bych se na ZŠ místo do počítačů zamiloval do akordeonu (na který jsem hrál), měl bych se dnes asi o dost hůř. I kdybych byl třeba nejlepší akordeonista v republice, můj plat by stěží dosahoval celostátního průměru. Měl jsem tehdy obrovské štěstí, že mě zaujaly zrovna počítače.
  • Kdybych nebyl na gymplu takový chcípák, pravděpodobně bych dal před PC přednost lítání po venku a za holkami. I tady jsem měl (svým způsobem) štěstí.
  • Ne každý má na koníčky peníze. Ne každý má rodiče, které mu zájmovou aktivitu zasponzorují. A v neposlední řadě roli hraje i stát.
    • Kdyby známý známého (pilot) nemohl investovat do profesionálního simulátoru a vybavení, nikdy by neopustil své 9-to-5 zaměstnání.
    • Kdyby mí rodičové neinvestovali velké peníze do rodinného (v reálu spíš mého) počítače, daleko bych to v tom IT nedotáhl.
    • Kdyby nebylo peněz daňových poplatníků za počítač na škole, programování na papír by mě asi brzy začalo nudit. Kdyby stát nedodal internet do mého gymplu, ještě dlouho bych si na World Wide Web nesáhl. Atd.
  • A v neposlední řadě: ne každý má volný čas.
    • Ok, neberu v potaz lidi, kteří nemají volný čas, protože jej vyplňují koukáním na televizi. To je jejich problém.
    • Na druhou stranu beru v potaz lidi, kteří mají například natolik fyzicky vyčerpávající zaměstnání, že po návratu domů fakt nemají na nic než koukání na bednu.
    • A samozřejmě existuje milión dalších, velmi legitimních důvodů, proč člověk nemá čas na své zájmy. Děti, nemoc v rodině, dvojitý úvazek, … atd. atp.

Ale jinak: máte zájmy? Držte se jich.

2. října 2011 ↴

Povídka – kam s ní?

Napsal jsem povídku a uveřejnil jsem ji přímo jako HTML stránku. Pak mi došlo, že jsem něco podobného už dlouho neudělal. Teď nemyslím psaní povídky (byť to jsem taky dlouho neudělal), ale uveřejnění nějakého textu přímo jako HTML stránku.

Došlo mi, že to možná znamená “návrat ke kořenům”.

Mohl jsem uveřejnit povídku jako blogpost, nebo klidně jako G+ post (maximální velikost G+ postu je něco kolem 100KB…). Mohl jsem si taky založit účet na serverech typu “poeta.cz”. Bylo by to asi rychlejší. Ale chtěl jsem mít co největší kontrolu nad prezentací. Chtěl jsem, aby se povídka i na internetu četla jako kniha, ne jako blogpost. Bez distrakcí. Pro všechny stejně. Bez nutnosti zapínat Safari Reader nebo stránku filtrovat přes Instapaper. Bezproblémově i na telefonu nebo tabletu. Chtěl jsem, aby byl text vysázen v určitém typu písma, s určitou výškou řádků, odsazením apod.

A to mi prostě žádná platforma, kterou znám, nenabídla. Přitom nebylo vůbec těžké tu stránku během hodinky napsat. Zdá se mi, že s postupující standardizací CSS a HTML to je čím dál lehčí. Největší problém jsem měl s “optimalizací” pro mobily, ale to nakonec vyřešily dva řádky:

<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no"/>

Samozřejmě netuším, jestli se k téhle metodě ještě někdy vrátím. Možná je to slepá ulička. Ale jak nad tím teď přemýšlím, říkám si, jestli by web neuvítal publishing platformu pro delší texty, s minimem distrakcí a s maximem kontroly nad typografií. Ne tumblr, ne posterous. To jsou pořád blogy. Něco mnohem “literárnějšího”.

28. července 2011 ↴

Vyplatí se loterie?


Občas mám problémy vysvětlit někomu, jaká nebetyčná blbost je sázení v loterii. Lidé stejně nakonec řeknou něco ve smyslu "ale co kdyby to náhodou vyšlo!" Co na to má po několika minutách vysvětlování člověk říct?

"Loterie je daň za blbost", říkají někteří. Nesouhlasím. Chápu, že matematika není pro každého, a některé věci prostě nejsou intuitivní. Dal jsem si proto takové duševní cvičení: jak hloupost loterie vysvětlit co nejjednodušeji a nejvíce pochopitelně. Tady je výsledek:

Jana a Honza se oba chtějí dobrat sumy 20 miliónů Kč (tedy jackpotu Šťastných 10). Jana šetří každý den 10 Kč. Honza si každý den kupuje loterijní lístek Šťastných 10, také za 10 Kč.

Pro našetření této částky bude Jana potřebovat 2 milióny vkladů, tedy 5479 let.

Nicméně: Ve chvíli, kdy má Jana našetřeno (tedy má 20 melounů v kapse), Honza s velkou pravděpodobností (79.9%) ještě nic nevyhrál. Skóre 20 miliónů ku nule.

Aby měl Honza alespoň 50:50 šanci, že vyhraje, potřeboval by sázet 6,177,782krát, tj. až do roku 18,936 n.l. To znamená, že sázení Šťastných deset je trochu jako čekání 17 tisíc let a pak hod mincí. :)

Kdyby chtěl mít Honza skoro jistotu (99% — protože úplnou jistotu nebude mít nikdy), nezbývá mu než sázet 112 tisíc let.

Pro představu, stejný počet let uplnynul od doby neandrtálců po dnes. Za 100 tisíc let bude mnoho dnešních souhvězdí k nepoznání kvůli pohybu hvězd v Galaxii.

Poznámky pro pozorné:
  1. Jana by měla 20 miliónů samozřejmě mnohem dřív — díky úrokům.
  2. Do úlohy na druhou stranu vůbec nepočítám fakt, že Honza může vyhrát i něco menšího než jackpot.
  3. I tak by byl ale výsledek stále o mnoho příznivější pro Janu.

Příklad jsem napsal co nejprimitivněji v Pythonu, abych měl možnost měnit parametry a případné zájemce provést celou logikou. Pravděpodobnost výhry ve hře Šťastných 10 jsem vzal z bakalářské práce Ondřeje Staňka "Loterie". Samozřejmě uvítám jakékoliv opravy či připomínky.


#!/usr/bin/env python
# encoding: utf-8

import datetime
import math

jackpot = 20000000
cena_listku = 10
pravdepodobnost_vyhry = 1.122e-07 # viz http://is.muni.cz/th/78265/prif_b/Loterie.pdf, str. 14

print(u"Jana a Honza se oba chtějí dobrat sumy {jackpot:n} Kč (tedy jackpotu Šťastných 10). Jana šetří každý den {suma} Kč. Honza si každý den kupuje loterijní lístek Šťastných 10, také za {suma} Kč.\n".format(jackpot=jackpot, suma=cena_listku))

pocet_nutnych_vkladu = jackpot / cena_listku
pocet_let_jana = pocet_nutnych_vkladu / 365.0
rok_jana = int(datetime.datetime.now().year + pocet_let_jana)

print(u"Pro našetření této částky bude Jana potřebovat {pocet:d} vkladů, tedy {pocet_let:n} let.\n".format(pocet = pocet_nutnych_vkladu, pocet_let = pocet_let_jana))

pravdepodobnost_prohry = 1 - pravdepodobnost_vyhry

pocet_sazek = pocet_nutnych_vkladu
kumulativni_pravdepodobnost_prohry = pravdepodobnost_prohry ** pocet_sazek
kumulativni_pravdepodobnost_vyhry = 1 - kumulativni_pravdepodobnost_prohry

print(u"Nicméně: Ve chvíli, kdy má Jana našetřeno (tedy v roce {rok} n.l.), Honza s pravděpodobností {p:.1%} ještě stále nevyhrál!\n".format(rok=rok_jana, p=kumulativni_pravdepodobnost_prohry))

fifty_pravdepodobnost = 0.5
pocet_nutnych_sazek_fifty = math.log(fifty_pravdepodobnost, pravdepodobnost_prohry)
pocet_let_honza_fifty = pocet_nutnych_sazek_fifty / 365.0
rok_honza_fifty = int(datetime.datetime.now().year + pocet_let_honza_fifty)

urcite_pravdepodobnost = 0.01
pocet_nutnych_sazek_urcite = math.log(urcite_pravdepodobnost, pravdepodobnost_prohry)
pocet_let_honza_urcite = pocet_nutnych_sazek_urcite / 365.0
rok_honza_urcite = int(datetime.datetime.now().year + pocet_let_honza_urcite)

print(u"Aby měl Honza alespoň 50:50 šanci, že vyhraje, potřeboval by sázet {pocetf:d}krát, tj. až do roku {rokf} n.l. Kdyby chtěl mít skoro jistotu (tj. 99%, úplnou jistotu nebude mít nikdy), nezbývá mu než sázet {let} let.\n".format(pocetf=int(pocet_nutnych_sazek_fifty), rokf=rok_honza_fifty, let=int(pocet_let_honza_urcite)))


Ještě krátká varianta jako "matematický příklad":

Člověk sází 10 Kč denně na Šťastných 10. Jak dlouho musí sázet, aby měl šanci 50:50 (hod mincí), že vyhraje jackpot? Odpověď: 17 tisíc let.


23. července 2011 ↴

Sociální média ≠ hustopřísná revoluce


Aby bylo jasno: Ano, sociální média rozhodně mění vztah "velkých" (např. firmy) a "malých" (jednotlivci). Už jenom proto, že hodně lidí dnes může velmi lehce a zadarmo publikovat svůj názor tak, aby byl dostupný všem. Mediální pole se trochu srovnalo a zdemokratizovalo. Souhlas. A je to tak dobře a je to přirozený vývoj (který začal někdy s vynálezem knihtisku).

Někteří lidé ale dle mého názoru trochu ztrácí perspektivu a považují sociální média za naprostou bombič hustokrutou revoluci, která mění úplně všechno od základů. Narážím na rétoriku, jakou najdete v infotainment videích, jako je toto:



Určitě jste už viděli několik podobných, nebo to samé slyšeli na konferenci nebo na obchodní schůzce. Co se mi na tom nelíbí? Vždyť ta čísla hovoří jasně! Jo, ale autoři úplně splošťují vliv sociálních médií. To v lepším případě. V horším případě ho cíleně nafukují.

Abych byl konkrétnější, zvolím si jednu obzvlášť oblíbenou ideu. Týká se komunikace mezi firmou a zákazníkem. Zní asi takto: firmy konečně komunikují se spotřebitelem. Poprvé v historii od něj dostávají zpětnou vazbu. Sociální média jsou jejich šancí vyslyšet ty "tam venku". Komunikace many-to-many dnes střídá staré a zkomírající one-to-many.

Vážně? Jsem si celkem jistý, že firmy (aspoň ty úspěšné) vždy naslouchaly zákazníkům.
  • Spotřebitelské výzkumy. Jakkoliv to slovní spojení nezní moc sexy, dobře udělané výzkumy jsou pořád ještě mnohem validnější zpětná vazba než tweety nebo statusy.
    • Dobře udělaný kvantitativní výzkum ukazuje reprezentativní rozložení názorů v cílové skupině. Názory na sociálních sítích reprezentativní nebývají. Zkreslení vychází nejen z omezené skupiny lidí, kteří jsou na dané sociální síti, ale ještě menší skupiny těch, kteří jsou ochotní bavit se o značkách, a ještě menší skupiny témat, které dotyční chtějí na sociální síti řešit. Jak často vidíte někoho na sociální síť napsat: "Dnes jsem si nekoupil Snickers, protože jsem tlustý" nebo "Pohádal jsem se s přítelkyní po telefonu, ale přenos zvuku byl skvělý. Bravo Vodafone!"?
    • Dobře udělaný kvalitativní výzkum jde více do hloubky než feedback ze sociálních médií. Nikdo nemůže čekat, že z jednoho či dvou tweetů vytáhne víc informací než z hodinového interview. Jak říkal Henry Ford: "Kdybych se zeptal lidí, co chtějí, řekli by mi 'rychlejšího koně'." Kdyby se ale zeptal pořádně (a já jsem si jistý, že to udělal), rozhodně by se dozvěděl víc. Jak píše Roger L. Cauvin: "[Consumers] are not experts on the features or solutions; they are experts on their experiences and challenges.".
  • Prodej, tržby, tržní podíl, apod. Vzhledem k tomu, že na těchto číslech závisí budoucnost každé firmy, každý si je hlídá velmi pozorně.
    • Tady postačí příklad: nikdy jsem nikam veřejně nenapsal, že mám rád Margotku. Až do teď nebylo proč. Svoji náklonnost k téhle cihle plné kalorií ale dávám najevo tím, že si ji prostě jednou za čas koupím. Asi nemusím rozvádět, že takový způsob komunikace se zřejmě Orionu dost zamlouvá (zvlášť pokud to nedělám jenom já).
  • Zákaznická podpora. Ze všech těch revolučních řečí o sociálních médiích může člověk dostat pocit, že jediný způsob, jak se firma dozví o tom, že je něco špatně, je z Twitteru. Ve skutečnosti mnohem víc reálných problémů reálných zákazníků lze nalézt v soukolích zákaznické podpory (viz tenhle článek od eMarketeru). Ne každý chce například své technické problémy řešit veřejně.
    • Problém nastává, když zákazník žádnou zákaznickou podporu nedostane, a postěžuje si na to na sociální síti. Pak musí firma problémy jednoho člověka řešit na očích všech ostatních. (A v tomto jsou sociální média hustopřísně revoluční!)

Ještě než kliknu na tlačítko "Publikovat", rád bych zopakoval, že sociální média považuji za zásadní. Věřím například tomu, že umožnily Arabské jaro a že si ještě přičtou spoustu skalpů z řad nedemokratických hlav států. Vím také, že mění každodenní život nás všech, a že přetváří komunikaci mezi zákazníky a značkou.

Ale není to taková revoluce, že bychom měli briskně zapomenout na všechno ostatní.

3. června 2011 ↴

Jak jsem naprogramoval TMZNS

Často přepočítávám časy v různých časových zónách. Někdy je to kvůli plánování dálkových konferencí, telefonátů, apod. — v tom pomáhá Google Calendar, který vše přepočítává automaticky. Častěji jde ale o mnohem primitivnější záležitosti:

  • Když mí kolegové v New Yorku něco vypustí v 9 ráno, kolik bude u nás?
  • Má teď cenu volat (nebo spěchat s emailem) do Indie? Do Japonska?
  • Když bude živý přenos z konference v Austrálii, kolik budou mít tou dobou v San Franciscu? A u nás?

Tady je Google Calendar krátký — nebo lépe řečeno “dlouhý”, protože byť v něm takové věci můžu zjistit, je to poměrně na dlouho. Jaké jsou další možnosti? Když hledáte v Googlu třeba time in tokyo, distanete odpověď, ale pouze o aktuálním času. Nejblíž k tomu, co potřebuji, je timeanddate.com, ale tam mě neskutečně nasírá jejich uživatelské rozhraní. Za drop-down menu s tři sta šedesáti šesti (!!!) položkami bych střílel. (Později jsem našel ještě mnohem použitelnější WorldtimeBuddy a EasyClock, ale i tady bych se dostával k požadované informaci zbytečně složitě a úplně nestandardním rozhraním.)

Osobně věřím, že pro textový vstup je pořád ještě nejlepší volbou — světe div se — klávesnice. Ideálně s auto-complete. Chtěl jsem rozhraní, kde bych mohl zadat: “9” → tab → “h” → enter → tab tab → “new y” → enter — a měl bych hotovo. 10 vteřin max. Místo toho jsem dostával samé klik → scroll scroll scroll scroll → klik → klik → scroll scroll → klik … a teď zadáme čas … klik → klik … oops, vedle … klik … → klik. Hotovo uff! Teď už jen kliknout na Convert time a počkat až se načte stránka. Co když chci změnit zadání? No přece zmáčknout link “Make changes to the current search” a klikat a klikat… Co když nedej bože potřebuji upravit druhý čas a zjistit, jak se to projeví na prvním? Vše znova.

Uznávám, že můj přístup je možná trochu specifický. Spousta lidí raději kliká. Ale napadlo mě, že by snad nebylo tak těžké něco takového naprogramovat a uveřejnit to na internetu. Krom toho jsem měl zrovna absťák z programování a hořel jsem touhou vyzkoušet Traceur. A taky Chrome Web Store.

A tak po večerech vznikl TMZNS. Začal jsem cestou na Google IO (7. květen) a první verzi “uveřejnil” 1. června.

Bylo to (samozřejmě!) víc práce, než jsem čekal. (Klasický příklad uvažování typu “tohle by přece mělo být jednoduché!”) V časových zónách je nicméně bordel: rozhodně nejsou jen po hodinách, nejsou rozloženy lineárně, ani po státech, každý si přehazuje letní čas, kdy chce, někteří víc než dvakrát ročně, atd. atp. Více info na Wikipedii.

Tvorba web aplikace mi trvala déle mj. proto, že jsem si toho chtěl co nejvíc vyzkoušet. Slibný Traceur jsem po chvíli vzdal, ještě v něm totiž není implementována žádná UI knihovna. Programování v Pythonu na AppEnginu jsem začal, ale velmi brzy jsem se vydal cestou “vše u klienta” — tedy JavaScript. AppEngine využívám, ale funguje jako bezplatný, velmi rychlý a nezničitelný webhosting (s tím, že je tam prostor na nějaké jednoduché API nebo aspoň statické URL typu tmzns.com/london/newyork do budoucna).

Následoval výběr JavaScriptové knihovny. Nejprve jsem automaticky sáhnul po jQuery, ale pak jsem se zamiloval do Closure Library. O výhodách i úskalích Closure a kompilovaného JavaScriptu se chci rozepsat na českém Google Blogu, takže si tady nechci vystřílet střelivo.

Po tom, co stránka začala jakž takž fungovat, jsem nasadil stylovací nástroj CSSEdit. Podle mě nejlepší způsob, jak “malovat” stránku v CSS. (CSSEdit jsem použil i při designu tohoto blogu.)

Protože je TMZNS open source projekt (zdrojáky tady), seznámil jsem se také blíže s Google Project Hosting a s Mercurialem (rozhodně doporučuji nad SVN, alespoň pro projekt tohoto typu).

TMZNS je web aplikace (která navíc využívá CSS3 a nejlépe vypadá v moderních prohlížečích), dávalo proto velký smysl ji dát na Chrome Web Store jako “aplikaci”. S nástrojem AppMator od kolegy Paula Kinlana to byla záležitost pár minut — i když to znamená, že v tuto chvíli “aplikace” není nic jiného, než bookmark k www.tmzns.com. Aplikace i s daty má totiž přes 7MB — a takové monstrum s tak jednoduchou funkcionalitou se fakt zdráhám někomu nahrávat na harddisk. Třeba se jednou dostanu k tomu tu velikost radikálně sesekat (“mělo by to být jednoduché”).

Aplikace mi už zdárně slouží a zdá se, že se líbí i ostatním. Na Project Hostingu už jsem (doufám zdárně) uzavřel svůj první, byť kosmetický issue. (Mimochodem, je neuvěřitelné, jak rozdílné je zobrazování barev na různých monitorech — původní “subtle” zvýraznění na některých monitorech vůbec nebylo vidět.).

Mám radost z vlastní tvorby i z naučených technologií. Takové projektíky si budu dávat častěji.

8. května 2011 ↴

Kterak Filip přes velkou louži přeletěl a velká nebezpečenství v San Franciscu postoupil (část 1.)

Toto píši z hotelového pokoje v San Franciscu, v neděli 8. května ráno pacifického času. Je to jeden z těch článků, které slouží spíš jako externí paměť autora-zapomětlivce než jako cokoliv jiného.

Z Paříže do San Francisca je to kolem 9000 km a asi 12 hodin letu, ale protože letíte se sluncem, hodinky se vám posunou jen asi o 2 hodiny. Minulý let s takovou vzdáleností (LA-Praha) měl na můj organismus dost drastické následky, tak jsem se tentokrát chtěl pojistit. V návodech proti jetlagu vždy píší, že si člověk hned po vzletu má nařídit čas destinace a od té chvíle se chovat, jako by byl tam. V mém případě: v 7 ráno v Praze si nařídit 10 hodin večer, po přesednutí v Paříži zalehnout a spát. Ale jak se prý říká mezi boxery: “Každý má plán, dokud nedostane první ránu přes držku”. V mém případě: prostě nešlo usnout, a to jsem měl takový ten nafukovací polštář kolem krku a clonu na oči.

Další obrana proti jetlagu: vypít v letadle ~1 litr vody na hodinu letu. Fakt, že hodně chodíte na záchod se zároveň postará o to, že vám nezdřevění celé tělo. Koupil jsem si tedy 1.5l vody na letišti a plánoval jsem si často říkat o čaj apod. Realita: seděl jsem v prostřední řadě mezi dvěma pány, z nichž ten bližší vypadal, že jestli ho budu moc otravovat, vyhodí celé letadlo do povětří (seděl celou dobu v dlouhém černém plášti), a druhý sice neseděl v dlouhém černém plášti, ale také se na mě netvářil moc nadšeně. Jo, a oba skoro celý let spokojeně spali. Strašně nerad někomu působím nepohodlí, takže jsem vypil akorát těch 1.5 litru a dvakrát za let jsem si odskočil, pokaždé přes jiného pána. :)

Po příletu do San Francisca se zjistilo, že moje check-in zavazadlo zůstalo v Praze (problém s pojízdným pásem, který se nějakým záhadným způsobem dotkl pouze mého zavazadla). Přiletí až dnes (v neděli) odpoledne. To znamená, že mám s sebou jen příruční batoh. Žádné náhradní oblečení, a to jdu dnes odpoledne na BarCamp a na večeři s lidmi z GTUGů. Naštěstí se mnou letěl Pavel Kasík, který se zmínil o tom, že aerolinky musí poskytnout peníze na oblečení v případě, kdy člověk někam dolítne a nemá co na sebe. Forwardnul jsem tu informaci paní za přepážkou. (Abych byl fér, paní z Air France byla příjemná a pravděpodobně by se k tématu dostala i bez mého všetečného dotazu.) Zjistilo se, že člověk má v takové situaci právo na utracení až €100 za oblečení — a částka mu bude proplacena. Navíc mi paní podala tyhle epesní mikro-hřebeny a mikro-kartáčky, mikro-deodoranty a mikro-krémy na obličej. Velká paráda.

Po příjezdu BARTem do centra San Francisca (Market & Powell) jsem s povděkem zjistil, že město je stále stejně živé a šílené, jako když jsem jej v lednu opustil (moje první výprava do US). Prošel jsem kolem slavného člověka s cedulí “Jesus Christ Loves You” a několika hiphoperů s boomboxy, a ubytoval jsem se v hotelu Triton. Zkuste si představit veskrze hippie hotel — s barevnými chodbami, gay recepčním a escherovský schodištěm — vaše představa žije, hned vedle slavné brány do Chinatownu.

Odpoledne jsem na doporučení gay recepčního zašel nakoupit bundu, triko a košili do místního H&M. Tohle je výsledek (nemyslím ten zamračený ksicht, ale to, co mám na sobě). Pak jsem se najedl výborného japonského menu (za velmi příznivou cenu) v nenápadném čínském bistru v Chinatownu. Byl jsem tam už v lednu, takže jsem šel na jisto.

Po návratu na pokoj jsem chtěl ještě pracovat, ale po chvíli jsem to vzdal a lehl. Šel jsem spát někdy kolem osmé, 24,5 hodiny ranním stávání v Praze. Vstal jsem v 5 ráno — a tento text je způsob, jak jsem se vypořádal s časem, kdy je venku zima a všude je zavřeno. Teď už ale hurá do ulic!

Pokračování (možná) příště.

15. března 2011 ↴

Proč je méně (lidí) někdy více (odvedené práce)?

Odpověď je jednoduchá: čím více kolegů s podobnou náplní práce, tím větší pocit, že to udělá někdo jiný.

Když jste na něco sami, tenhle pocit nikdy nemůžete mít. Když máte jen několik kolegů, zeptáte se jich. Ale jakmile jste v organizaci, kde má 1000 lidí na starosti jednu a tu samou věc, můžete se lehce dostat do módu: “na tomhle určitě už někdo dělá” nebo hůř “proč bych to měl řešit zrovna já?”.

Dobrá zpráva je, že se proti tomu dá bojovat. Za prvé: firemní kultura. Za druhé: uvědomění si problému. Za třetí: přesnější definování povinností každého jednotlivce. Za čtvrté: issue tracking.

1. března 2011 ↴

AppEngine projekt

Pro jeden projekt (nesouvisející s Googlem) bych rád najal někoho, kdo si rozumí s AppEnginem. Nemůžu se ohánět nějakým extra vysokým finančním ohodnocením. Jinými slovy: studenti vítáni!

Ony jsou to projekty vlastně dva. Ten první je spíš na sondování možností. Zato ten druhý by mohl být pecka, děcka! :)

Pokud má někdo zájem, něchť prosím napíše mail na filip tečka hráček zavináč gmail tečka hádej co. Stačí něco jako “tady jsem”, odkaz na LinkedIn (nebo něco podobného), a — pokud je — příklad existující aplikace. Vyhrazuji si právo neodpovědět osobně na všechny maily, pokud jich náhodou přijde víc než malé množství.

Díky a tweety vítány!

28. února 2011 ↴

Konec internetu

Dnes stále ještě slýcháváme: “Zajdu si na internet,” nebo “Kouknu se na to na internetu.” Ne, že by si snad někdo myslel, že internet je místo. Internet prostě jen není všude. Průměrný Čech má na internet připojený pouze počítač. A když chce na internet, musí k tomu počítači fyzicky dojít.

Co se stane, až bude mít většina lidí (řekněme v Evropě) přístup k internetu odkudkoliv? Už nebudeme “chodit k internetu”, protože internet bude v našich mobilech, v autech, v našich hodinkách, fotoaparátech, diktafonech, částech oděvu. Připojenost na internet nebude specifikum, ale samozřejmost. 

Přestaneme vnímat, že něco “je na internetu”, protože skoro o ničem se nebude dát říct, že není.

Slovo “internet” vyjde z užívání, stejně jako se to stalo v posledních ~10 letech slovu “digitální”. V devadesátých letech byly digitální hodinky, digitální počítače, digitální obrazovky. Dnes je samozřejmě digitální skoro všechno. Vlastnost “digitální” je natolik rozšířená, že mizí ze slovníku. Kdy jste naposledy slyšeli výraz “digitální hodinky”? A nejde jen o slovník laiků: podívejte se, jak se za posledních pár let obrátila křivka používání slova “digital” v anglické literatuře.

Další zajímavý efekt všudypřítomné (a proto neviditelné) vlastnosti “digitální”, je nově nabytá důležitost slova “analogový”. Analog je dnes něco navíc. Lidé si kupují analogové desky, protože mají rádi “ten analogový zvuk, který vám [digitální] empétrojky nikdy nenabídnou”.

Co to všechno znamená pro internet? Že se mu bude dařit skvěle, přestože – nebo právě proto, že – o něm lidé budou stále méně mluvit a uvažovat. Že se dostane do míst, kde bychom ho nikdy nečekali (viz: Kindle není nic jiného než digitální kniha). Že přestane být vyjímečný a privilegovaný.

Co to znamená pro nás, dělníky internetu? Pokud si můžeme dovolit myslet dostatečně daleko dopředu:

  • Nemá cenu vůbec uvažovat nad offline situacemi. 
  • Nemá cenu uvažovat nad “internetovou” versus “ne-internetovou” cílovkou.
  • Můžeme předpokládat, že internet bude ve všem. Dává tedy smysl například stavět produkt určený pro online fotoaparáty.
  • Slovy “online”, “internet” a “web” už nikoho neohromíme.
  • Naopak vzroste na významu slovo “offline”. Možná je na čase koupit chatu někde daleko v horách a začít ji propagovat jako “offline lázně”. 

Ale Filipe, vždyť já jsem na internetu skoro pořád už teď!

Já taky. Ale stále ještě ne úplně pořád. Např.: moje videokamera je offline. Ale samozřejmě i tak si sahám na budoucnost – už dlouho jsem neřekl, že si zajdu na internet. Jenže já a ty, milý čtenáři, nejsme ani zdaleka průměrný Evropan. Aneb, jak říká William Gibson: “The future is already here – it is just not very evenly distributed.”

10. února 2011 ↴

#FAIL konference

Dnes kolem poledne jsem tweetnul nápad, který mi leží v hlavě už nějaký čas: co takhle zorganizovat konferenci, na které se lidé nebudou chlubit svými úspěchy, ale naopak svými největšími/nejzajímavějšími neúspěchy. K mému nadšení nápad vzbudil docela velký zájem! (Ale k tomu se ještě dostanu.)

Cílem takové konference by samozřejmě bylo poučit se z chyb druhých, abychom je nemuseli dělat sami.

Zároveň by ale takováto akce měla další cíl: podpořit trochu “culture of fail” v ČR. Nemůžu si za boha vzpomenout, kdo mi ten nápad vnuknul (což je #fail sám o sobě) (UPDATE: byl to Dan Franc!), každopádně to není původem můj nápad, ale čím dál víc si myslím, že se tady lidi za své chyby a neúspěchy stydí víc, než je zdrávo. Nerad dávám někoho “za vzor”, ale koukněte třeba na Setha Godina: světově známý spisovatel a marketingový guru, který svůj úspěch založil stejně tak na svých neúspěších jako na tom, co se mu povedlo. Nebo jinak: vzpomeňte si na nějakou přednášku na škole nebo konferenci, kde přednášející otevřeně přiznal svoji chybu. Klesl ve vašich očích na ceně? Pravděpodobně ne. Naopak, tím spíš jste jej začali poslouchat a respektovat. A možná, možná, jste se do budoucna méně báli jít do rizika, protože jste si řekli: vždyť ten #fail zas tak moc nebolí! (A hlavně: většinou časem přebolí.) Aspoň na mě to ten efekt má.

Na twitteru i jinak mi přišla spousta reakcí a nápadů:

  • Evidentně by taková akce nebyla první svého druhu, viz např.: failcon2010.com (@fero8). A v rámci jiných konferencí proběhlo spousta fail-talků i v ČR, např. ta od @fczbkk na Webexpu.
  • Pár lidí nad tímhle už nějakou dobu uvažuje, třeba Webexpo. Yay!
  • Dobrá poznámka od Marka Prokopa: existují zajímavé a nezajímavé chyby. Tipl bych, že ty zajímavé:
    1. Jsou přiměřeně vtipné.
    2. Dá se z nich vyvodit nějaká obecnější rada.
  • Vznikly obavy, že bude taková konference příliš smutná (viz @virtone).
    • Samozřejmě: pokud by všichni přednášeli o tom, jak jim umřel člen rodiny nebo jak přišli o ruku, bylo by to depresivní až až. Ale to jsem neměl úplně na mysli.
    • Myslím spíš profesní chyby (ať už vtipné nebo méně vtipné). Klidně i osobní, ale rozhodně by nemělo být cílem konference rozbrečet přednášející na pódiu.
    • Každý fail by měl mít nějaký happy end. Přinejmenším poznání, že to byl fail. A ještě lépe nějaká rada do budoucna.
  • Každý by se měl chlubit pouze vlastními neúspěchy. (Viz otázka @Marek_Baco.) Mluvení o tom, jak to “ti druzí” dělají špatně, to je přirozená součást každé druhé konference… :)

Dostal mě tweet @nofreeusernames:

Já chci fail konferenci! Místo afterparty bude večírek looserů se špatnou hudbou a pískajícími mikrofony

To mě přivedlo na skvělou výhodu takovéto konference: pokud to bude organizačně #fail, tak to bude vlastně #win! Co jiného čekat od #fail konference než nefungující wifi, vypadávající obraz, pískající mikrofony a držkopády na pódiu? Jestli to bude ve finále vypadat nějak takhle, budu náramně spokojený… :)

Takže myslím, že nápad má potenciál i podporu. Teď už jen převést ho do praxe. Vůbec se nebudu zlobit, když se organizace ujme někdo jiný, takže se mi moc líbí návrh z Webexpa (Vašku?). Bohužel nemám časovou kapacitu dělat akci od nuly a sám. Takže pokud byste chtěli být součástí (organizačně, nebo jako přednášející, nebo jinak), napište mi.

Díky!

UPDATE: Dan Franc v komentářích doplňuje článek natolik zajímavě, že si to zaslouží citaci:

Podpora "kultury chyby" může but největší věc, co lze pro podporu startup kultury speciálně v čr udelat....nebavili jsme se o tom nakonec my dva spolu? A nesouhlasím, že chyba musí mít happyend, musí být jen dobře popsána a musí být svědkem odvahy jejího nositele, protože failcony jsou v mém pohledu konference o odvaze, reflexi a síle (jít dál). Ty chyby jsou jen prostředkem k tomu. Failcony jsou podle mě především oslava odvahy a ta mi u nás docela chybí. Velký problém v čr bude právě image nositele neúspěchu jako losera. Bohužel nechapeme, že většina podnikatelských projektu prostě nevychází a že to je nutná podmínka podnikání....
Zároveň x neúspěchu je nejlepší podnikatelská škola a skoro podmínka nutná pro podnikatelské zrání. To se u nás ale často taky nechápe. Navíc média budují kult úspěšných podnikatelů a zcela ignorují realitu cesty, která k úspěchu vede, a statistickou míru úspěchu vs neúspěchu.. no nic, víc zas jindy

9. února 2011 ↴

Poslední volná třípísmenná .cz doména

Tak jsem z legrace projel (nedokonalý) seznam všech českých podstatných jmen svým skriptem na výběr volných domén. Zajímalo mě, kolik v české TLD zbývá jedno- až tří-písmenných domén. Pro fajnšmekry, použil jsem následující příkaz:

python check-whois.py --max=3 most-czech-nouns.csv

Skript nezklamal a vyhodil seznam osmi volných domén. Většina z nich ale nedává smysl, respektive se nejedná o podstatné jméno v prvním pádě (jak jsem říkal v minulém článku, seznam, ze kterého jsem čerpal, je narychlo splácnutý a velmi nedokonalý) nebo je to něco hodně obskurního.

Zbyla jedna doména, která mě ale dostala…

 

 

 

 

 

(wait for it...)

 

 

 

 

kýv.cz   (To jako od slova “kývat”.)

No řekněte, není to nádhera? Opovažte si ji někdo zaregistrovat, vždyť je to něco jako ohrožený druh! Poslední mohykán! :)

<-- poslední svého druhu!

Pro úplnost, seznam ostatních volných domén, které mi skript vyhodil (ty už mě tolik nepobavily):

  • Hyx.cz
  • kyv.cz
  • lvy.cz
  • pyr.cz
  • ryv.cz
  • tys.cz
  • tyz.cz
  • vyd.cz

8. února 2011 ↴

Jak najít dobrou doménu? (skript)

Dobrá doména může mít obrovský vliv na úspěšnost webových projektů a celých firem. Samozřejmě, že existují výjimky (viz: Google), ale obecně lze doménu považovat za stejně důležitou pro internetový byznys, jako je pro “kamenný” byznys důležitá lokalita plus logo.

Problém je v tom, že domén ubývá (na rozdíl od dobrých projektů). Najít jednu relevantní je i přes nástroje jako Domain Typer velká dřina. Co víc, nikdy se nezbavíte té zžíravé otázky, jestli náhodou tam někde venku není ještě lepší doména, než kterou jste právě koupili. (Paradox of Choice.)

Jsem si jistý, že domaineři na to mají nástroje. Skript, který jsem si naprogramoval a zde předkládám, by měl trochu “srovnat hladinu” tím, že nabídne možnost najít tu správnou doménu v podstatě komukoliv.

Co budete potřebovat?

  1. Skript check-whois.
  2. *nix operační systém.
    • Proč? Skript pro jednoduchost využívá command-line příkazu whois, který je výchozí součástí unix/linux systémů, ale už ne například Windowsů. (Nebo se mýlím?)
    • Vyzkoušeno na Mac OS X a Ubuntu, ale s trochou snahy může fungovat například i na NAS disku nebo pod Windowsama v Cygwinu.
  3. Alespoň základní chápání *nixového příkazového řádku.
  4. Textový soubor plný klíčových slov.
    • Může to být například (hóóódně nedokonalý a neúplný) seznam 64 tisíc podstatných jmen, který jsem pro vás narychlo vyextrahoval z .dic a nahrál do Google Fusion Tables.
    • Ještě lépe to bude seznam klíčových slov, ať už z AdWords Keyword Tool, nebo ze statistik vašich webů.

Jak na to?

Vytvořte si soubor plný klíčových slov z bodu čtyři. Musí to být jedno klíčové slovo (sousloví) na řádek, žádné další informace. Soubor můžete nazvat třeba keywords.txt.

Jděte do příkazového řádku (= do terminálu) a napište něco takovéhoto:

python check-whois.py keywords.txt domains.txt

Program projde všechna klíčová slova v souboru keywords.txt, převede je na doménu 2. řádu (Svatý Mikulášsvatymikulas.cz) a zjistí, jestli je pro ni WHOIS zápis. Pokud ne, doména je pravděpodobně volná, a přibude jako nový řádek do souboru domains.txt.

Skript zachová pořadí původního souboru, takže pokud jste měli třeba klíčová slova seřazená podle hledanosti odshora dolů, budete mít seznam domén seřazený podle důležitosti.

Prográmek vás bude průběžně informovat o tom, co dělá (nebo naopak nedělá: někdy je potřeba nechat WHOIS server oddychnout). Pokud chcete vidět, jak se vám plní seznam volných domén, otevřete nový terminál a napište tail -f domains.txt.

Pokročilé možnosti

Pokud spustíte prográmek bez parametrů, vyhodí vám toto:

This simple script will go through a text file full of keywords and find out if there are any free domains.

Usage: python check-whois.py [OPTIONS] input_file.txt [output_file.txt]
Options:
-h, --help                  Show this help.
-d, --tld=STRING            What TLD to check for. Default is 'cz'.
-s, --suffix=STRING         If no output_file is given, the script will create
                            a new filename by adding a suffix.
                            Default is '-freedomains'.
--min=NUMBER                Minimum number of characters in a domain.
                            Default is 1.
--max=NUMBER                Maximum number of characters in a domain.
                            Default is 18.

To tak nějak shrnuje veškerou funkcionalitu. Pokud tedy chcete všechny volné .com domény s délkou přesně 5 znaků, napište:

python check-whois.py --min=5 --max=5 -d com keywords.txt domains.txt

Pár poznámek na okraj

  • Skript funguje pouze pro tyto TLDs: .cz, .sk, .com, .net., .org. Je ale velmi lehké přidat podporu dalších TLDs, koukněte do kódu.
  • Licence je MIT, takže samozřejmě zdarma a “AS IS”.
  • Skript není žádná princezna. Předem se omlouvám všem s vysokými nároky na uhlazenost kódu. :)
  • Pokud byste chtěli skript vylepšovat a ta vylepšení dát na code.google.com, dejte mi vědět! Přidám vás do členů.

Snad vám prográmek bude užitečný, nebo ještě lépe: bude inspirací pro nový projekt, službu, start-up, cokoliv!

Tweetněte si!

28. ledna 2011 ↴

Life in a Day (2011)

Musím se k něčemu přiznat: když jsem poprvé slyšel o tom, že Ridley Scott vezme videa natočená v jeden den uživateli YouTube a pokusí se je sestříhat do celovečerního filmu, říkal jsem si: “Narazíš, panáčku.”

Měl jsem k tomu dobrý důvod. Asi rok před tím jsem dopsal svoji diplomovou práci na téma uživatelských videí na YouTube. Kvůli ní jsem shlédl dohromady asi třicet hodin naprosto náhodných videí. Typické video vypadalo nějak takhle. Našly se i perly, to ano, ale paměť rok po té si vybavila jen to nejhorší. Říkal jsem si: chudák Ridley, do čeho se to uvázal? Z toho nemůže vzejít nic lepšího, než hodinu dlouhá eskapáda držkopádů.

Strašně jsem se mýlil.

Dnes jsem měl možnost celý film vidět v rámci googlí předpremiéry. Asi po pěti minutách jsem pochopil, že tohle vážně nebude “Top 150 nejvtipnějších videí”. Film má spád, je vtipný, barvitý, ale přitom se nebojí opravdu vážných témat. Koukal jsem s bradou dole, co všechno na sebe uživatelé prozradili, a jak originálně to mnozí z nich podali.

Film má dvě polohy.

  • Jedna je atmosférická: navozuje většinou téma následující části. Tady vynikne hudba a zajímavá kinematografie, rychlý střih, apod.
  • Druhá poloha je poskládaná z minidokumentů, často postavených proti sobě. Ridley Scott cíleně vybral zpovědi, které ukazují nějaký konflikt, slabinu nebo ironii. Nečekejte cool záběry skejťáků. Připravte se na opravdu hutné příběhy.

Co je na Life in a Day nové je ta autenticita. Člověk si už tak nějak zvykl na drsně neuhlazené dokumenty, ale tohle je úplně jiná káva. Ti lidi se točili sami a aktivně svůj příspěvek přihlásili. Člověk se necítí jako voyeur. A dostává trochu víru v normální lidi.

Další věc, co mě dostala: kolik se toho v náhodně vybraný den, 24. července 2010, stalo. Přinejmenším jednu událost zachycenou v Life in a Day jsem si pamatoval ze zpráv. A asi by mě nemělo překvapovat, že se za jeden den stihly svatby, zlomená srdce, prozření, úmrtí, krádeže… V jedné části filmu si dokonce Scott mohl dovolit být mírně psychedelický.

Obsah je tedy super. Co forma? Toho jsem se taky trochu bál, protože uživatelé-amatéři svůj filmový styl většinou neřeší. Jenže ouha, někteří řeší. A Ridley Scott měl možnost vybírat z 80.000 videí. Film je tak plný překvapivě dobré kinematografie.

Suma sumárum: Life in a Day se mi hrozně moc líbil. Není to nejlepší film všech dob, ale jestli máte rádi mírně festivalové filmy, můžu vřele doporučit.

Life in a Day si můžete právě v těchto chvílích streamovat z YouTube [UPDATE: pozdě]. Pak bude ke shlédnutí na festivalu Sundance. A pak nevím, ale určitě tak či onak dorazí i do ČR.

PS: Do filmu se dostalo i jedno české a jedno (autorsky) slovenské video. Prozradím jen kódová označení, až uvidíte, pochopíte. České: žirafa. Slovenský filmař: cyklista z Koreje.

26. ledna 2011 ↴

Proč to proboha nespraví?

Je toho plný Facebook a Twitter a web vůbec: nechápavé pozastavování se nad tím, proč proboha tak velká firma, jako je {Vodafone, Google, Alza, Twitter, Seznam, …}, neudělá něco s XYZ. Vždyť je přece každému jasné, co je třeba udělat. Na co mají ty firmy X zaměstnanců? Spravit to je přece pro dobrého {programátora, designera, překladatele, …} záležitost jednoho dne, nebo není?

Není.

Například: Něco jiného je spravit PHP web, který si programuju sám, a který má maximálně desetitisíce řádků kódu běžících na jednom serveru, a něco úplně, úplně jiného je opravit byť maličkost v tisícihlavém monstru programovaném stovkami lidí, běžícím na dynamickém počtu serverů a obsluhujícím v náporech {desetitisíce, statisíce, miliony} simultánních požadavků. Tady je neúplný výčet důvodů, proč tomu tak je:

  • Skoro každé takovéto monstrum nevyhnutelně spolupracuje s jedním nebo více zastaralých (=legacy) systémů.
    • Věděli jste, že některé německé bankovní systémy pořád ještě běží na COBOLu? Ano, na tom COBOLu.
    • Přepsat vše od nuly by bylo určitě krásné, ale… v legacy systémech bývají desetitisíce člověko-dní práce. Přepisování od nuly většinou znamená: návrat starých bugů, zastavení vývoje nových věcí, a nakonec vyprodukování stejně hnusného kódu, se kterým se začalo.
  • Práce ve velkých týmech je jiná.
    • Už není možné, aby každý věděl všechno o všem.
    • Je nutné co nejvíc vyloučit, aby se do produkční verze dostala chybka jednoho programátora. Velkou část práce zabírají věci, které v malém týmu tolik neřešíte, jako code reviews nebo psaní neprůstřelných unit testů. To znamená: vše je (mnohem) pomalejší.
  • Distribuované systémy jsou větší bolest, než si většina lidí uvědomuje.
    • Spusta věcí vypadá na papíře lehce, ale v reálu je to mnohem těžší. Jestli v centralizovaném systému rozšíření funkcionality o 10% zabere týmu x hodin práce, v distribuovaném systému to může být v klidu 10x.

Příklad z jiného soudku je článek A Localization Horror Story: It Could Happen To You. Sean M. Burke a Jordan Lachler v něm popisují, na jaké složitosti můžete narazit u něčeho "tak jednoduchého", jako je lokalizace dvou výstupů z programu...

He elaborates: In "I scanned %g directories", you'd expect "directories" to be in the accusative case (since it is the direct object in the sentence) and the plural number, except where $directory_count is 1, then you'd expect the singular, of course. Just like Latin or German. But! Where $directory_count % 10 is 1 ("%" for modulo, remember), assuming $directory count is an integer, and except where $directory_count % 100 is 11, "directories" is forced to become grammatically singular, which means it gets the ending for the accusative singular... You begin to visualize the code it'd take to test for the problem so far, and still work for Chinese and Arabic and Italian, and how many gettext items that'd take, but he keeps going... But where $directory_count % 10 is 2, 3, or 4 (except where $directory_count % 100 is 12, 13, or 14), the word for "directories" is forced to be genitive singular -- which means another ending... The room begins to spin around you, slowly at first... But with all other integer values, since "directory" is an inanimate noun, when preceded by a number and in the nominative or accusative cases (as it is here, just your luck!), it does stay plural, but it is forced into the genitive case -- yet another ending... And you never hear him get to the part about how you're going to run into similar (but maybe subtly different) problems with other Slavic languages like Polish, because the floor comes up to meet you, and you fade into unconsciousness.

Abychom si rozumněli:

  • Neříkám, že to “pozastavování se” občas sám nedělám. Naopak. Ve skutečnosti jsem se právě nedávno chytil za nos — a výsledkem je tento blogpost.
  • Myslím, že je dobře, že si takových věcí všímáme a že na ně aktivně upozorňujeme.
  • Tohle nepíšu kvůli Googlu, byť jsem ho do toho výčtu nahoře raději zahrnul. První impuls k napsání tohoto článku vzešel z komunikace s úplně jinou firmou.

Až příště někomu spadne eshop nebo zákaznický systém, budu se snažit mít tohle všechno na paměti. Ale stejně se mi to asi nepodaří a brzy budu zase hlasitě vykřikovat: “Proč to proboha nespraví? This is broken!

23. ledna 2011 ↴

Potřebuje svět další osobní blog?

Obrázek nadšeného geekaOdpověď je – překvapivě – ano.

Vždycky jsem si myslel, že nikdy nebudu provozovat “netématický” blog. Můj první blog byl o životě v Japonsku, druhý o internetovém marketingu, oba měly nenulovou návštěvnost, ale dnes jsou mrtvé/archivní. Dnes vedu oficiální blog českého Googlu, jedno “centrum absurdního humoru” a svůj hudební blog. Do pár dalších mám možnost přispívat.

Proto: když mě nedávno napadlo, že vlastně potřebuji další blog, švihl jsem se sešitem přes ksicht a zakázal si na to myslet. Na co další kout webu, který dřív nebo později odumře? A pak mě došly tři věci.

Odumření blogu ≠ fail

Naprostá většina blogů žije maximálně rok dva, a pak buď úplně skončí, nebo je udržována jenom pro formu. A má to tak být. Založení blogu je tak jednoduché, že není důvod, proč by měl být uměle udržován při životě. Blogy jsou konzerva doby. Nejsou to dlouho plánované, longitudiální studie. Jsou to ošumtělé osobní zápisníky.

Nemít “netématický” web může být frustrující

Ne všechny mé postřehy a názory se dají narvat do škatulek a) Google, b) absurdní humor, c) hudba. Navíc: nebudu na oficiální googlí blog psát cokoliv, co mě zrovna kolem Googlu napadne, vypadalo by to hned jako oficiální stanovisko.

Twitter a Facebook mi nestačí

  • Facebook považuji za privátní záležitost. Než si na Facebook kohokoliv přidám, zkusím si představit, jak by mi bylo, kdybych věděl, že si dotyčný prohlíží mé fotky z nějaké bujaré veselice. (Už teď jsem na hraně toho, co dokážu ustát.)
    • Facebook je pro mě čím dál specifičtější nástroj na “zůstávání v kontaktu”. Už jej zdaleka tolik nepoužívám pro sdílení nebo komunikaci.
  • Twitter má svých 140 znaků a nic víc. Nemyslím si, že by se měl člověk spokojit s tímhle limitem pro veškerou komunikaci. Twitter je skvělý pro odkazy, aforismy a jednostranné názory. Grafoman jako já ale potřebuje trochu víc prostoru.
    • Vím o službách, jako je TwitLonger. Myslím, že tyhle služby vycházejí z nepochopení funkce twitteru (a taky ze zoufalosti ukacaných lidí, jako jsem já).

Takže je jasné, že potřebuji něco delšího a veřejnějšího. Proč ale “zastaralý” blogger? Proč ne tumblr? Nebo posterous? Obě služby jsou teď extrémně populární a jsou synonymem “mikroblogování”.

Mikroblogování není nic jiného než (big surprise!) osekané blogování. Kdybych měl blog a chtěl přejít na mikroblog, stačí mi zvolit minimalistický design a smazat nepotřebné widgety. Nepotřebuji zakládat další účet na platformě, která mi umožní dělat míň. Přesto: tohle je nový blog, tudíž by mě založení účtu tolik nevadilo. Takže jsem kolem tumblru i posterous chvilku kroužil.

Blogger nakonec zvítězil ze dvou důvodů:

Takže tady to máte: blog Runtime.cz. Muselo to přijít.