neděle, prosince 23, 2007

Ubohost

Dobrá, na stupnici ubohosti od 1 do 10 je linkování videa na YouTube někde kolem devítky, ale tohle je tak smrtelně vtipné, že to nemůžu nezalinkovat: Here Comes Another Bubble, Version 1.1. (více viz zde).

A když už jsem u toho: pokud jste na The Escapist přehlédli Zero Punctuation, a máte dost času, tak rozhodně doporučuji.

sobota, prosince 08, 2007

Tristní!

Vysvětle mně tohle: proč, když jsem si někdy včera (nebo kdy, mám teď mírně narušené vnímání času) postěžoval, jak jsou první nahrávky nejlepší a ty další nestojí za nic, už tři dny za sebou nespolouchám nic jiného než Faint a Nobody's Listening? (Tedy: ještě do toho občas proložím Extreme ways, edice pro Bourne's Ultimatum.)

A co je horší: pořád u toho tak nějak křečovitě potřásám hlavou a pitomě se usmívám!

pátek, prosince 07, 2007

Not so Test Driven...

Tuhle jsem tu psal o tom, jak mě BVer uvrtal do unit testování, a věcí okolo. Dokonce jsem na sobě zkoušel praktikovat i Test Driven Development, a nějak bych rád shrnul, co jsem zjistil.

Především chci říct, že když jsem báječný svět unit-testů objevil, říkal jsem si, jak jsem asi tak tisíc let za opicemi, a že tohle přeci musí používat každý člověk s trochou sebeúcty. Myšlenka testovat kód po malých částech ještě před tím, než zapomenete co má přesně dělat, nebo dokonce zjistit co a jak má dělat tím, že napíšete testy je tak skvělá a samozřejmá, že jsem byl zklamán, že mě nenapadla samotného.

Jaké bylo moje rozčarování, když jsem zjistil, že testování na úrovní nějakých malých komponent není vůbec samozřejmé, a že dokonce velká část lidí, kteří se živí programováním se k němu staví negativně, nebo dokonce odmítavě, a celkově v něm nevidí žádný užitek. Zkoušel jsem několika lidem několikrát opatrně vysvětlit, že čím dřív na chybu přijdou, tím dřív a rychleji ji odstraní, a i když unit testování není samospasitelné, že je to skvělá věc, a že by se jí měli věnovat.

Dokonce jsem i byl skoro úspěšný, když jsem jednoho (teď už bývalého kolegu) přesvědčil, aby si pár testů napsal. Čekal jsem, jak za mnou přiběhne s velkou krabicí belgických bonbónů, bude mi děkovně třást rukama a radostně poskakovat a povykovat, o kolik rychleji teď programuje a jak se kvalita jeho práce zvýšila a tak dále a tak podobně. Místo toho asi po třiceti minutách přišel s velmi správnou otázkou: "No a co mám jako dělat s tou databází?" I neváhal jsem, a začal ho zasvěcovat do tajů mock objektů, které okopírují rozhraní takové databáze, ale nebudou ve skutečnosti dělat nic jiného, než že na předem připravené otázky dají předem připravené odpovědi, načež zkontrolují, zda se jeho kód chová správně, a jeho kód zjistí jestli umí správně reagovat na divné stavy, do kterých se taková databáze může dostat. Čím déle jsem hovořil, tím víc zíval, až nakonec odešel, a o testování jsem od té doby spolu nemluvili.

Nerozuměl jsem tomu, protože napsat si mock-objekt na sériový port (ten z .NET) pro mě bylo opravdu zábavné, i když mi to, pravda, nějakou tu hodinku trvalo, a fakt, že jsem pak mohl pěkně ozkoušet co udělá celé komunikační rozhraní, které jsem tehdy psal, když místo očekávané zprávy přijde nějaká úplně jiná, mi pomohlo zkrátit ladění na pár desítek minut. Ještě méně jsem rozuměl odporu některých lidí, kteří se zabývají vývojem embedded aplikací, zvlášť když neměli k dispozici pořádný debugger.

Samozřejmě, že testování není zadarmo. Psát testy je někdy vážně nuda (třeba set/get metody s trochou logiky), někdy je to vyloženě masochismus (jednou jsem zkoušel, kolik úsilí by mě stálo dosáhnout 100% pokrytí kódu testy a vážně to nestálo za to, protože některé obzvláště vypečené chybové stavy je těžké vyvolat bez toho, abyste neomockovali půl operačního systému), nicméně celkově se rozumná míra testování vyplatí.

Projekt na kterém teď pracuji je poměrně agresivně naplánován, a popravdě, když jsem padesát minut psal mock na třídu zapisující do registrů, říkal jsem si, jestli to stojí za to. Nakonec se ukázalo že ano, protože jsem pak asi za deset minut odladil kód, který ten zapisovač používal, přičemž jsem odhalil asi pět velmi vypečených chyb, které by mě jinak stály spoustu ladění (určitě nejméně padesát minut, protože než bych na ně přišel, dávno bych zapomněl co jsem vlastně původně chtěl, aby kód dělal).

Rovněž jsem nabyl nezvratného přesvědčení, že i když TDD není pro mě (prostě nedokážu psát testy nasucho dopředu -- potřebuji alespoň nějaký kód, který pak třeba celý přepíšu, ale který mi dá vizuální představu jak bude celá věc fungovat a interagovat s okolím), jeho alespoň podvědomé používání vede k psaní lepších programů, které jsou lépe rozparcelovány, méně navzájem provázány, snáze udržovatelné, jednodušeji rozšiřitelné a tak dále. Myslím tím takové ty věci jako předávání objektů konstruktory, vyhazovaní výjimek, rozumné použití dědičnosti, využívání interfaců (interface nebo čistě abstraktní třída je grunt -- bez interfaců nikdy nemůžete vyměnit jeden objekt za druhý, resp. skutečný za mock) a podobné věci.

Chtěl jsem říct asi toto: jsem daleko od nejlepšího žáka Martina Fowlera, ale i když mám někdy pocit, že bych se měl na testování vykašlat, a raději smolit produkční kód, za který si zákazníci platí, vždycky se nakonec ukáže, že kdo testuje, ten vyhraje. A proto (spolu s klasikem) volám: Lidé, testujte!

úterý, listopadu 27, 2007

Na plný koule

Začněme něčím jednoduchým. Třeba rockem. Víte, popravdě kytarovky nemám rád. Přijdou mi nudné a tak nějak si myslím, že ty za roky, co je elektrická kytara s námi, už byly všechny kombinace akordů vyzkoušeny, a přijít s něčím novým je vlastně nemožné, a upřímně: jen lidé slabí duchem by mohli chtít poslouchat pořád dokola to samé (ach, když tohle naprosto vážně říkám ve společnosti, kde se seriózně diskutuje o rockové hudbě, některým lidem povážlivě roste tlak...). Navíc je pravda, že většina těchhle rockerů nemá žádné hudební vzdělání, kromě toho, že nedokáží hrát na žádný hudební nástroj, neumí často ani zpívat a tak dále a tak podobně.

Přesto, přiznávám, i já mám některé rockové desky rád. Třeba Angel Dust, nebo Proud Like a God nebo Hybrid Theory (ano, jistě, nu-metal, ale proto používám raději výrazu kytarovky, než rock) a tak dále a tak podobně. Prostě: drtivá většina toho, co z rocku snesu jsou první, nebo skoro-první desky (takové ty první, kde členové skupiny umí už alespoň trochu mačkat akordy).

Druhá skupina rockových nahrávek které docela dobře snáším, patří do kategorie art rock (nebo progressive rock, nebo jak se to jmenuje). Sem tam něco do Pink Floyd, skoro celý Marillion, jistě, Queen, dokonce i Enchant (i když od těch znám jen první dvě alba, tak snad hrají pořád to samé). Čili: takový ten rock, který hrají lidé, kteří už umí trochu hrát, místy je ta hudba až k hranici absurdity překombinovaná a přeplněná vším možným, nicméně pořád je dost zajímavá na to, aby se dal poslouchat.

Jistě jste si všimli toho vzoru: buď našlapané první desky, kde pár (nejlépe mladých lidí) ze sebe vychrlí něco úžasně nabitého energií (ano, někdy jsou klišé opravdu nejlepším popisem reality), nebo mimořádně rafinovaně promyšlené útvary, které obsahují tolik materiálu, že i po několikerém poslechu pořád slyšíte něco nového, zábavného, zajímavého.

Problém je v tom, že většina těch mladých a nabitých se rychle změní na mladé a vybité, a pokud nemají dost soudnosti tak i na, nemůžu odolat, mladé a vyblité. Takových muzikantů, co dokáží udržet dlouhodobě vysokou úroveň produkce je málo, a čím déle si to odmítají přiznat, tím jsou trapnější (protože Olympic je kachna na vejcích, zmíním třeba U2).

Tak a teď k tomu na co čekáte: tohle všechno samozřejmě má nějak ilustrovat situaci kolem software. Je to přeci zřejmé: Jsou firmy a projekty, které jsou mladé, dravé a tak dále, pak je pár vyjmečných, kteří dokáží inspirovat celé roky a desetiletí, no a nakonec jsou tu ti nudní, kteří ať se snaží jak se snaží, pořád z nich leze jen průměrný rádiový popík s elektrickou kytarou.

Samozřejmě, že bych teď mohl volně permutovat jména firem a přiřazovat je do libovolných skupin, a tak dále. Ale jistě uznáte, že by to bylo zbytečné. Navíc jsem spíš chtěl říct něco v tom smyslu, že je to vážně zajímavé, že každý z těch úžasných a odvážných start-upů, které se povedou jen proto, že někdo je dost mladý a pitomý na to, aby si neuvědomil, že cíl, který si dal, je prostě nesplnitelný, mají vlastně jen dvě cesty: buď se změní na ty nudné, nebo prokáží, že mají na to být těmi inspirativními.

A uznejte, že vyjmenovat tři firmy, které se pohybují v softwarovém průmyslu, a lze je bez obav prohlásit za dlouhodobé tahouny, je vážný problém. Nakonec se všichni vydají buď cestou Microsoftu, a utopí se ve vlastním úspěchu (třeba Google tohle skvěle dokumentuje, protože teď už víme nač se dívat), nebo skončí jako Nullsoft. (Samozřejmě pokud se neztratí z povědomí ještě dřív, než se do něj vůbec stačí dostat.)

Nicméně: Tuhle jsem četl, že Facebook má hodnotu (pokud to správně počítám) srovnatelnou se státním rozpočtem České Republiky (plus mínus pár stovek miliard v těchhle počtech nic neznamená), ale že ho Mark Zuckerberg stejně nechce prodat, a že cenu šroubuje výš a výš, až se dostává na částky, které nikdo nikdy nezaplatí, a o kterých ví, že jsou praštěné.

Víte, asi rozumím proč to dělá. Podle mě chápe, že je lepší nechat srdce v projektu, po kterém sice možná za pár let ani pes neštěkne, ale bude to všechno jen a jen jeho zásluha, než se stát korporátním droidem a vidět, jak jiní lidé z jeho úžasného projektu dělají projekt, po kterém za pár let ani pes neštěkne. Web 2.0 se, stejně jako rock, hraje koulema, a ty má Zuckerberg jak dva kokosové ořechy.

A proto ho také chce, podle mého, koupit Microsoft. Microsoft (resp. Bill Gates) měl taky koule až ke kolenům -- jak jinak by z podniku o dvou lidech živořících někde v motelu v Albuquerque vybudoval největší softwarovou firmu na světě -- ale jak už to tak bývá, v současné době, byť má nejlepší lidi na vývoj software na světě, patří přesně k tomu druhu nudných popíkářů, které sice celý den posloucháte v rádiu, ale právě proto je upřímně nenávidíte.

Jenže aby si Microsoft koupil Facebook, to je jako by si Rolling Stones chtěli koupit nějakou garážovou kapelu s tááákovýmle drive, a mysleli si, že když je zavřou do kumbálu vedle studia, že něco z jejich šťávy přejde na ně.

Takže. Chtěl jsem říct asi toto: Software sice není rock, ale zatraceně, někdy to tak skoro vypadá.

neděle, listopadu 18, 2007

Závist

Jelikož se mně z Idle Words nějak divně načítá feed do čtečky, ušel mi tenhle naprosto úžasný text: The Alameda-Weehawken Burrito Tunnel.

Hned jsem si vzpomněl, jak jsme na AmberZine provedli operaci ETHER a na Juana Valdeze, který se, podle mého, díky tomu, že jsme tehdy spěchali, abychom stihli 1. duben, stal promarněnou šancí (Solid Oil Support rocks!).

Taky jsem si vzpomněl, jak moc nesnáším dementní Apríly na serverech lokálních i globálních, v tisku i televizi. V drtivé většině případů jim totiž, naprosto chybí styl a především erudice. Jistě, občas se najde výjimka, ale je jich tak málo, že kdyby bylo po mém, každý, kdo se dopustí aprílového žertu, by měl být exemplárně potrestán.

Nicméně, co jsem chtěl říct: Maciej Ceglowski umí skvěle psát, stačí si přečíst pár textů z jeho stránky a je vám to jasné (třeba ten o malování na střeše a domácím s historkou o stavění Twin Towers). Proto mě neudivuje, že se mu povedlo napsat tak brilantní text, u kterého si zhruba do poloviny říkáte, sakra, že by mě něco uteklo?, a od poloviny: Bože, ten člověk je génius! Spíš mě mrzí, že něčeho podobného nejsem schopen sám.

Kdysi jsem tu psal něco v tom smyslu, že humor toho pána, který si říká Ostravak je mi protivný. Erudovaný humor stylu Ceglowskeho je mi naopak milý. A tak -- proč to nepřiznat -- závidím Ceglowskemu jeho talent na psaní Perlovských knihoven a malování zátiší a schopnost plodit tak zábavné texty.

Acho jo.

úterý, listopadu 13, 2007

Asi se rozpláču...

Někde jsem teď četl, že roční síťové jízdenky v Praze podraží skoro k šesti tisícům. Jak dojemné. Osobně platím za síťovou jízdenku 1177Kč. Měsíčně. Ach, ach.

sobota, listopadu 10, 2007

Další štace

Vymyslel jsem ultimativní odpověď na pitomou otázku "Jaké jsou vaše negativní vlastnosti?", kterou vám dneska dozajista položí každý uvědomělý personalista. Moje dlouho promýšlená odpověď zní: "Někdy jsem netrpělivý, když někomu něco už podesáté vysvětluji, a on to stále nechápe. Zvláště, když potřebuji pracovat na nějakém složitějším problému. Nejspíš je to nějaký můj nedostatek v komunikaci, že věci občas nedokáži vysvětlit dost jasně, ale je to prostě tak." Pokud tuto odpověď použijete, ve třech větách o sobě řeknete že: 1) když můžete, snažíte se pomoct, ale všechno má své meze, 2) zvláště když jednáte s blbci, které (jako ostatně nikdo) nemáte rádi, 3) jste odhodláni usilovně pracovat 4) na složitých projektech (takže se neulejváte, ale makáte), 5) sebekriticky si uvědomujete, že i blbci mají právo na to, aby jim byly věci vysvětleny, 6) rádi byste rozvíjeli své komunikační dovednosti. Čili, zcela podle principů double-thinku, na otázku ohledně svých nedostatků vyjmenujete své přednosti. (Druhá nejpitomější ejč-ár otázka zní "Kde sám sebe vidíte za tři roky?", na kterou jsem u pohovoru popravdě odpověděl: "Do 40 chci být rentiérem a zakládat start-upy." Bylo to trochu na hraně, ale ten zmatený pohled slečny personalistky vážně stál za to...)

Čili ano, pochopili jste to správně, opět jsem změnil zaměstnání. Došel jsem k nezvratném závěru, že můj život je příliš krátký na to, abych ho trávil v zaměstnaní, o jehož smyslu mám pochybnosti. Takže jsem obeslal několik málo firem, nu a od prvního listopadu pracuji v jiném městě, s jinými lidmi, a jiném projektu. Zatím mám z té změny dobrý pocit, i když tedy musím říct, že tohle byl nejdrsnější první týden v práci, který mě zatím postihl.

Však víte, obvyklý scénář je zhruba takovýto: nastoupíte, první týden až dva se školíte, pak se měsíc zaučujete, pak vás pozvolna pustí k nějaké opravdové práci, načež přibližně po třech měsících naběhnete do režimu plné vytíženosti.

Tedy takhle to u mě zatím vždycky probíhalo. Až do pondělku.

To jsem po dvou dnech obecných HR školení přišel na pracoviště. Zatímco další nováčci odkráčeli v dál, já jsem hned nafasoval počítač, stůl a funkci "project leadera". Než jsem rozchodil Outlook, a vyjasnil si s IT oddělením počty shodných souhlásek na různých místech mého příjmení (což se neobešlo bez dvoufázové změny přihlašovacího jména a e-mailu), už jsem dostal k ruce jednoho programátora a jednoho tesťáka, že se o ně mám jako postarat. Uh. Následovalo šílené úterý, kdy jsem naprosto zmateně proklikával QA instrukce na intranetu, rozesílal zoufalé e-maily a obtěžoval svého manažera. Nakonec se ukázalo, že na projektu, ke kterému jsem byl přidělen pracuji podle Microsoft Projectu už týden, a že bych už měl mít hotové tři nebo čtyři design dokumenty, ke kterým jsem zatím nesehnal ani šablony. Uh, uh. Ve středu jsem obdržel jednu PowerPointovou prezentaci a funkci scrum mastera, a ve volných chvílích mezi odesíláním e-mailů naskicoval nějaké use cases. Uh, uh, uh. Ve čtvrtek se situace docela uklidnila: stačilo vyhandlovat vložení projektu do billingového systému a zjistit jak se objednávají zasedačky (to jsem v některých předchozích zaměstnáních nikdy nepotřeboval), aby bylo kde pořádat daily scrum meetings. Uh, uh, uh, uh. Pátek proběhl v přátelském duchu, a podařilo se mi vyhotovit nějaké dokumenty k architektuře a pár interfaců tříd. Uh, uh, uh, uh, uh.

Víte, já si nestěžuji. Sice jsem myslel, že situaci, kdy se Outlook stane mým hlavním pracovním nástrojem se ještě pár let vyhnu, ale v zásadě dělám co jsem chtěl. Jen mě zaskočila rychlost, s jakou na mě tyhle věci napadaly. Myslel jsem si, že budu podroben prověrce jako prostý progiš na nějakém méně významném projektu a pak, postupně, se propracuji až k pozici, na které bych mohl něco opravdu posrat.

Že se tak nestalo, mě přivedlo k myšlence, že v dnešní zoufalé situaci, kdy je vážný problém sehnat někoho kvalifikovaného, se v personální politice spíše než na skutečné zásluhy a zkušenosti, dá na jakýsi efemérní příslib věcí budoucích. Lidé se dnes nenajímají na základě technologií které ovládají, ale podle toho, zda vypadají, že to, co by měli dělat, zvládnou ovládnout v rozumném čase, protože lidé, kteří to opravdu dovedou, jsou už dávno rozebráni.

Ze tří zaměstnání kterými jsem zatím prošel (z toho byl jeden interní přestup), jsem v tomto poprvé dostal u pohovoru nějaké znalostní otázky (v podobě jednoduchého testu na C++, kde nejsložitější úlohou bylo vyřešit jednu protivnou rekurzi a určit jak se zpracovávají virtuální metody), a ani u těch nevadilo, když jsem řekl: "Nevím, s touhle technologií jsem nikdy nedělal." Prostě: zatím vždy stačilo, abych zapůsobil neodolatelnou silou svého nadměrně vyvinutého charisma, a už to bylo...

Což ovšem vede k otázce, proč jsou inzeráty hledající programátory, naplněny všemi těmi pitomými zkratkami a názvy technologií, když nakonec firma najme někoho, kdo sice neví co ty zkratky znamenají, ale kdo vypadá, že se to rychle naučí? Proč popravdě neříkají: "Jsme zoufalí, hledáme kohokoliv, kdo není úplný idiot, a bude s to naučit se to, co potřebujeme do dvou měsíců. Zaplatíme vám kolik chcete."?

Myslím, že takové opatření by prudce zvýšilo procento úspěšných aplikantů. I když: možná se pletu -- nakonec, co já vím o HR?

pondělí, října 22, 2007

Zprávy z (RSS) fronty

Dobrá, dobrá, Fake Steve Jobs přestal být zábavný a začal být prudivý. Potkala ho stejná pohroma jako Roberta Scobla: Už ho nečtu.

Ale chtěl jsem tu zalinkovat moji novou dlouhodobou lásku: xkcd.

Původně jsem chtěl sestavit z těch stripů nějaký mimořádně legrační post, ale když ono je tak těžké vybrat ty nejlepší, když nejlepší je skoro každý. Dopřejte si čas, a pročtěte si je všechny. Nebudete litovat.

sobota, října 20, 2007

Review.Book("Diaspora")

Asi tak v červnu jsem po dlouhé době četl beletrii, která byla intelektuálně stimulující. Ano, jde o Diasporu. Pokud jste na tenhle starší kus ještě nenarazili, a máte rádi kvantovou fyziku a alternativní kosmologie, pak je to ta správná záležitost pro vás.

Ano, Greg Egan je nějaký studovaný matematik a podle Wikipedie bývalý programátor, který se vyžívá v psaní beletristických kousků kolem nějakých obzvláště bizarních aspektů fyziky a matematiky. Vůbec první věc co jsem od něj četl byla Karanténa, která je rovněž o kvantové fyzice a končí opravdu psychedelickou sekvencí, která vyvrcholí v -- ale píšu vlastně o Dispoře.

Řeknu to takhle: představte si, že vám přijde jako obzvláště dobrý nápad vytvořit vlastní verzi kosmologie našeho vesmíru, a dáte si tu práci, že upravíte kvantovou fyziku tak, aby odpovídala této kosmologii, načež hledáte nějaký příběh, kterým byste všechnu tu práci, kterou vám to dalo, nějak ospravedlnili. Takže se pustíte do psaní a začnete tím, jak jinak, že laskavému čtenáři vysvětlíte jak by tak mohlo fungovat genetické programování inteligentních bytostí, které běží na nějakém hardware, kterému pro jistotu říkáte polis, a o jehož velikosti je příliš nezmiňujete. Samozřejmě k tomu potřebujete předefinovat časové jednotky (k čemu by virtuálním bytostem byly dny, týdny a roky, že?), načež už se konečně dostáváte k tomu zajímavému, což jsou vaše vlastní, nejspíše ne úplně košer (ale kdo to pozná) řešení rovnic obecné teorie relativity a tak dále a tak podobně.

Rozumějte: psát dneska hard-SF je zatraceně těžký úkol. Vaše publikum se, díky všem těm populárně vědeckým knihám, nedá opít rohlíkem, a tak musíte na teoretické stránce knihy pracovat nejméně dvakrát tak usilovně než běžný doktorand na své disertační práci. Jenže jak takovou knihu, která drtí topologické finesy N-rozměrných prostorů jako pozadí pro story o hledání smyslu života virtuálních inteligencí zpřístupnit širokým masám? Odpověď je snadná: nijak. Prostě se budete tvářit, že všichni vědí co je to spin, a jaký je rozdíl mezi neutronem a neutrinem, a co jsou to tyhle gluony, a kdo to byl Fermi a že si každý domyslí, že některé vědátory jste si vymysleli.

Celkově tímto přístupem zaujmete asi tak 0.05% čtenářů (což nevadí, protože když píšete anglicky, tak to pořád stačí na docela slušné živobytí), ale máte ten zatracený dobrý pocit, že i když vaše story je vlastně dost banální a obehraná, tak máte refrén silný jak hovado (jak říkáme my fajnšmekři), a vůbec.

Takže: Diasporu rozhodně doporučuji, pokud víte jaký je rozdíl mezi bosonem a fermionem, a pokud vás baví dumat nad tím, co to znamená otočit spin o půl otáčky a tak podobně. Jinak se obávám, že asi tak na straně 30 knihu odložíte s tím, že tahle hovadina prostě nedává žádný smysl.

úterý, září 25, 2007

Takovejch keců!

Tenhle odkaz mi onehdy poslal BVer: Programming Can Ruin Your Life. Ve zkratce: Když budete programovat, přestanete přemýšlet jako normální lidé, stanete se chodící kalkulačkou, která všechno algoritmizuje a nakonec si úplně zničíte život.

Jak už to tak bývá, říkal jsem si zprvu, že je to docela zajímavý pohled na věc. Mám totiž tohle programátorské filozofování vcelku rád, protože občas člověk narazí na poměrně trefné rady, jak se stát lepším programátorem. A být lepším programátorem je jistě cíl každého programátora s alespoň elementárními zbytky sebeúcty, protože, přiznejme si to, programátoři jsou v Česku poměrně mladí a jelikož před sebou mají vesměs ještě 30 až 40 let v zaměstnaneckém poměru, měli by se sakra snažit, aby za pár let nebyli úplně mimo.

Takže jsem si ten text přečetl a říkal si: sakra, aby se ze mě taky nestala pochodující kalkulačka a tak dále a tak podobně. Jenže pak jsem nad tím přemýšlel trochu víc, a dneska jsem od BVera dostal další odkaz na další hlubokomyslnou úvahu: The Genius is in the Details, a při jejím čtení mně to docvaklo: programátoři jsou banda narcistních sebestředných intelektuálních masturbantů, kteří polovinu času přemýšlejí o své vlastní výjimečnosti a druhou polovinu čtou bláboly, které je v tom utvrzují. (Sebe do toho nepočítám, samozřejmě, protože já nejsem programátor, ale prostý wannabe.)

Říkám si: existuje nějaká jiná technická profese, jejíž praktikanti jsou tak bizarně zaměření na zkoumání jakési filozofie svého oboru? (Schválně píšu technická profese, protože v jiných odvětvích lidské aktivity jsou mamlasové ještě větší, například o etických kodexech stále dokola diskutující tzv. internetoví žurnalisté.) Napadají mně snad jen HTML-tepci (ti jsou ovšem jen podřadnou sortou programátorů), kteří se podobně, jako programátoři v řečičkách o duchu objektově orientovaného programování utápějí v nekonečných debatách o validitě a usability a dalších nesmyslech, které jsou všem, mimo jejich kladně zavazbenou komunitu, zcela a naprosto ukradené.

A samozřejmě architekti. Ti většinou trpí stejně zmatenou představou své práce jako jakéhosi poslaní, a je těžké s nimi diskutovat, pokud nejste kovaní ve všech těch architektských podružnostech, které oni považují za důležité. Vliv architektů na programátory je dokonce tak velký, že se snaží (programátoři) vyrovnat jim alespoň terminologií. Proto máme všechny tyhle softwarové architekty, kteří dělají normální technickou (inženýrskou) práci, ale díky tomu, že navrhují strukturu zhusta vcelku dobře postradatelných programů, cítí se být vyvoleni k nějakému vyššímu cíli.

Eh.

Jistě, programování je velmi zábavná činnost. Asi tak 10% času, kdy tvoříte něco nového. Pak je tu ovšem těch zbylých 90%, kdy se prohrabujete v odpudivém kódu, který napsal nějaký nedouk (často jste to byli vy sami před rokem a půl), a do kterého máte dodat novou funkcionalitu, kterou si vymyslel zvláště důležitý zákazník, který potřebuje aby se na reportu dala nastavit barva rámečku v závislosti na ročním období. Je to zajímavý úkol? Z určitého pohledu jistě, protože každý těžký úkol je zajímavý, ale na druhou stranu v tom postrádám tu službu vyššímu cíli, ten dotek transcendentna.

Napadlo mě: Většina programátorů si představuje, že jsou Neo, ale přitom jsou jen šedivými pany Andersony, které stírá samolibý šéf za pozdní příchod. A teď pozor, vážení (hlavně vy mladší): nikdy se to nezmění. Nepřijde žádný Morfeus, který by z vás udělal neprůstřelného Vyvoleného, který chroupe beton místo žvýkačky a operační systémy píše malíčky u nohou při flirtování s modelkami. Ti nejlepší z vás se možná časem změní v takového malého Harry Tuttla, který po nocích píše kód bez všeho toho Bloody paperwork. Huh!

Abych se vrátil k tomu čím jsem začal: Může člověku programování zničit život? Jistě. Jako cokoliv jiného, co v nějakém záchvatu slaboduchosti posune v žebříčku hodnot nad ty opravdu důležité věci.

A které že to jsou?

Vlastně existuje v životě lidském jen jedna důležitá věc, bez které se nedá rozumně žít. Je to rodina, samozřejmě.

Co jiného jste čekali, že řeknu?

Ach...

Czech Olympic Committee annihilates English language

pondělí, září 03, 2007

A vítězem se stane...

Ve skutečnosti jsem tenhle text chtěl napsat už tak někdy v lednu, ale nějak jsem se k tomu nedostal, tak snad to ještě není úplně pasé. Takže: V dnešním kole cokoliv vs cokoliv jiného se utkají: Blu-ray a HD DVD!

Chtěl jsem říct asi toto: myslím si (jde o tzv. nekvalifikovaný odhad), že spor, zda next-gen video ovládne Blu-ray nebo HD DVD je úplně mimo. Hned to vysvětlím.

Především je potřeba říct, že než se obě skupiny snažící se protlačit svůj HD formát dobraly k tomu, aby vydaly nějaký skutečný přehrávač a k němu alespoň pár filmů, pravidla se změnila. Dneska už plackou, kterou musíte jít koupit do obchodu, někde ji doma skladovat, sledovat pro jaký region je určena a především ze které obsah nejde překopírovat do osobního přehrávače, na nikoho dojem neuděláte.

Lidé, kteří jsou dost bohatí na to, aby vyházeli sbírky filmů na DVD, které teprve nedávno sestavili, aby mohli vyházet sbírky na VHS, mají doma poměrně rychlý internet, a zhusta i nějakou herní konzoli, kvůli které, přiznejme si to, má smysl kupovat HD televizi především. Tihle lidé, i když by mohli, si podle mého názoru HD přehrávač nepořídí, protože a) filmy které je zajímají nejsou na HD médiích, b) rozdíl mezi filmem na DVD a filmem na HD médiu není takový jako byl mezi VHS a DVD, takže se obměna kolekce filmů nevyplatí, c) už si zvykli, že zábavu nakupují přes iTunes nebo službu Live, a další přehrávač pro ně není zajímavý.

A přesně těmhle lidem se snaží firmy prodat poměrně drahé přehrávače (nebo herní konzole, které by se bez HD mechaniky docela dobře oběšly a ztráta z každého prodaného kusu by pak nebyla tak brutální) na placky, se kterými se nedá dělat nic z těch úžasných věcí, na které si majitelé zábavních domácích systémů zvykli. Nemůžete je přenést do svého media-serveru, ani do svého přenosného přehrávače, nedají se ani zahodit a v případě potřeba stáhnout znova.

Nic.

Proto si myslím, že souboj o HD video se nepovede mezi HD DVD a Blu-ray, ale mezi Microsoftem a Apple (jestli se zapojí i další významní hráči nevím). Microsoft má Live a integraci Xbox360 s Windows, nově také třeba Home Server, který umí spoustu zajímavých věcí jako je třeba schopnost poradit si s přidáváním a odebíráním disků (nejsou zapojeny do RAID, takže se dají připojovat i různé USB disky, na které systém replikuje obsah tak, aby byl vždy alespoň na dvou různých discích současně, takže můžete disky zase odebírat) a zálohováním všech domácích počítačů vypečenou metodou s velkým faktorem úspory místa (sektory se stejným hashem se v databázi skladují jen jednou), k tomu nepříliš sexy Zune a mírně odpudivé telefony s Windows Mobile. Apple má iTunes, upozaděnou AppleTV, počítače Mac, iPod a iPhone.

Tohle je prostor, ve kterém se bude soupeřit o přízeň zákazníků, tohle je, podle mého, next-gen video. A HD placky? Hračka pro pár early adopters.

Čili: souboj HD formátů se vůbec nepovede na poli filmů, ale v prostých PC, pro které těch pár gigabajtů navíc má při zálohování smysl. V tomto směru jsou ale výhledy stejně nejednoznačné: Blu-ray má větší média, HD DVD má lepší ceny a tak dále a tak podobně.

Čert aby se v tom vyznal.

pátek, srpna 31, 2007

Plus C++

Nedávno jsem teď četl tenhle text Bjarne Stroustrupa: Evolving a language in and for the real world: C++ 1991-2006. Ach, pro neznalé: Stroustrup je ten člověk, který rozšířil jazyk C o třídy a všechny ty další objektově orientované vymyšlenosti a další doplňky jako jsou šablony a tak dále. Tím způsobil malou revoluci v programování, protože z objektově orientovaných jazyků, které do té doby byly převážně záležitostí akademického světa (Smalltalk, Eiffel a další, které to nikam nedotáhly), udělal něco, co mohly vzít ty hordy zkormoucených programátorů v C a zanést díky tomu do svých programů o dva řády více složitosti (samozřejmě, že časem se i programátoři v C naučili co to vlastně znamená ten objektově orientovaný přístup, ale i tak: znám některé lidi, kteří nikdy v C++ nenapsali jinou než statickou metodu a atribut.)

Nuže, v tom textu Stroustrup shrnuje jak se vyvíjel jazyk C++, co byly jeho hlavní cíle při jeho návrhu, jak se zformovala standardizační skupina ISO, kdo přišel z nechutným bastardem Embedded C++, jak je těžké se na něčem dohodnout, že STL neznamená Standard Template Library, protože Stepanov na STL pracoval dávno před tím, než v C++ existovala věc, které se říká template (neboli šablona; v tomto směru doporučuji rozhovor s Alexem Stepanovem Al Stevens Interviews Alex Stepanov) a tak dále a tak podobně.

Je to vážně moc zajímavé čtení a pokud programujete (jedno v jakém jazyce), rozhodně si ten text přečtěte, abyste příště, až budete mít chuť pomlouvat C++ nevypadali jako... no, jako někdo, kdo o něm nic neví.

Takže: chtěl jsem říct, že jsem pod dojmem tohoto textu tak trochu přemýšlel o C++. Jako ostatně každý soudný člověk, mám z C++ strach. C++ je krutý a syrový jazyk, který neodpouští chyby, a kdo není obdařen železnou disciplínou, která mu zabrání dělat cokoliv v rozporu s pravidly, toho rozdrtí, zašlape do země, poplive a nakonec se na jeho ostatky -- no, nechal jsem se unést, ale asi chápete co chci říct. Stroustrup přiznává, že jeho snahou nebylo znemožnit programátorů stát se svými vlastními oběťmi. (Oproti tomu designeři C# se vyznávají z opačného přístupu: C++ and the Pit Of Despair.) Stroustrup chtěl jazyk tak mocný, že umožní až bizarní úrověň abstrakce, ale přitom programy v něm napsané poběží stejně rychle, ne-li rychleji než ty v C.

Věru, to se mu povedlo. Nicméně cenou za to je, že spousta z nás, nedomrlých programátorských wannabes, si, jsme-li vyzbrojeni C++, dříve či později ustřelí nohu, nebo nějakou jinou, možná ještě důležitější, část těla.

Proto jsem si myslel, že čas C++ pomalu končí, že až vymře těch pár dědků s táákovýmihle fousy, kteří udržují v chodu existující aplikace, celý svět se prozáří, a všichni budeme rázem programovat jen a pouze pro garbage collected jazyky, které generují nějaký ten byte code pro virtuální stroje jako je Java Virtual Machine, nebo Common Language Runtime.

Samozřejmě, že to byla hloupá představa.

Problém je v tom, že nějaký ten mikroprocesor je součástí skoro každého zařízení, které koupíte ve vašem oblíbeném (internetovém) obchodě s elektronikou. A jelikož to zhusta jsou málo výkonné procesory, je potřeba psát pro ně v jazyce, který je hardwarovému modelu takového procesoru co nejblíže. A takovým jazykem je právě C++. C++ přistupuje k paměti se stejnou nenuceností jako C, ale přitom se v něm dá vyvíjet na rozumné úrovni abstrakce, takže výsledný program může být hotov rychle a dá se udržovat.

Samostatnou kapitolou pak jsou různé tyhle PDA, nebo chytré telefony. Čert vem PDA -- těm už vážně odzvonilo (jejich prodej opět poklesl o 40%), ale za pár let budou všechny telefony chytré, protože to bude lacinější, mít jen jednu základní desku (resp. její zapojení) pro celou modelovou řadu, a na každém telefonu poběží nějaký ten operační systém (ať už Symbian, nějaký ten klon Linuxu, nebo Windows Mobile, či jak se to vlastně bude za tři roky jmenovat), a pro ten bude potřeba vyvíjet aplikace v jazyce, který bude co nejblíže hardwaru.

Říkáte si: blbost, za pár let bude v každém telefonu Java, a po C++ nikdo ani nevzdechne. Myslím, že ne. Svůj odpor ke snobské společnosti Apple jsem tu vyjádřil tolikrát, že to už ani není zajímavé, ale přesto nemohu Apple upřít, že iPhone to bere v zásadě za správný konec. Mám na mysli tohle: co jsem tak četl, iPhone disponuje dlouhou výdrží baterie, což je jistě vlastnost, kterou každý rozumný člověk od podobného zařízení očekává, nicméně málokdy jsou jeho oprávněná očekávání naplněna.

Aby baterie vydržela dlouho, a přitom telefon mohl dělat všechny ty cool věci, které od něj očekáváme, má jeho výrobce v zásadě jedinou možnost: snížit spotřebu procesoru a pamětí (nebo displeje, ale displej je to, co dnes odlišuje jednotlivé třídy telefonů, takže pro high-end modely s ním nejde moc dělat). V tomto směru jsou tu dvě možnosti: zaprvé do telefonu strčit pro některé, na procesorový čas náročné operace, speciální obvod (jako je v iPhone hardwarový dekodér videa). To je ovšem drahé a pro low-end se to nehodí (na méně movité zákazníky s telefonem za 500USD dojem neuděláte), navíc speciální čip bude vysávat baterii. Nebo můžete do přístroje strčit pomalejší a úspornější procesor, který bude mít k dispozici méně paměti, a operační systém a aplikace napíšete tak, aby z takového hardware vyždímaly co se dá. A tady se zase vracíme k C++.

Čili, ať děláte co děláte, programování na úrovni (resp. rozsahu úrovní), kterou poskytuje C++ se nevyhneme ani v nejbližších několika letech.

Řikáte si: ale já kašlu na nějaký chytrý mobil. Mám své PC (od libovolného výrobce) a tam je výkonu taková přehršel, že se o nějakých pár usmolených wattů starat nemusím. Ohó, říkám já, to se tedy pletete.

Pomalu začíná docházet k tomu, po čem toužím už několik let: aby PC žraly (nedá se to říct jinak) méně. Počítače se zvolna začínají učit šetřit energií, a jak její cena poroste, a jak se na trhu budou stále více prosazovat mobilní PC (notebooky a to, v co se časem přemění TabletPC nebo UMPC), bude zase potřeba být s to využít výkon který je k dispozici co nejúčelněji.

.NET sice umí předkompilovat strojový kód svého virtuálního stroje do nativního kódu procesoru na kterém běží, a asi v tom je i docela dobrý, ale poctivá kompilace C++ programu nastavená na rychlost (nebo na velikost) je něco, s čím se dá asi při Just In Time kompilaci jen těžko bojovat.

Jsem první, kdo řekne: čert vem 15% výkonu, hlavně že tu aplikaci napíšu rychle, půjde udržovat, a využije konzistentního frameworku, ale firmy, které vyrábějí výpočetně a paměťově intenzivní software (třeba ty navigační programy, o kterých jsem tu tuhle mluvil), ví své. Každých pár kilobytů paměti se počítá, každé procento na rychlosti běhu se u zákazníků počítá.

Závěrem: Tak se stalo, že jsem se z odmítače C++ stal ostražitým sledovačem, který bude vývoj tohoto jazyka, který jsem už považoval za mrtvý (v smyslu, v jakém je mrtvá Latina), bude pečlivě sledovat. Protože jak tuhle řekl BVer: správný programátor udržuje svou bedničku s nářadím vybavenou a připravenou.

úterý, července 31, 2007

Stream.cz má svých 15 minut...

FSJ je ve formě, jako vždy: A challenge to Czech youth. (Svědčí o něčem to, že počet imbecilů v komentářích je vyšší než obvykle?)

Trvalky

Chtěl jsem něco chytrého napsat o tom, jak se nový Harry Potter objevil na Internetu a dokonce ho snad i někdo překládá do češtiny a tak dále.

Protože však psát něco chytrého je vyčerpávající, dám vám, milí čtenáři, šanci oslnit se vlastní bystrostí a řeknu jen tolik, že si myslím, že knihy se za těch pár set let opravdu osvědčily jako jedno z nejtrvalejších medií, a že prodeje tento únik vůbec neovlivní.

PS: Opravdu mě nezajímá, jak to dopadlo, ani kdo zemřel, ani nic podobného. Počkám si až bude příští rok hotový Medkův překlad, na který jsem zvyklý, a který jsem se naučil mít rád.

Potopa!

Takže jsem po týdnu spustil Bloglines a čekalo tam na mě přes 800 nových zpráv. 800. Trvalo mi hodinu, než jsem proletěl titulky těch pár zdrojů, které považuji za důležité, a naklikal je do pár desítek tabů ve Firefoxu. Pak jsem to všechno celý zbytek večera četl. Ano, jsem nemocný.

Problém, který řeším je tento: co přesně je a co není důležité? Třeba: zajímají mě tryskové motory, protože mě prostě zajímají tryskové motory. Takže na Wikipedii naklikám něco o tryskových motorech a už to jede: turbojets, turbofans, rockets, ramjets, pulse jets, pump-jets. A to jsme ještě ani nezačali. Pro úvodní seznámení je potřeba nastudovat: Air intakes, Compressors, Combustors, Turbines, Turbopumps, Afterburners, Nozzles, Thrust reversers, Cooling systems, Fuel system, Fuel pump, Engine starting system, Ignition, Lubrication system. Každá část odkazuje na desítky dalších textů, které je možná dobré znát, než se pustím do dalšího studia, ale možná důležité nejsou a můžu je s klidným srdcem přeskočit, pokud se v budoucnu nehodnám stát konstruktérem tryskových motorů (což nehodlám, i když tryskové motory jsou... prostě krásné).

Celé to pak vede k ADD (Attention Deficit Disorder), kdy v ideálním případě budu přeskakovat od odkazu k odkazu, nikdy se nic nedovím, ale budu šťastný, že mám information on my fingertips.

Nejhorší je, jak je tohle surfování, přes všechnu svou povrchnost a marnost, uspokojující. Rozumem chápu, že sledování desítek zpráv denně je nejen zbytečné a pošetilé, ale i vyčerpávající a od skutečné práce (nebo i zábavy) odvádějící, ale moje iracionální zvědavost mě prostě nutí celé to martyrium podstupovat znova a znova. Dokonce občas cítím senzorickou deprivaci, když se nic nového neděje (čti: žádný magor hodinu nic nenapsal). V dobách, kdy jsem ještě nebyl připojen permanentním připojením k Internetu jsem dokázal něco po večerech opravdu udělat. Ale ten poslední skoro-rok je opravdovým utrpením.

Přemýšlím, jestli tohle je Web2.0: neschopnost zdržet se u jedné věci déle než pár minut. Web1.0 řídily vyhledávače a portály. Ty dneska nikdo nebere vážně a každý má tuhle dvanulózní RSS čtečku (nebo podobné udělátko), do které přidává další a další zajímavosti, až nedělá nic jiného, než že čte pitomé zprávy od zhusta pitomých lidí. Když je dneska web o tolik chytřejší než byl loni, nebo předloni, kde je nějaký nástroj, který by člověku umožnit ten příval informací nějak důstojně zvládnout?

Takže tak nějak.

A hloupý vtip na závěr: co jsem to vlastně chtěl?

pondělí, července 30, 2007

i-no-GO

Byli jsme teď na dovolené v Krkonoších. Protože jsem špatný řidič a ještě horší navigátor, rozhodl jsem se zapůjčit si GPS modulem vybavené PDA s navigačním programem iGO 2006.

Popravdě: Je to dost děs.

Nerozumějte mi špatně: Ve skutečnosti je navigace docela užitečná věc, která člověku nejednou ušetří nervy když někde mine odbočku, nebo zahlásí ten správný sjezd z dálnice, ale celkově konkrétně iGO trpí několika velmi zásadními problémy, které místy činí celý program prakticky nepoužitělným.

Abych to vzal nějak postupně: elektronické navigace (ať už jednoúčelové, nebo jako software pro PDA) trpí tím, čím všechny elektronické serepetičky: totiž displejem. I když PDA, které jsem měl půjčené, mělo rozlišení 640x480, displej je maličký a ve srovnání s papírovou mapou má zanedbatelné rozlišení. A konkrétně u map zatraceně záleží na tom, abyste toho najednou viděli co nejvíce s co největšími detaily. Na mrňavém displeji navigace vidíte buď zazoomovaný detail, nebo velký orientační přehled.

iGO si je tohoto omezení vědomo, takže se snaží implementovat jakési inteligentní zoomování, které před křižovatkou najede na detail a na rovině se vzdálí do přehledového módu (to celé doplněné o tenhle 2.5D, nebo 3D režim, kdy se software nějakou pochybnou perspektivou snaží simulovat výhled oknem z auta, což trochu pomáhá řešit problém s velikostí displeje, ale vůbec si nejsem jistý, jestli mapová data obsahují informace o nadmořské výšce, takže nejspíš je to jen taková obezlička). Potíž je v tom, že na komplikovaných křižovatkách potřebujete jak detail na odbočku kterou máte jet, tak přehled o tom, co budete dělat až urazíte těch pár aktuálních metrů. iGO se neumí podívat dál než za jednu zatáčku/odbočku, a tak vám nějakou nechutnou křižovatku nazoomuje tak, že nevidíte nic než jeden velký ohyb, pak se jakoby trochu vzdálí, zase nazoomuje na další odbočku a tak podobně (to celé pěkně plynule a animovaně a poooomaaaaluuuu). Mně to trvalo asi dvě liberecké křižovatky, než jsem nastavil úroveň zoomu ručně tak, abych viděl co bylo potřeba.

Dalším zcela zásadním problémem je aktuálnost mapových dat. Když jedete podle ukazatelů nebo podle mapy, koukáte kde se oproti mapě co změnilo. Při použití navigace (a to mi potvrdil i další majitel podobného zařízení), člověk přejde do režimu slepého následování pokynů navigace a třeba křižovatka změněná na kruhový objezd (což se dneska děje poměrně často) se stane místem plným stresu a zmatků. Ještě horší jsou ovšem objížďky. iGO je vytrvalý software a (tuším v Jilemnici) se nás vytrvale snažil směrovat na silnici která byla uzavřena. Prý snad existují nějaká data o podobných kalamitách vysílaná v RDS. Musím říct, že bez nich se navigační software stává v situacích, kdy by měl největší využití, prakticky nepoužitelným.

A největší rána mé důvěře v navigace na závěr: přišlo mi, že lidé, kteří programovali vyhledávání cesty k tomuto problému přistoupili jako k algoritmicko-inženýrskému problému. Přitom navigace je mnohem vice psychologická záležitost. Co jsem tak vypozoroval, lidé se raději drží větších, pohodlnějších, méně členitých cest. Důvodů je určitě mnoho, zcela jistě existuje několik desítek studií na toto téma, ale já vidím jako hlavní důvod to pohodlí na široké cestě, po které se dá jet většinu času opravu těch povolených devadesát, než se kodrcat po okreskách, kde sice teoreticky můžete jet stejně rychle, ale každá zatáčka vás zbrzdí, nehledě na to, že pořád jezdíte z kopce do kopce a tak dále. Nevím jak tohle bere do úvahy konkrétně iGO, ale přišlo mi, že vůbec. Jak by se jinak mohlo stát, že nás navigace z hlavní cesty svedla na nějaké pochybné okresky (v dezolátním stavu, jak jinak) stoupající nejprve strmě do kopce (takže se dalo jet v lepším případě tak 50km/h) a pak zase strmě z kopce?

Celkově si sice pořád myslím, že navigace jsou užitečná záležitost, ale možná, že spíše než na všechny ty grafické vypečenosti by se měli autoři soustředit spíše na důkladné poznání toho, jak lidé opravdu jezdí, jak plánují trasy podle map a jak probíhá navigace podle mapy s živým navigátorem.

PS: Znova opakuji, že mluvím o iGO 2006, a nevím, jestli jiné navigační programy/systémy nejsou v tomhle lepší. I když možná kromě TomTom jsem dost skeptický...

sobota, července 21, 2007

Fake Steve Jobs...

...je prostě skvělý. Je vtipný, dělá ze skutečného Steva Jobse idiota (nejpikantnější jsou ovšem pitomci, kteří FSJ v komentářích upozorňují, že Angola neleží ve východní Evropě, nebo že enfant terrible není latinsky), ale přitom to, co píše, je zatracená pravda. Třeba tenhle text o nahrávacích společnostech, nebo o TAFKAP -ovi, nebo teď o Googlu.

Po dlouhé době blog, který můžu doporučit.

pátek, července 13, 2007

Bábel

Jak jsem tu už zmiňoval, drželi jsme s BVerem řeč na letošním Festivalu Fantazie (matně si vybavuji nějaké rčení o tom, že čím méně něčemu rozumíte, tím spíše o tom budete druhé poučovat...). V rámci přípravy jsem si napsal tyhle guidelines, kterých jsem se nakonec ani moc nedržel, protože tak už to na takových neformálních přednáškách chodí. Nicméně myslím, že publikum jsme pobavili (zejména jazyk WhiteSpace sklidil velký úspěch), nadhodili několik vcelku podmětných poznámek o DSL (ty zmatené obličeje, když jsem ukázal na pár odstavců anglicky psaného textu a řekl, že tohle je kód Inform7 stály za to) a tak dále a tak podobně.

Občas bylo potřeba trochu tlačit na pilu, aby mezi mnou a BVerem při přednášce vznikly nějaké třecí plochy, které pobaví posluchače, takže pokud se vám některé pasáže budou zdát příliš... erm... no prostě na několika místech jsem schválně přeháněl, protože to zkrátka bylo potřeba. Text asi obsahuje nějaké překlepy a tak podobně, ale vzhledem k jeho délce nemám sílu to znova celé číst a korigovat.

Jak já to vidím, přístup k programovacím jazykům se v posledních, řekněme destíti letech, tedy s nástupem Internetu, podstatně změnil.

Dříve se člověk seznámil s více programovacími jazyky maximálně tak na univerzitě, kde z didaktických důvodů přičichl ke Smalltalku, a tak trochu k Lispu, a samozřejmě k Pascalu, který, ze mně ne zcela zřejmých důvodů, bývá považován za vhodný jazyk k výuce programování. Když programátoři dospěli, skončili jaksi samozřejmě u C++, nebo ti progresivnější u Javy. (Nemluvíme tu o BASICu a assembleru, protože to jsou záležitosti pro nás staré dědky.)

Dnes je situace naprosto jiná. Mladí programátoři se začínají učit programovat v Javě nebo PHP (to je snad ještě děsivější než začínat s Pascalem), pak do sebe nacucnou celou škálu skriptovacích jazyků jako je Perl, Python nebo Ruby, pak se třeba podívají na Lisp a vrkají si spolu o tom, jak skvělý je typový systém v Haskellu, a že kdo to myslí s paralelizací vážně, nemůže než použít Erlang, k tomu nějaký ten C# pro nás Microsoftí poskoky, nebo, pokud máte silná zápěstí, třeba VisualBasic (s i bez Option strict, což je nastavení, které udělá z VisualBasicu úplně jiný jazyk se stejnými klíčovými slovy), a základem je určitě i SQL, a tak dále a tak podobně.

Prostě: tam, kde dříve programátoři konvergovali k jedinému jazyku (kterým bylo C nebo C++) a s tím vystačili na větší část své kariéry, se dnes mladí vlčáci naučí pět až šest diametrálně odlišných jazyků ještě než jim naskáčou na čele uhry.

Čím to je? Domnívám se, že rozdíl je v té šíři aplikací, pro které se dnes počítače používají. Jak již řekl můj fundovanější kolega, programovací jazyk vybíráme podle aplikační domény, tedy podle toho co se chystáme dělat. Jistě nemá smysl programovat webové aplikace v C++, a na druhou stranu, je zřejmé, že i když napsat kompilátor PHP do nativního kódu by asi nebyl takový problém, nikdo to neudělá jen proto, aby mohl pro své PDA vyvíjet ve stejném jazyce jaký používá 90% programátorů s klamnými představami o svých schopnostech.

Tedy: jak se rozšiřuje množství aplikací, rozšiřuje se i počet jazyků, kterými tyto aplikace píšeme. Na programování klademe v různých oblastech různé nároky (třeba: náročnost na zdroje, ověřitelnost správnosti, rychlost, přehlednost, rychlost implementace atd.), a tomu se uzpůsobují i jazyky, které používáme.

Problém s programovacími jazyky je tento: programovací jazyky, stejně jako Olomoucké tvarůžky, potřebují čas, aby dozrály. Už nějaký čas sleduji vývoj jednoho programovacího jazyka, na kterém pracuje řekněme deset dvacet lidí tak čtyři roky. Je to skvělý jazyk? Ó, to nepochybně. Boo je jeden z nejvíce sexy jazyků na které jsem narazil (jakožto milovník staticky typovaných jazyků se příliš nevzhlížím v Ruby nebo Pythonu). Použil bych ho pro psaní nějaké aplikace, u níž předpokládám vývoj delší než řekněme dva měsíce? To nikdy.

Programovací jazyky jsou založeny na kompilátorech a interpreterech. A kompilátory a interpretery jsou software jako každý jiný. A software obsahuje chyby. A dovedete si představit něco více frustrujícího než používat programovací jazyk, jehož kompilátor (nebo interpreter) je plný chyb?

Můj volnomyšlenkářský kolega tu prezentoval svou antipatii k jazykům vlastněným firmám. Vážený příteli, velké firmy jsou jediné instituce, které dokáží uřídit vývoj něčeho tak delikátního jako je programovací jazyk s dostatečnou kvalitou. Skutečnost, že stovky tisíc open-source dobrovolníků dokázaly vyvinout za více než dvacet let existence open-source hnutí tři použitelné skriptovací jazyky (Perl, Python a Ruby), mluví samo za sebe. Všechny ostatní jazyky "vlastní" buď nějaká soukromá společnost, nebo univerzita, nebo se brzy po svém vzniku rozštěpily do tolika větví a jsou tak nespolehlivé, že je nikdo seriózně nepoužívá (viz třeba Lisp, který má asi tři sta dvacet sedm vzájemně nekompatibilních dialektů a nepoužitelné knihovny). To, že vlastníci těchto jazyků maskují za licenci GPL vůbec nic neznamená.

Tím jsem se dostal k další záležitosti, kterou tady pan doktor nakousl: knihovny. Knihovny jsou dneska stejně důležité, ne-li důležitejší, než samotný jazyk. Bez knihoven, na úrovni abstrakce, na které se musíte dneska pohybovat, abyste v konečném čase stvořili něco smysluplného, bez pořádného balíku knihoven, nejlépe celého frameworku, nesvedete nic. Potřebujete knihovny na práci s unicode řetězci (což je oblast, jejíž složitost si většina jedinců ani nedokáže představit), s implementací TCP/IP socketů, nějaké to šifrování, zobrazování, XML, formátování výstupu a zpracování vstupů v závislosti na národním nastavení, prostředky pro komunikaci a synchronizaci u vícevláknových aplikací, přístup na disky se všemi těmi zabezpečovacími serepetičkami, izolovaná úložiště dat, a tak dále a tak podobně. A to jsme ještě nezabrousili do oblastí řízení bezpečnosti aplikací a přidělování oprávnění k přístupu k různým částem operačního systému.

Chci říct: napsat programovací jazyk je jedna věc, ale učinit ho užitečným je věc úplně jiná. A sílu učinit jazyk užitečným mají podle mého jen společnosti, které jsou dost bohaté a schopné na to, aby vývoj tohole všeho zvládly v čase kratším než geologickém.

Aha, vidím nespokojenost na tváři tady mého veleváženého kolegy. Inu, má pravdu. Existuje způsob jak vyvinout dobrý jazyk a dobrými knihovnami a nestrávit tím celý život: použijete existující framework s virtuálním strojem, a pro ten svůj skvělý jazyk napíšete. Dnes máme na výběr ze dvou variant: jednak je tu Java Virtual Machine od Sun Microsystems, na kterém běží Java, dvak Common Language Runtime od Microsoftu, který využívá široká paleta .NET jazyků. Samozřejmě, že přítomné zrdojanarchisty nemůže uklidnit to, že je jejich jazyk plně open-source, když běží na virtuálním stroji soukromé společnosti, ale výhody pro nás ostatní jsou zřejmé: zaprvé od úplného začátku existuje celý balík velmi dobrých knihoven, které lze použít, a zadruhé: všechny tyhle optimalizační a portační kejkle za vás udělá někdo jiný. Vy si jen poklidně kompilujete do nějakého toho bytekódu, který pak virtuální stroj překládá do instrukcí procesoru který právě používáte.

Proto: pokud dneska opravdu chcete napsat programovací jazyk, piště jej pro některý z těchto virtuálních strojů. Jinak se sice naučíte spoustu zajímavých věcí o kompilátorech a procesorech a všech ostatních cool věcech, kterými neuděláte dojem na slečny dole u baru, ale bude to práce, kterou nikdo neocení.

Existuje ještě jedna skupina jazyků, o kterých jsme se tu ani já, ani můj vzdělanější kolega nezmínili. Jde o tzv. DSL, neboli domain specific languages, tedy jazyků určených pro jednu konkrétní aplikační doménu. Tento druh jazyků se dneska většinou píše v programovacích jazycích které vládnou syntaktickými makry, tedy takovou vypečenou věcičkou, která vám umožní do jakési meta-funkce předat jako parametr kus kódu, který se pak při kompilaci (nebo interpretaci) přeloží do skutečného kódu toho kterého jazyka. Příhodnou ukázkou může být třeba generování XML (nebo HTML), kdy místo používání ordinérních prostředků pro zapisování tagů použijete virtuálně vytvořená klíčová slova vašeho DSL, čímž celou věc krásně zpřehledníte a zjednodušíte.

DSL je dneska progresivní oblast programovacích jazyků (asi jako začátkem devadesátých let OOP), která pomocí dostatečně mocných obecných jazyků umožňuje napsat speciální jazyk pro každou aplikaci tak, že z kódu je hned zřejmé nejen jak věci děláte, ale také co děláte a leckdy i proč.

Nejzářnějším příkladem DSL je Inform7, tedy programovací jazyk určený k vývoji interaktivních fikcí (tedy textových adventur), který se snaží předstírat, že programujete v angličtině. V I7 napíšete něco jako "Miska s vodou stojí na stole v kuchyni," a překladač z toho sám odvodí, že miska je kontejner, stůl je objekt, na kterém mohou ležet jiné objekty a že kuchyň je místnost ve hře. Problém je v tom, že a) to funguje jen v angličtině, b) když se dostanete za hranice takto jednoduchých vztahů, musíte tvořit další pravidla pomocí syntaxe, která není ani zdaleka tak přehledná. Nehledě na to, že v takovémto jazyce se prakticky nedá ladit.

Nicméně si myslím, že podobně formované DSL budou v nejbližší budoucnosti poměrně populární, a že otevřou programování mnohem šiřší skupině než lidí, než by starému von Neumanovi bylo milé (ten dokonce považoval i assembler za zatemňování smyslu programu; ale co byste čekali od člověka, který sčítal nekonečné řady z hlavy).

Takže: i když, jak tu můj esotericky zaměřený kolega prezentoval, lze napsat programovací jazyk o jediné instrukci a přesto bude Turing-kompletní, volba správného programovacího jazyka je a bude zatraceně důležitá. Správný programovací jazyk vás zbaví potřeby znát polovinu návrhových vzorů z té provařené knihy gangu 4 (z hlavy si vzpomenu třeba na iterator, strategii a visitor), ty správné (funkcionální) jazyky budou potřeba pro rozvoj opravdu paralelního programování, příhodné jazykové konstrukce vás dokáží zbavit potřeby šmudlit složité SQL dotazy, nebo opakovat jeden skoro stejný kód dvacetkrát.

Zkrátka: pokud jste se rozhodli následovat osud dinosaurů, držte se svého jazyka a o nic dalšího se nezajímejte. Vy ostatní: vítejte v Babylonu!

A abych nezapomněl: stav je zdrojem všeho zla!

středa, června 27, 2007

To neprojde...

Taková malinkatá celebritka mezi .NET vývojáři Jeff Atwood se rozhodl, že si na svůj blog vpustí reklamu a zisky z ní utratí na sponzorování open source (OSS) projektů vyvinutých pro .NET (viz Supporting Open Source Projects in the Microsoft Ecosystem. Vcelku nic moc zajímavého.

Zajímavé jsou ale některé komentáře pod jeho textem. Třeba ten od Franse Bouma:

In fact, the whole MS platform eco system isn't suitable for open source tools to become very effective. As soon as they do, MS will come with an equivalent, and what's worse: large droves of developers don't even know how to spell open source, left alone that they're even looking for open source projects, they simply look at Redmond and wait till MS comes with something.

In the Java community, things are completely the opposite. The whole eco-system around Java is simply build on top of the open source model: libraries and tools are very often free and open source. The business model of java oriented companies is build around providing services, not by selling licenses. On the MS platform this is the opposite.

Vcelku s tímto popisem situace souhlasím. Také používám (soukromě i pracovně) několik OSS produktů, jako je třeba MbUnit (na kterou jsem přešel z NUnit, protože MbUnit má spoustu sexy vlastností, které NUnit nemá), nebo ZedGraph (vážně lepší než drtivá většina placených komponet pro kreslení grafů, distribuovaná pod LGPL), nebo #ziplib (a asi i další).

Nicméně je fakt, že většina těchto komponent dříve nebo později dojde do situace, kdy si Microsoft všimne, že mu někdo loupe perníček, a buď si koupí (rozuměj zaměstná) přímo vývojáře té které komponenty, nebo vymyslí něco vlastního, skoro stejného, ale ne tak úplně kompatibilního, a přibalí to k Visual Studiu, nebo to vydá jako nějakou zdarma stažitelnou komponentu, na což vývojáři většinou reagují tak, že převedou své aplikace na věci od Microsoftu. Podívejte, jak nepotřebné jsou k Visual Studiu přibalené Crystal Reports od doby, kdy Microsoft distribuuje svůj vlastní ReportViewer (pro jednoduché reporty, samozřejmě).

Já to Microsoftu nezazlívám: je to firma, jejímž cílem je znásobovat investice do ní vložené, která potřebuje růst na trhy na kterých zatím není a tak dále. Microsoft je trochu jako hypermarket: všechno co potřebujete byste měli najít pod jednous třechou, aby vás ani nenapadlo dívat se jinam. Na druhou stranu se pak nemůže nikdo divit, že některé lidi takový přístup znechutí, a že začnou raději věnovat něčamu jinému než je .NET. Něčemu, co jim přinese nehynoucí slávu a uznání, a ne jen temný kout v domě zapomnění.

Říkám si: v čem je ten rozdíl, mezi vývojáři opravdového OSS, kteří se věnují Javě, nebo Ruby, nebo něčemu podobně zajímavému, a vývojáři kteří se spokojeně rochní v teplé náruči Microsoftu?

Napadlo mě tohle: zatímco všichni ti opravdoví OSS vývojáři tělem i duší, sní o tom, že jejich produkt (jeden z mnoha ve stejné kategorii na Sourceforge) napraví svět a tak dále, a že když budou dost dobří, tak je nakonec zaměstná Google nebo nějaká podobně trendy firma, snem vývojářů pro Windows (nebo platformy Microsotu obecně) je opustit řeholi zaměstnání, stát se nejprve MicroISV a pak třeba i regulérním ISV (tedy že naberou zaměstnance, kteří budou makat za ně). Rozdíl je totiž v tom, že zatímco pro osvědčené OSS platformy (Linux, Java, atp.) jsou věci zadarmo, pro ty, co se tak či onak spolčili s Microsoftem je naopak normální za věci platit. Takže stačí, když vyvinete nějakou sadu dostatečně kulatých a gradientních tlačítek, vyrobíte si stránku, zaspamujete pár diskusních fór (nebo nabídnete svůj "produkt" pro nekomerční využití zdarma), a díky té mase vývojářů se docela slušně uživíte.

Jistě OSS produkty se živí službami. Ale množství počátečního kapitálu a výše rizika pro zaběhnutí produktu založeného na službě jsou úplně jinde než u balíku ovládacích prvků, který lze vyvinout poměrně dobře i u práce (dokonce i když máte rodinu) a riziko je vcelku nulové.

Chci tím říct: myslím si, že lidem, kteří obcují s produkty Microsoftu současný stav vcelku vyhovuje. Dává jim totiž naději, že jednoho dne budou pracovat na svém, a že zvyk Microsoftích nohsledů nakupovat licence, jim umožní zbavit se jha práce pro někoho jiného. To, že v okamžiku, kdy se stanou příliš úspěšnými, vrhne Microsoft na stejné pole několik set ze svých tisíců vývojářů, kteří je o jejich malý kšeft zase připraví, je nevzrušuje, protože se ukájejí tím, co tvrdí Paul Graham a Tim O'Reilly: totiž že jsou pod radarem, že na ně není vidět, že jim se něco takového prostě nemůže stát.

Proto si myslím, že podporovat finančně OSS projekty pro .NET je jen takové plácnutí do vody, které stejně nikam nepovede. Aby to bylo k něčemu, musel by se změnit přístup Microsoftu, a to se nestane, protože Microsoft potřebuje růst a nemůže si dovolit, aby místo, kam by se mohl natlačit on sám, zabírala nějaká pochybná skupinka předstírající filantropii, či co.

Tak tohle mě napadlo.

neděle, června 24, 2007

Úleva?

Opravdu jsem se těšil. Víte, myslel jsem, že až dodělám tu zatracenou disertaci, tak že se mi strašně uleví nejen od toho, že nejsem typ ABD (Anything But Dissertation) studenta, ale že i ty páteční a sobotní večery ihned přejdou zpět na ten poklidný režim, ve kterém byly ještě tak před dvěma lety (tedy než jsem si uvědomil, že by se mohlo stát, že to nestihnu). Však to znáte: lahvinka bílého, nějaké to programování, nějaké to hraní počítačových her, trochu toho nezávazného psaní.

A ono nic.

Pořád jsem nějaký napjatý, nějak se nedovedu dostat do režimu příjemného utrácení toho infinitizemálního množství volného času kterým teď disponuji.

Dobrá, ještě jsem měl nějaké resty v podobě článku na letošní IMEKO, který jsem slíbil školiteli, a který jsem včera dopsal do nějaké ucelenější podoby. Pak je tu ta věc s přednáškou, kterou budeme mít na Avalconu (pardon, Festivalu Fantazie, či jak se to píše), ale to už je zábava, to není úkol, který by mě stresoval (seriózní práci jsem vychytrale nechal na BVerovi a sám se chystám působit jako ten hloupý z komické dvojice). Je taky fakt, že software, který píšu v práci se blíží k vydání, a že mě stresuje skutečnost, že vzhledem k tomu, že jsem na tuto část byl prakticky sám, tak teď musím nejen dokončovat nějaké ty pozapomenuté drobnosti, dopisovat unit testy, provádět aplikační testování, psát manuál a do pátku nastudovat WiX a vyrobit v něm instalátor, ale jelikož jsem se vcelku dobře naučil nenosit si práci domů, tak kromě takového toho latentního stresu to mimo pracovní dobu nějak extra neprožívám.

Čili nechápu, v čem je problém. Kam se, sakra, poděl můj víkendový klid?

Říkám si, jestli to není tím, že jsem si konečně začal uvědomovat to, o čem psal před časem Steve Yegge, tedy fakt, že už mi zbývá jen velmi omezené množství pětiletých projektů, které stihnu ve svém volném čase udělat. Momentálně mám v hlavě nejméně čtyři, a každý víkend, který věnuji něčemu jinému mě vzdaluje od realizace byť i jediného z nich.

Proto nějak nejsem s to donutit se dohrát Moment of Silence, a který jsem se opravdu těšil (a který mě opravdu nadzvihl dementní ochranou StarForce, která není inzerována na obalu). Proto tři dny chodím kolem knihovny, než vyberu nějakou knihu k přečtení, protože je mně jasné, že než i jen začít číst nějakou zhovadilost, je lepší nečíst nic, proto mám na stole tři knížky o programování (resp. o technologiích), u kterých uvažuji, jestli stojí zato číst je celé, když nejspíše 80% z jejich obsahu nikdy k ničemu nepoužiji (i když Mythical Manmonth jsem nakonec dočetl, a nemrzí mě to, protože pěkně shrnuje to, co jsem tak nějak tušil), proto sem málo píšu, protože něco rozumného napsat mi sebere hodinu až dvě času, který jsem mohl třeba prospat (ověřil jsem si, co psal George Orwell v Holdu Katalánsku -- dospělí muži opravdu dokáží žít velmi dlouho v brutálním spánkovém deficitu).

A tak dále.

Zkrátka, jsem nějak celkově vypruzený, a nevím co s tím mám dělat.

Ach jo.

pátek, června 22, 2007

The Rise of Machines

Už je to tady: Japanese firm exhibits droid construction worker.

Kapitán Kyborg může začít psát knihu "A vy jste se mi smáli, volové"

středa, června 13, 2007

Není větší potěšení pro ortodoxního lumpa...

Přináší mi nevýslovné potěšení sledovat, jak se společnost Apple v tomto týdnu kolosálně ztrapnila. (Můžu si dovolit být takto přímočarý, protože se ukázalo, že tato stránka je pod úroveň Apple fanboys, čili žádný hate-mail mi nehrozí.) Nejprve opravdu nudná a nezajímavá keynote na které Steve Jobs dokázal nepředstavit žádné novinky, a pak celé to fiasko se Safari pro Windows (nekonzistentní UI, fonty, bezpečnostní chyby, problémy s národními verzemi Windows, paměťová nenažranost a tak dále a tak podobně, ve fázi, kdy jiné firmy, kterým je vyčítána chybovost aplikací, jsou už jen o dva release candidates daleko od finální verze).

Prostě krása.

Rozumějte: Jak už jsem vysvětloval, je mi firma Apple a její produkty vcelku lhostejná, ale ten hype, který kolem Apple vznikl v poslední době mě trochu vyděsil. Říkal jsem si: Ohó, co když Apple uspěje a budeme mít dvě platformy místo jedné? Jakékoliv programování pak bude znamenat dvojnásobek práce (i když díky Mono jsem jakožto .NETář ještě vcelku klidný), a nakonec jedna z plaforem bude vždy horší (většinou to bývá ta, kterou její uživatelé adorují), a multiplatformní vývoj znamená kompromisy, dvojnásobek testování a ladění a tak dále. Prostě žít v monokultuře Windows je jistě v některých ohledech nepříjemné, ale na druhou stranu je tu jistota 95% pokrytí trhu, což je zejména pro MicroISV (Independent Software Vendor) zatraceně důležitá věc.

Abyste si nemysleli: na druhou stranu tak trochu doufám, že se Apple podaří tak trochu uspět, protože to bude znamenat větší tlak na Microsoft a zlepšení a zlevnění jeho produktů. Ale neměl by být ten úspěch příliš velký, protože i když naučit se Objective-C a Cocoa by mi asi nakonec nedělalo žádné větší problémy, nějak se mi do toho nechce. Především proto, že je mi Apple nesympatické svou arogancí a sebestředným snobstvím (které vyvěrá z jeho kormidelníka).

Ovšem po tom, co Apple předvedlo tento týden, to zatím vypadá tak, že tahle firma opravdu směřuje k tomu, aby se stala producentem spotřební elektroniky, a že na vývoj software v rozsahu, který by jeho platforma potřebovala, prostě nemá. Leopard byl nejprve odložen s trapnou výmluvou na realokaci vývojářů na port OS X na iPhone (všimli jste si, že skluz Longhornu, resp. Vista byla mnoha apple-holiky zesměšnován, zatímco u Leopardu je to naprosto vpořádku? Já vím, Leopard se zatím nezpozdil o 5 let, ale co není může být...), pak se ukázalo, že 300 nových funkcí bude asi spíš 300 drobných doladění, filesystém se měnit nebude, pokus o port prohlížeče na jinou platformu dopadl děsivě, z důvodů nedoladěnosti a strachu z exploitů (jak se domnívám na základě nějakých textů od lidí, kteří se telefony zabývají) nebude mít iPhone otevřené API, a vlastně to bude spíš iPod který umí náhodou telefonovat, než pravý smartphone. A tak dále a tak podobně.

Čili v oblasti operačních systémů a věcí okolo se Apple letos opravdu není třeba bát.

Dokonce si myslím, že teorie toho, jehož jméno se nevyslovuje ohledně přechodu Apple na OS od Microsoftu (vyšlo dnes, nelikuji záměrně) není tak nesmyslná jak by se mohlo zdát. Apple vždy byla především hardwarová společnost, a myslím, že stejně jako Apple otočilo ohledně procesorů Intel, může kdykoliv prohlásit, že Microsoft není nepřítel ale kamarád, a že je nesmysl vyvíjet OS X, když současná verze Windows už není tak hloupá jak byla, a že na hardware od Apple (a s patřičným apploidním tématem) se s ním dají dělat chytré věci a tak podobně.

No, uvidíme.


PS: Nemůžu si odpustit jedovatou slinu: jakto, že nikdo z těch nadřazených Apple uživatelů neobjevil v Safari všechny ty bezpečnostní chyby, které se našly (a byly ověřeny i v současné produkční verzi na OS X), když stupidním uživatelům Windows to nezabralo ani půl dne? Aha, už vím, Apple uživatel na počítači pracuje a nemá čas na pitominy. Navíc OS X je bezpečný, tak proč v něm hledat chyby, že? (Eh, ulevilo se mi :-))

Vítr změn (aneb Kde, sakra, vězí?)

Jistě, je to banální, ale koupil jsem si teď nedávno nový monitor. Po nějakém tom týdnu rozmýšlení jsem nakonec zvolil 20" širokoúhlý (s rozlišením 1680x1050, nebo tak něco). Je to velmi pěkná věc, také asi proto, že poměr 16:10 je nejblíže zlatému řezu ze všech. Ale co chci říct: přivedlo mě to k úvahám nad uživatelskými rozhraními, a jak nudná a stejná vlastně jsou.

Musím říct, že mě dost překvapuje, že po pětadvaceti letech vývoje používají operační systémy tu samou metaforu pro práci jako tehdy na začátku. Skoro všechny součásti hardwaru se za ty roky proměnily k nepoznání (ať už jde o výkon složitost, nebo kapacity), software, který uživatel nevidí, udělal obrovské pokroky (multitasking, správa paměti, různé tyhle síťové vrsty a frameworky obecně), objevilo se tolik různých aplikací, které jsou užitečné, a které tu předtím nebyly. Ale uživatelské rozhraní je pořád stejné: desktop, na který se dají házet ikony, které mají představovat soubory (ale také programy -- myslím, že tohle spoustu lidí dost mate, že ikona reprezentuje různé věci v různých situacích), okno, nějaké prvky na jeho zavření, přesunutí nebo změnu velikosti, nějaká ta lišta se seznamem spuštěných aplikací a to je všechno.

Říkám si: jasně, většina lidí asi tuhle abstrakci pochopí, ale když uvážíte, jak se osobní počítače změnily za dobu své existence, jsou všechny současné (mainstreamové, konzumentské) operační systémy dost trapné. Uvažte: jediné co všichni ti lidé, kteří pracují na rozšíření uživatelského rozhaní o 3D možnosti, dokázali zatím vymyslet je 3D přepínač aplikací a nějaké další trapné pokusy dodání třetího rozměru oknům, které jsou prostě z principu dvourozměrné, a další rozměr nemá smysl, dokud se zcela nezmění metafora, kterou operační systémy v uživatelském rozhraní používají. Tedy: samá pastva pro oči, žádná inovace. (Ach, ještě máme Ribbon, což je zajímavá věc, a je to od Microsoftu docela odvaha takhle zásadně změnit svou dojnou krávu -- Office. I když chápu, že koncentrace funkcí v Office už dosáhla hranice, kdy nebylo možné ho dále nutit lidem s tím, že obsahuje nové funkce, protože na ně stejně nikdo nepřišel. Ohledně UI MS Office je rozhodně zajímavé přečíst si blog Jensena Harrise An Office User Interface Blog.)

Samozřejmě, že změna metafory by nejspíše vyžadovala změnu ovládání, které by muselo nějak přirozeně reflektovat trojrozměrnost pracovní plochy, ale myslím si, že dneska není zase takový problém vyrobit pro jeden systém dvě rozhraní: jedno klasické 2D pro konzervativce a další opravdu 3D pro experimentátory a trhnout balík na prodeji předraženého ovladače.

Jedna věc, kterou jsem zapomněl napsat v textu o WPF byla, že WPF přímo vybízí k tomu, aby designeři designovali uživatelská rozhraní do problémové domény, a ne do operačního systému. Myslím tím to, že WPF umožňuje snadno implementovat takovou abstrakci, které odpovídá problému který řešíte, a ne aplikaci, která jen vypadá konzistentně s operačním systémem, ale jinak se používá špatně (samozřejmě ve WPF můžete UI přepínat podle potřeby).

To je rozhodně změna k lepšímu.

V jakémsi podcastu jsem slyšel (pokud si dobře vzpomínám), že všichni doktoři byli naprosto unešení z malého dema, které v Microsoftu sestavili aby předvedli možnosti WPF, a které imitovalo databázi pacientů. Prý lepší popsání problémů, které řeší zatím neviděli.

Rozumím tomu.

Uživatelská rozhraní často upadají do stereotypů, které vznikly před mnoha lety, kdy nebylo možné řešit rozhraní tak, jak je to přirozené, a tak se z různých důvodů se uživatelé přizpůsobovali aplikacím, místo aby to bylo naopak.

Dneska si myslím, že už takové ohýbání uživatelů není nutné. Tak doufám, že si toho někdo všimne...

pondělí, června 11, 2007

Ing. jIRI Ph.D.

Ach, ano. Minulý týden v pondělí jsem obhájil svou disertační práci a od toho data mohu beztrestně používat titulu Ph.D. za mým ctěným jménem. Samozřejmě toho hojně využívám, už jsem si změnil signatury u všech e-mailů, nové vizitky jsou v tisku a v práci mi asisteky, se kterými jsem si ještě před týdnem tykal, musí říkat "pane doktore".

Nebo tak nějak.

Ve skutečnosti největší změnou je ten obrovský pocit úlevy, na který mě připravoval jeden bývalý spolužák, a který se nedostavil po sdělení výsledků obhajoby, ale už v okamžiku, kdy jsem PowerPoint úspěšně dovedl k poslednímu snímku (jeden obrázek jsem v zápalu boje přeskočil, ale jelikož si toho nikdo nevšiml, uvažuji nad tím, kolik jich ještě bylo možno vynechat, aniž by tím prezentace utrpěla, nebo to nějak závažněji změnilo výsledek hlasování ctěných členů komise). Kupodivu při závěrečné sérii dotazů (z nichž některé byly docela záludné a nepříjemně k věci, a občas jsem opravdu odpovídal bezelstným "nevím", které mi bylo prominuto jen proto, že jsem už vypadl z denní rutiny akademického světa) jsem byl už klidný a usměvavý a spokojený, že všechno co jsem mohl ovlivnit, jsem udělal nejlépe jak to bylo v dané situaci možné.

A pak si mě znova zavolali a sdělili mi výsledek a potřásli jsme si se všemi rukou a každý se na mě usmíval, a pak asistenka vedoucího katedry přinesla tác s nějakou whisky, kterou jsem den předtím koupil v Tescu ve Vršovicích a jak jsem byl na lačno, abych se z toho tlaku nepozvracel, tak se mnou rozlilo takové teplo a klid a mír, a pak jsem se ještě chvíli toulal na katedře a nakonec skončil se školitelem a nějakými dalšími lidmi U pětníka, kde jsem toho čtvrt litru Tullamore Dew zalil pěti dvanáctkami, a nakonec jsem se vykolébal do metra a na tramvaj a pustil jsem si z přehrávače na plné pecky Power Ballads a taky kousky Bloodsport a Becoming X, takže když jsem dojel k BVerovým domů, kde jsem squatoval, abych se převléknul z kouzelnického do normálního oblečení, byl jsem už docela vláčný, pročež, když jsem pak jel do hospody, kde jsme to měli v úzkém přátelském kruhu oslavit, jsem vzal tramvaj opačným směrem, čehož jsem si všiml až na Zahradním městě, ale nevadilo mi to, protože jsem si celou tu dobu říkal: "Zatraceně, jIRI, tak jsi to dokázal!"

Dneska už mě ten fakt, že jsem postgraduální studium nakonec dokončil tak nefascinuje. Jak jsem od začátku věděl, ta výsledná změna je poměrně malá. Ale jako u každého velkého projektu, čímž dokončení a obhájení disertace určitě je, se člověk cítí tak nějak vnitřně spokojený a naplněný tou skutečností, že není takový idiot jak si o sobě občas myslí, a že když se vzepne a mákne si, tak že dokáže věci.

Obecně souhlasím s lidmi, kteří tvrdí, že Ph.D. je z 5% štestí, z 15% inteligence a z 80% vytrvalost. Opravdu není takový problém vymyslet téma, které je zajímavé a "pro vědu přínosné". Problém je v realizaci a smysluplném shrnutí celé věci. Právě na to člověk potřebuje to odhodlaní a vytrvalost, ale především souvislá kvanta času. A těch se mi zatraceně nedostávalo, a proto obdivuji moji manželku, že to se mnou vydržela, a dopřála mi všechny ty volné víkendy a dlouhá odpoledne, během kterých jsem to nakonec dokázal.

Jinak jsem se během práce na disertaci dopustil dvou nejhloupějších ukázkových chyb, jakých se člověk může dopustit. Zaprvé jsem upadl hned po obhajobě minima (tedy tezí disertační práce) do myšlenkové pasti, kdy mi někdo řekl, že něco nejde a já tomu nekriticky uvěřil. Trvalo mi pak pět let se od toho tvrzení osvobodit a zjednodušit věci několika předpoklady, které jsou docela dobře platné i mimo svět disertačních prací, a všechny věci nakonec zapadly do sebe.

Druhou chybou byla má snaha o zapojení vedoucího katedry do procesu odevzdání. On to má rád, ale musí na tyhle věci mít čas. Já jsem mu poslal ze 70% hotový text v okamžiku, kdy byl vytížen, on ho proletěl, učinil závěr, a toho se pak držel až do samého konce, kdy si u toho závěrečného rukotřasu neodpustil poznamenat, že práce potřebovala ještě měsíc.

Inu, má pravdu. Za měsíc se dá lecos stihnout. Ale další měsíc nedokáže vytvořit ten tlak, který můj mozek tak dobře stimuluje. Jde o to, že jsem se poctivě snažil práci dokončit celých těch pět let, co jsem pryč ze školy. Ale ono to prostě nešlo, protože jsem se nedokázal vykolejit ze slepé uličky, do které jsem upadl.

Ale tohle stejně nikoho nezajímá.

Takže abych učinil nějaký komický závěr: představuji si Aberta Einsteina, jak obhajuje obecnou teorii relativity na FEL ČVUT, a v polovině mu někdo řekne "pane kolego, časový limit na vaši prezentaci je dvacet minut..." (tedy já jsem se vešel poměrně přesně, ale někteří nešťastníci, kteří mluvili moc dlouho prý byli bez milosti utnuti a navedeni na poslední snímek). A druhá představa: Shakespeare prezentuje Romea a Julii v PowerPointu:

  • Romeo a Julie
    • on Montek
    • ona Kapuletová
    • nenávist
    • láska
    • Merkucio umírá
a tak dále a tak podobně. No uznejte, nebyla by to ohromná legrace?

pátek, května 25, 2007

úterý, května 22, 2007

Doktor Googleláska, aneb jak jsem se přestal bát RSS a naučil se mít rád Bloglines

RSS čtečkám jsem poměrně dlouho odolával. Místo feedů jsem používal skupiny záložek v MyIE2 (které tehdy bylo zdarma, jak je to teď netuším) a byl jsem spokojený. Jak mi ovšem počet panelů ve skupině rostl, rozhodl jsem se, že je čas na změnu.

A tak jsem je začal používat někdy před dvěmi třemi lety RSS čtečky. Nejprve jsem experimentoval se několika desktopovými čtečkami, které ale jsou vcelku k ničemu a navíc všechny, které jsem zkoušel fungovaly tak nějak divně. Nakonec jsem objevil Bloglines, které od té doby spokojně používám.

Teď jsem si nedávno všiml, že několik lidí, kteří čtou mé hlubokomyslné projevy zde, používá čtečku Google Reader. Zkoušel jsem ji před několika měsíci a popravdě řečeno: přišla mi jako taková nedomrlá kopie Bloglines. Povzbuzen faktem, že GReader opravdu někdo používá, jsem se rozhodl zkusit to znova.

A musím říct: pořád mi připadá jako kopie Bloglines (ono nakonec v RSS čtečkách není moc co vymýšlet, pokud se držíte základního schématu seznam nalevo-obsah vpravo). Sice o něco více sexy, se vším tím posouváním a blikacími rámečky, ale mnohem méně použitelná.

Vadí mi zejména: GReader (pokud se nemýlím) zabudovává jednotlivých položek věci jako jsou videa a tak podobně. To vyloženě nesnáším, a doufám, že příliv trapných vestavných videí z YouTube časem pomine, stejně jako odumřely framy, animované GIFy nebo tabulky. (Tedy tyhle vyhynulé technologie jsou, myslím, jasnou ukázkou toho, jak hladina stupidity je víceméně neměnná, protože staré zhovadilosti nahrazují ty nové, jako jsou třeba všechny tyhle pohyblivé a vyskakovací JavaScriptové tentononcy.) Dále skutečnost, že algoritmus označovaní položek jako přečtených je doplněný stochastickou větví, která někdy něco označí jako přečtené a někdy ne (zejména pokud máte okno stažené na výšku a používáte zoufale jedna-nulózní klávesu Page Down). Nebo fakt, že když už kliknete na nějaký feed, dotahují se třeba obrázky postupně, jak se přibližujete k nějaké položce. A tak dále.

Co mi také citelně chybí jsou "related feeds", přes které občas člověk (když se nudí) objeví nějaký zajímavý obsah, a je fakt, že čtečka Bloglines má k sobě přilepeno několik nástrojů, které mohou být možná někomu užitečné (link blog, clippings, atp.).

Zkrátka: Google Reader není úplně špatná čtečka, ale přejít na ni z Bloglines mi příjde jako jít do horšího. Nechci říct, že všechno co dělá Google (kromě vyhledávání) je druhořadé. Třeba Picassa Web Albums jsou velmi slušné, pokud potřebujete někam potřebuje nahrát svá fotoalba (zvlášť vzhledem k integraci s desktopovou Picassou), nebo takový GMail je vážně príma (i když tržní podíl nemá kdovíjaký). Ale nemůžu se zbavit dojmu, že nebýt tyhle aplikace od Googlu, nebyli by z nich jejich uživatelé tak nadšení jak leckdy jsou.

Chci říct: Tohle hromadění nesouvisejících a ne úplně dobře propojených aplikací na Googlu (a ostatně na všech vyhledávacích "portálech"), mi připomíná jak se před lety začaly hromadit funkce v mobilních telefonech. Technologie k tomu ještě nedozrála, ale už jsme měli v mobilu kde co. Přitom drtivá většina lidí z telefonu opravdu jen volá, nebo občas pošle SMS (eventuálně nakoukne do kalendáře nebo použije budík). A všechny tyhle další vymyšlenosti jsou prostě zapomenuté někde hluboko v menu, nebo přiřazené speciálním klávesám, na které se většina lidí bojí šáhnout, protože nemají tušení k čemu slouží.

Nicméně myslím si, že tak jako postupně telefony dorostly k tomu, že všechen ten balast, který je v nich nabalen, občas někdo opravdu použije, protože displeje už jsou dost velké a baterie vydrží dost dlouho, dozrají i extra-funkce vyhledávačů.

Ale dneska, jak já to vidím, je lepší uchýlit se k pár speciálním aplikacím od výrobců, kteří se na jejich vývoj soustřeďují, než za každou cenu používat nástroje od Googlu jen proto, že jsou od Googlu.

pátek, května 18, 2007

Flyboy

Já vím, já vím. Ještě před nedávnem jsem tu lkal nad nedostatkem inovací vycházejících z Microsoftu (a taky jsem se zařekl, že nebudu jejich hlásnou troubou, když už mi to BVer vyčetl) a teď tohle. Pardon, tohle.

Prohlédl jsem si screencast v sekci Overview, a na to, že celá ta věc běží v prohlížeči, je to dost zajímavé.

Nicméně nějak se nemůžu přinutit Popfly vyzkoušet osobně, protože to vyžaduje Windows Live Id. A posledně, když jsem si generoval Live Id (které jsem už samozřejmě zapomněl), přesměrovávaly mě microsoftí servery od čerta k ďáblu, a potvrzoval jsem několik nechutně dlouhých licenčních ujednání, či čeho.

Nevím, jestli seberu odvahu pustit se do něčeho takového podruhé.

Chtěl jsem říct: takhle je to s Microsoftem u všeho...

neděle, května 13, 2007

Review.Movie("Sunshine")

Takže Sunshine, říkáte?

Víte, když jsem sledoval Sunshine, docela často jsem se přichytili při přemýšlení o textu Whatever you do, don’t call it ’science-fiction’. Cituji:

Even in the world of video games, typically a place where such prejudices are justifiably turned on their head (have you ever heard of a romantic comedy video game?), the label ’sci-fi’ is increasingly frowned upon. Call it ‘futuristic’, call it ‘techno-thriller’ - hell, call it ’space opera’, but for the love of God don’t you dare call it ’sci-fi’. Stark in Dreamfall is certainly a sci-fi world, but we were expressly asked to never call it that.

Tohle téma (myslím proč je SF takové ghetto), promýšlím už několik let. Moje současná teorie je zhruba taková, že SF je vnímáno jako zábava nerdů. Vzpomeňte si jak to vypadalo na střední škole: opravdoví -náctiletí intelektuálové měli načteného Dostojevského ještě než jim naskákly první uhry, sympaťáci a takoví ti normální nečetli nikdy nic, a my, podivíni s exotickými zájmy jako jsou technologie, futurologie nebo explorace vesmíru, jsme pokoutně louskali v obrovských kvantech SF v dětinských obálkách, za které se musíte ve vlaku stydět a balit je do ubrousku od svačiny.

Tohle zařazení SF a jejích čtenářů do sekce "neškodní úchylové", pak u žánru podporují máklí fanoušci StarTreku a StarWars (i když loni a Avalconu byla jedna opravdu roztomilá vulkánka na které ten upnutý pyžamoidní stejnokroj Hvězdné federace vypadal opravdu dobře... ehm...). To, že SF produkuje kvalitu a škvár ve stejném poměru jak mainstream, je ireleventní. Normální lidi prostě čtou Viewegha a Barbaru Woodowou, pokud si chtějí hrát na chytráky, tak si vyberou nějakého toho Coelha (či co to vlastně iňťouši čtou). A my, kteří jsme zůstali věrni žánru, jen místo bezhlavého hltání kdejaké pitomosti, pečlivě vybíráme do čeho investujeme volný čas, jsme pořád považováni za zastydlé podivíny. Osobně jsem už před časem raději začal svou náchylnost k SF preventivně shazovat, abych vypadal jako znuděný intelektuál, který to čte z recese.

Chci říct: Víte, už jen za to, že tvůrci Sunshine měli koule dost velké na to, aby o filmu naostro řekli, že je to sci-fi, mám nutkání mluvit v superlativech.

Například: Vizuální stránka filmu je naprosto úžasná a jednoznačným hlavním hrdinou filmu je chladnoucí slunce. Nebo: po dlouhé době film, ve kterém byly technické detaily promyšleny na odpovídající úrovni. Třeba ta věc se sluneční "plachtou", která mi došla až na konci filmu, je skvělá. A nebo: skoro žádný patos. Ne, vážně, věřte mi. Trochu patetický mi film občas přišel, ale jinak to nebylo žádné hrdiné předbíhání v tom, kdo bude moct umřít první, jako v jiných filmech, kde někdo někam putuje aby zachránil lidstvo.

Samozřejmě: film má své slabé stránky, jako je například ta poslední čtvrtina, které vznikla asi proto, že jinak by film mohl někomu připadat málo dramatický (i když mě by se asi líbil ještě víc, kdyby prostě k tomu Slunci doletěli, shodili nálož a zase odletěli). Ale není to nic, co byste při troše dobré vůle nedokázali omluvit. Myslím vzhledem k tomu, že je to zatraceně nejlepší SF za posledních několik let (a nejspíš i na několik následujících).

Takže: pokud čtete SF, nebo jste ji někdy četli, nebo vás prostě zajímá, jestli se jim to Slunce podaří zažehnout nebo ne, jděte na Sunshine. Svým intelektuálským přátelům můžete vždycky znuděným hlasem říct, že chodit na SF filmy je to jediné správně dekadentní povyražení, které si můžete dopřát...

pondělí, dubna 30, 2007

Já jsem to říkal...

Introducing Microsoft Silverlight 1.1 Alpha:

Silverlight 1.1 Alpha includes all the features available in Silverlight 1.0 Beta plus a number of new features focused primarily on improving developer productivity and power:
  • Managed code support
  • Support for dynamic languages including Managed JScript and Python
  • Rich UI control model based on WPF
  • Improved networking stack with support for REST, RSS, JSON, POX
  • Enhanced, 2-way HTML/AJAX Bridge
  • Comprehensive and consistent base class library
  • Support for LINQ (LINQ to Objects, LINQ to XML)
Další informace třeba zde: MIX 07 - Silverlight shines brighter!

[EDIT 2007/05/01] Více informací zde.

sobota, dubna 28, 2007

WT^hPF

Tak. Tímto textem bych chtěl na nějakou dobu uzavřít diskusi o Microsoftu, Apple a podobných věcech.

Když teď nedávno Microsoft přejmenoval WPF/E na Silverlight, a všichni bloggeři se kolem této události začali rojit s tím, jestli Silverlight převálcuje Flash nebo ne, také jsem cítil potřebu se k tomu nějak vyjádřit. Nakonec jsem se rozhodl to neudělat, protože je podle mě na nějaké hodnocení brzo. Jednak Microsoft chystá ještě nějaké šokantní oznámení (bude Silverlight open-source? Tak ta velká novina je platformě nezávislá implementace CLR pro prohlížeče.), jednak mě vývoj webových aplikací tak úplně nezajímá. (Nicméně jsem chtěl poznamenat, že už delší dobu si myslím, že Apollo je ten Next Big Language, o kterém mluví Steve Yegge. Beru zpět. Teď myslím, že myslel JavaFX.)

Nicméně jsem se chtěl otřít o WPF, kterou se teď snažím nějak sestudovat (samozřejmě to jde pomalu, ale snažím se). Takže co je to WPF? Windows Presentation Foundation. (Pokud jde o mě, klidně bych celou tu věc pojmenoval Avalon i oficiálně, ne jen krycím jménem, ale jak známo, pojmenovávání věcí v Microsoftu je sofistikovaný proces, který vyústí v použití slova Microsoft nebo Windows v názvu, ať to zní jakkoliv pitomě -- tedy kromě sady programů Expression, které se, nějakým záhadným způsobem, tomuto jevu vyhnuly.) Pokud jste tenhle pojem ještě neslyšeli, určitě si přečtěte článek Windows Vista: more than just a pretty face, který poskytuje velmi slušný úvod do problematiky.

Takže ještě jednou: co je to WPF? Podívejte, všichni víme, že GDI(+), je zastaralá záležitost, že ji Microsoft držel při životě především proto, že si nechtěl utnout kus trhu s kancelářskými počítači, ve kterých ještě donedávna byly opravdu hloupé integrované grafické čipy, které neuměly nic, než převést kus operační paměti na analogové úrovně na D-SUB konektoru. Ovšem, doba se změnila, a i ten nejhorší integrovaný grafický čip dneska disponuje nějakou tou 2D/3D akcelerací, kterou je velká škoda nevyužít.

Takže se Microsoft rozhodl, že ve Windows Vista, bude 3D akcelerace tak nějak vyžadována, a že na ní bude postaveno celé zobrazování systému. A jelikož perspektivním vývojovým prostředím je .NET, vznikl .NET Framework 3.0 (který by ve skutečnosti spíše měl mít číslo 2.5, ale přeci nelze nový nablýskaný operační systém distribuovat s nějakou polovičatou verzí frameworku), který obsahuje, mimo jiné, WPF.

WPF je především prostředek, jak co nejvíce oddělit uživatelské rozhraní aplikace od výkonného kódu, a to tak, že uživatelské rozhraní bude definováno pomocí XML, respektive jeho "dialektu" XAML, který umožňuje popsat UI do takové hloubky, že pro řadu jednoduchých aplikací opravdu není potřeba psát skoro žádný kód (vážně -- poměrně sofistikovaný textový editor vygenerujete pomocí prvku System.Windows.Controls.RichTextBox a nějaké té bižuterie, s použitím asi 50 řádků kódu, které se starají o uložení a tisk dokumentu).

Kromě onoho zřejmého požadavku na oddělení kódu a uživatelského rozhraní z důvodu znovupoužitelnosti obého, je tu ještě bonusová možnost nechat nějakého grafika pracovat na rozhraní v poměrně sofistikovaném programu Expression Blend bez toho, aby něco věděl o programování (samozřejmě musí něco vědět o aplikaci a její struktuře, ale nemusí být seznámen s její vnitřní mechanikou). Také lze takový popis uživatelského rozhraní v XAML snadno vyměnit za jiný (třeba podle velikosti displeje, zvoleného režimu funkce programu, nebo cílové platformy).

WPF tedy umožňuje rozdělit vývoj logiky programu a jeho prezentační vrsty jak je to jen možné.

Současně s tím ovšem nabízí velmi vypečený způsob jak se zbavit všech těch problémů, které vznikají se stále rostoucím rozlišením displejů (písmenka jsou příliš malá!), nebo potřeby předělávat uživatelské rozhraní pokaždé, když program lokalizujete do nového jazyka, který místo textu o šesti znacích potřebuje znaků dvacet, protože všechny souřadnice jsou relativní a při změně velikosti ovládacího prvku, nebo okna, se umí dobře přizpůsobit novým podmínkám.

Dále je tu hierarchičnost prvků uživatelského rozhraní. Ve WinForms (tedy rozhraní, které používá GDI ve Windows do verze XP bez WPF), jste museli podstoupit bolestivý proces vlastního vykreslování, když jste chtěli do tlačítka dostat obrázek nebo dva řádky textu. S WPF napíšete něco ve smyslu <tlačíko pozadí="obrázek"><popiska text="hlavní"/><popiska text="vedlejší"/></tlačíko> a je to! A samozřejmě můžete definovat co se stane, když nad tlačítkem bude myš, včetně různých animací.

Čili variabilita je o několik řádů dál, než s použitím WinForms a GDI (a to vás nechci zdržovat básněním o tom, že takové tlačítko můžete namapovat na libovolný 3D povrch, takže pak můžete vytvářet skoro stejně sexy uživatelská rozhraní jaká používají Hollywoodské trháky).

Nějaké nevýhody? Ó jistě: použití WPF znamená, že se vaše aplikace na starších počítačích (řekněme starší než tři roky) zpomalí zhruba dvakrát (především na Windows XP je to hodně znát). A dále: dokud nevyjde nové Visual Studio (kódové označení Orcas, v současné době ve stádiu Beta 1), neexistuje nějaký spolehlivý nástroj, ve kterém by se dalo s WPF pracovat. Existují sice nějaká rozšíření Visual Studia 2005, ale věřte mi, pořád bude řešit nějaká neopodstatněná varování, IntelliSense funguje jen částečně a tak dále. Expression Blend už by měl být ve stavu RTM (Release To Market), ale jde o placený nástroj, a věřte, že XAML není myšleno jako jazyk, který budete psát ručně (i když leckdy nic jiného nezbývá).

Sečteno podtrženo: WPF je skvělá věc, která ovšem pro produkční aplikaci bude zajímavá někdy v půlce příštího roku, až budou všechny nástroje připraveny a penetrace Windows Vista dosáhne nějaké smysluplné úrovně.

Kde jsem to začal? Aha, Silverlight (podmnožina WPF) versus Flash. Upřímně: když jsem se tak díval na vývoj jmenných prostorů v .NET frameworku, domnívám se, že v Microsoftu opravdu existuje nějaký grand plan, ve kterém se dříve nebo později objevuje lehkotonážní managed framework pro prohlížeče -- to znamená, že bude notně ořezaný, třeba jako Compact .NET Framework (PDA a smartphones) nebo XNA Framework (XBox 360), ale nebudete muset stahovat 60MB záplat, které vám umožní jej provozovat, který umožní vyvíjet pro prohlížeče v C#, nebo jiném .NET kompatibilním jazyku.

Jak pak bude vypadat sronání Flash/Apollo a Silverlight/.NET? Který z těchto balíků zvítězí? Myslím si, že ten, který bude nabízet více zajímavých aplikací. Pokud Google začně vyvíjet v Appolo (což by se náramě hodilo třeba pro GMail, který by mohl stažené e-maily skladovat lokálně a odesílat odpovědi až se obnoví připojení k Internetu) a bude Flash aplikace tlačit svým zákazníkům, bude pozice Microsoftu jistě mnohem horší. Pokud se něco zlomí v Microsoftu a začne vyvíjet věci dost zajímavé na to, aby uživatelé počkali těch několik sekund než se stáhne pár mega Silverlight (nebo jej budou distribuovat jako doporučenou aktualizaci Windows), není výsledek vůbec jistý.

V každém případě bude pár následujích měsíců zajímavých. Uvidíme, jestli strategie vnucování se na obsazený trh skrze Windows Microsoftu tentokrát vyjde nebo ne.

Pokud ne, má pravdu Paul Graham, a Microsoft už je opravdu mimo mísu, ať má finanční výsledky jekékoliv.

PS: A ještě bych si dovolil doporučit vaší pozornosti starší podcast s Robertem Scoblem, který přináší mnoho zajímavých poznámek k tomu, jak funguje Microsoft uvnitř.

PPS: Ta věc s grafickými kartami mi připoměla, proč je dobré mít managed framework běžící na virtuálním stroji. Představte si, že Microsoft portuje CLR (Common Language Runtime, tedy virtuální stroj, na kterém běží .NET aplikace) na grafické procesory, takže aplikace mohou běžet paralelně nejen na hlavním procesoru (procesorech) vašeho počítače, ale i, na jinak zahálejícím, GPU...

pátek, dubna 27, 2007

Kakao

Před časem jsem tu hovořil o společnosti Apple. Jelikož jsem tehdy neměl čas udělat si domácí úkoly pořádně, a ověřit si co by bylo záhodno ověřit, snažil jsem tyhle resty dohnat a podívat se především na Cocoa a Objective-C, abych tak trochu věděl jak vlastně vypadají.

Takže po krátkém zkoumání musím uznat, že Cocoa je opravdu pěkně navržená. Je to objektově orientovaný framework se vším všudy, vypadá docela konzistentně a když si na něj člověk zvykne a trochu ho sestuduje, určitě se v něm dobře pracuje (což je nakonec vlastnost všech slušně navržených frameworků). Oproti tomu Objective-C není úplně můj šálek čaje, a i když všechny ty věci se zprávami okoukané ze Smalltalku vypadají docela rozumně, není to syntaxe, která by mě nějak oslovila. Sympatické je, že do definic uživatelského rozhraní se nedá psát kód (jak je dobrým zvykem všech programátorů ve Visual Basicu), ale jen se připojují objekty, do kterých se pak nasměrují příslušné zprávy (jako že uživatel někam kliknul myší a tak podobně). A pokud tomu dobře rozumím, tak k Mac OS X se dodává zdarma vývojové prostředí Xcode, která rovněž vypadá (pro člověka odkojeného Visual Studiem) zajímavě.

Prostě se zdá, že vývoj pro Mac OS X je docela příjemná záležitost.

Přemýšlel jsem: proč vlastně Microsoftu trvalo tak dlouho, dát dohromady slušný vývojový rámec (myslím .NET), když na Macu existuje (sice ne managed, ale objektový) takový rámec už drahně let? Ano, tušíte správně, jde o to, že zatímco Microsoft se koncem osmdesátých a začátkem devadesátých let bahnil na platformě PC, Jobs, odejitý z Apple, založil firmu na luxusní pracovní stanice NeXT, ve které si mohl dovolit navrhnout takový počítač, že vedle něj tehdejší PC vypadaly jako chudý příbuzný.

Dalším problémem je zpětná kompatibilita. Microsoft je jí posedlý, a je fakt, že když jedno procento zákazníků, kterým přestane něco fungovat proto, že jste porušili kompatibilitu s předchozí verzí, je nějakých 10 miliónů lidí, tak není snadné něco měnit. Poučné jsou v tomto ohledu texty Raymonda Chena (ano, to je ten, nad jehož příspěvkem o [ne]kompatibilitě SMB jsme tu před časem diskutovali), který se snaží vysvětlit, že někdy se chyba změní ve vlastnost, protože programátoři jsou čuňata, a chybu nelze opravit, protože na ní spoléhá příliš mnoho lidí.

Dobrá, to vysvětluje, proč je Win32 API takové jaké je (14000, slovy čtrnáct tisíc funkcí), ale nevysvětluje to, proč MFC (Microsoft Foundation Classes, tedy, vulgárně řečeno, objektový obal kolem Win32 API) musely být, ve srovnání s Cocoa, takový hnus. Asi by se daly najít nějaké argumenty ohledně výkonu, dědictví operačního systému založeného na zprávách, a tak dále, ale opravdu neznám nikoho, kdo by si pochvaloval jak dobře je to MFC vymyšleno, a jak dobře se v něm pracuje (tedy kromě třídy CString, ta se docela povedla).

Nicméně. Nicméně jsem chtěl říct, že další zajímavé materiály ke studiu lze nalézt na CocoaLab, nebo na stránce věnované historii Apple Orchard (to je opravdu zajímavé čtení -- jakkoliv nevím na kolik validní; třeba texty o Pixaru a NeXTu jsou vážně poučné).

Tak pěkné čtení...

pondělí, dubna 09, 2007

Ikonoklasmus

Chcete vidět, jak se může člověk pár odstavci totálně ztrapnit? (Sarkastické poznámky akceptovány, pojďme dál.) Přečtěte si nový text Paula Grahama Microsoft is Dead.

Víte, Paula Grahama jsem bral vždycky trochu s rezervou, protože trpí mnoha utkvělými představami, ve kterých ho jeho ideoví následovníci utvrzují. Třeba jeho fanatické zaujetí Lispem, nebo úsměvné hledání paralel mezi malíři a programátory, či skutečnost, že se domnívá, že jediný možný způsob jak založit úspěšný start-up je ten, který použil on sám. Nicméně právě v oblasti start-upů a rizikových investorů jsem si vždycky říkal, že a) to dokázal, že stvořil společnost, kterou pak úspěšně prodal Yahoo (které údajně následně celý ViaWeb přeprogramovalo z Lispu do C++, aby se v tom orientoval i někdo jiný, než Paul Graham), b) sám se podílí na společnosti pěstující start-upy Y Combinator. Paul Graham na toto téma napsal před několika lety jednu esej, kterou od té doby recykluje stále dokola, ale jelikož umí psát a protože do jednotlivých iterací vkládá různé poučné anekdoty, dá se to vcelku číst (i když nad posledními třemi čtyřmi texty jsem se už opravdu docela nudil).

Proto jsem ani nechtěl věřit tomu, co jsem včera četl. Toto je Graham? Tenhle blábol napsal ten Paul Graham? Možná, říkal jsem si, že jsem to špatně pochopil. Možná je to nějaký druh absurdního humoru, který je příliš sofistikovaný na to, abych mu rozuměl. I nelenil jsem a přečetl si nějaké reakce, abych se ujistil, že nejsem sám, kdo nemůže uvěřit tomu, že se Graham totálně pomátl. Bohužel, je to tak.

Víte, nemyslím si, že jsem Grahamův článek špatně pochopil. Rozumím tomu, co chce říct. MSFT je pořád obří firma s tučnými konty a ročními příjmy většími, než je státní rozpočet leckteré země. Jde o to, že v očích geeků, podle Grahama, ztratil MSFT drive, že už to není žádná hrozba, protože neinovuje a jen udržuje to, co před lety vytvořil. Naopak velká hrozba je pro lidi, kteří chtějí založit start-up, Google, s jeho přefouknutými akciemi a jediným produktem, kterým je textová reklama (proti všeobecnému přesvědčení totiž není Google firma na vyhledávání, ale mimořádně šikovná reklamní agentura).

Dobrá, řeknete si. Sice si Graham sám odporuje, protože posledních deset esejí tvrdil, že se Podnikatelé2.0BETA nemají bát velkých firem, ale jiných startupů, a teď je najednou překvapený, že velké firmy nejsou pro start-upy konkurencí. Sice hned zkraje tvrdí, že MSFT vůbec nesleduje, ale to nevadí, i kdyby ho sledoval, stejně by nedělali nic inovativního. (To mi trochu připomíná admirála Nelsona, a jeho legendární výrok "Nevidím žádné signály", jen s tím rozdílem, že on si dalekohled k slepému oku přiložil schválně.)

Tohle všechno je součástí Grahamovy lehce demagogické strategie, jak přihřát polívčičku svým start-upům, které jsou všechny orientovány na web (přesněji Web2.0, tedy nic, čeho bychom se u nás v Česku museli obávat), a dá se to akceptovat jako účelem posvěcené prostředky konkurenčního boje.

Pak ovšem příjde opravdová bomba: Apple a Linux totálně rozdrtily MSFT na desktopu a nikdo už si jejich produkty nekupuje, protože na přednáškách pro wannabe start-upéry těsně po pubertě, které Y Combinator především podporuje, mají všichni notebooky Apple.

Znova si vychutnejte brilantnost té argumentace. Graham tvrdí, že protože vývojáři, které jeho společnost podporuje, a kteří vyvíjejí software nezávislý na operačním systému, používají notebooky Apple, je s Microsoftem ámen! Uh, Uh.

No, myslím, že to stačilo. Teď vážně.

Především je fakt, že se MSFT za poslední léta změnil. Celá ta věc s weblogy a Channel 9 umožnila nahlédnout lidem dovnitř firmy, a zjistit, že tam nesedí žádní princové temnot a neoddávají se nesvatým rituálům s cílem co nejvíce mučit uživatele. S tím, jak přišlo poznání, že velký nepřítel se vlastně sám plácá v problémech s vnitřní komunikací a určením strategie, se iluze velkého zlého Microsoftu rozplynula, a firma opravdu přestala být hrozbou v tom smyslu, v jakém jí byla v devadesátých letech.

Na druhou stranu se také ukázalo, kolik zajímavých věcí se uvnitř MSFT děje, kolik mimořádně chytrých a talentovaných lidí tam dělá věci, které nikdo jiný nedělá, a že bláboly o tom, že MSFT nic nevyvíjí, ale jen kopíruje, jsou opravdu debilní (nelze to říct mírněji, protože tuhle hovadinu čtu od lidí, kteří ani nevědědí, že nevědí, skoro každý den).

A na světlo také vyšlo to, že hlavním problémem Microsoftu je jeho vlastní úspěch. Jako každá velká firma, se MSFT nejvíce bojí jedné věci, a tou je kanibalizace. Lidé uvnitř firmy se bojí toho, že by jiní lidé uvnitř firmy mohli být úspěšnější, a tudíž je vyhodit ze sedla, mnohem víc, než se bojí libovolné konkurence (navíc skoro žádnou konkurenci nemají). Proto, pokud jde o uvádění novinek na trh, je MSFT neuvěřitelně konzervativní. Raději třikrát prodlouží vývoj Windows Vista (uh, neodpustím si jeden přípodotek k dotazu, který jsem kdesi četl: ano, Windows Vista jsou složitejší než libovolný procesor na trhu, a je velký úspěch MSFT, že si to drtivá většina uživatelů neuvědomuje), než aby zkusili vyrobit lehký operační systém za pár dolarů, na kterém by šel spustit prohlížeč, provozovat bittorrent a vytisknout stránka, a který by dláždil cestu k tomu, co je nejspíš nevyhnutelné: totiž že většina lidí si za pár let na PC vystačí s webovými aplikacemi.

(Rozdíl mezi Microsoftem a Googlem je v tomto směru diametrální. MSFT je společnost vyrábějící software, zatímco Google prodává reklamní plochy. Proto dokud Google bude živ z reklamy, cokoliv úspěšného, co umožní vnutit lidem další reklamu, bude dobré pro všechny v Googlu. Navíc je systém vývoje v Googlu nastaven tak, že se lidé nebojí o své pozice, a tudíž netrpí onou řevnivostí, která panuje v MSFT.)

Takže ano, v tomto směru má Graham pravdu: MSFT přestal být vnímán jako hrozba, protože změnil své chování a otevřel se světu. Na druhou stranu se mýlí v tom, že MSFT hrozbou být přestal, protože a) desktop je mrtev, b) MSFT už stejně nikdy neuvede nic zajímavého.

Tyhle řeči o tom, že desktop je de facto mrtvá záležitost pocházejí většinou od lidí, kteří s počítači neprovozují nic, než sociálně komunitní onanii. Ach, neřekl jsem před dvěma odstavci, že většina lidí za pár let vystačí s webovými aplikacemi? Ano, řekl. Myslel jsem tím: většina lidí mimo korporátní sféru, většina lidí, kteří na počítači nepracují, ale baví se.

Protože ať se to Paulu Grahamovi líbí nebo ne, ve firemní sféře bude desktop vládnout ještě spoustu let. Pořád totiž existují aplikace, které vyždímají libovolnou pracovní stanici do poslední mrtě, pořád existují data, která je lepší zpracovávat v Excelu, pořád existují úlohy, které přes browser prostě řešit nejde, a vždycky (nejen v zaměstnání) je fajn, moci ke svým datům přistupovat i když zrovna nejste připojeni k Internetu (třeba v letadle, že). Ano, jistě, domácí počítače asi tlusté operační systémy a velké aplikační balíky opustí (a hry se budou hrát na konzolích), ale ve firemní sféře tohle ještě dlouho platit nebude.

Ale...

K čertu.

Ten mizera.

Znovu se zeptejme: je MSFT hrozba pro start-upéry? Zdánlivě ano, protože když vyvíjíte nějakou novou skvělou aplikaci, pak MSFT jistě má potenciál uvést vlastní verzi 1.0 dříve, než se posunete k druhé betě. Ale ve skutečnosti jediné riziko které hrozí, je, že se MSFT pokusí vás koupit a zahlušit dřív, než produkt dokončíte. Protože paranoidní strach, že by taková skvělá aplikace mohla snížit prodeje Office nebo Windows, zablokuje vývoj čehokoliv v MSFT na několik let, během kterých se bude rozhodovat, zda ano nebo ne.

Oproti tomu ti, co chtějí dělat něco, co je velmi Web-dva-nulózní, by se opravdu měli bát Googlu, protože cokoliv co vypadá, že to přiláká lidi, kterým bude možné servírovat reklamu, Google okamžitě vyvine a uvede. Že většina takových projektů nemá úspěch není podstatné: důležité je, že se Google drží v médiích (známkou jejich mistrovství je, že dokáží, s prominutím, udělat z prdu kuličku i bez Steva Jobse), a až se jednou trefí s něčím jiným než je vyhledávání, zchladí si žáhu za všechny neúspěšné projekty.

Takže: Nemá nakonec ten Graham pravdu? Není opravdu Microsoft, ten surový dravý Microsoft, který bezskrupulózně používá nordické lsti, aby byl na trhu s produkty první (OS/2 vs Windows NT, OpenGL vs Direct3D, atd.), který jsme znali, mrtev? Je vůbec šance, že by se něco změnilo, něco, co by umožnilo všem těm úžasným lidem, které MSFT zaměstnává realizovat svůj talent a převálcovat svět novinkami, na kterých pracují?

Graham říká, že MSFT by měl skoupit všechny start-upy, které lze koupit, nastěhovat jejich zakladatele do jedné budovy, odizolovat je od Redmondu jak jen to jde a nechat je, ať ukáží co umí. Je to opravdu tak absurdní, jak to vypadá? Kupodivu není. Nejde totiž o kvalitní vývojáře a výzkumníky. Ty nejlepší už MSFT stejně má. Jde o všechny ty mladé vlčáky, kteří chtějí něco dokázat, něco změnit, něco vytvořit.

Opravdu, jediným řešením pro MSFT se zdá být začít znova. Začít znova s uváděním novinek, a ne staráním se o to, zda jejich vypuštění neovlivní prodej stávajících produktů. Je ale něco takového možné?

Paul Graham, ten totálně šílený Paul Graham, který si myslí, že to, že vývojáři, kterým MSFT vždy tak podkuřoval, začali kupovat notebooky Apple, dokazuje, že MSFT prohrál bitvu o desktop, tak tenhle Paul Graham si myslí, že ne.

Co si myslím já? Po tom, co jsem vlastní argumentací dokázal to, co jsem měl v úmyslu vyvrátit, nevím co si mám myslet. Jistě, MSFT tu s námi bude ještě dlouho. Určitě není potřeba panikařit a hned zítra se přeškolit na Cocoa a Objective-C (samozřejmě pokud jste, stejně jako já, trapky, které vyvíjejí pro desktop). Ale, upřímně řečeno, jak já to vidím, éra Microsoftu asi opravdu končí.

Zatraceně.