Wedos

čtvrtek 23. února 2012

Desatero dobrého programu

Dlouho jsem uvažoval sepsat něco jako programátorské desatero nebo něco. Vycházející primárně z konfliktu Programátor/designer/analytik Vs. Uživatel/účetní/uklízečka.

Důležité je podotknout, že programátor a programování nemá nic společného s černou magií jak si často uživatel myslí. Stále častěji se setkávám s faktem, že programátor ani nezná základní principy fungování počítačů. Natož třeba binární soustavu.

Nepochopení z obou stran je pak v důsledku tragédií.

Programátor je stejně jako další tvořivý lidé, někdo dělající z ničeho něco. To nic je různě hmotné. U programování málo, stejně jako u skládání hudby nebo třeba psaní knih. Naopak například řezbář nebo zámečník to mají často mnohem hmotnější. Každopádně není mezi nimi v rámci tvorby velký rozdíl. Výsledkem snažení je obyčejně něco zcela jiného než bylo na začátku.

Tenhle úvod jsem si nemohl odpustit. To hlavně proto, aby některým "programátorům" prdla žilka v hlavě už teď a ne až na konci.

1. Jednoduchost
Vždy se snažit dělat věci jednoduché. Co je jednoduché je většinou i nejfunkčnější. Příkladem budiž smeták. Smeták který bude mít chlupatý konec dvakrát bude na nic. Pokud bude mít uprostřed duralové madlo, taky se to zrovna nebude zdát lepší.

2. Přehlednost
Přehlednost jde ruku v ruce s jednoduchostí. Často se dozvídám, že nějaký model je lepší než jiný protože je přehledný. Blbost! Něco je přehledné protože to tak uděláte ne proto jak to uděláte.
Hromada kamení bude nepřehledná hromada ať použijete bagr nebo ruce.

3. Rychlost
Nesnažte se dělat víc než je třeba. Pokud má vaše aplikace sčítat. Nesnažte se jí učit mocniny. Sčítání to neurychlí. Aplikace se zpomalí.

4. Nemyslete za uživatel
Nejčastější pakárnou je, když aplikace ví lépe než vy co jste chtěli udělat. Prostě kliknu a udělá to to co avizuje. Nic nezmodrá, nic nezežloutne. Prostě se to chová předvidatelně. A nemyslí to za mě.
Windows si už roky myslí, že jsem nesvéprávný idiot. Když přede mnou skrývají, volby které potřebuji. Výsledkem je frustrace a naštvanost.

5. Ptejte se uživatelů
Ptejte se jich. Oni nejlíp vědí jak co vyhovuje. Analytik si to může myslet. Uživatel to ví!

6. Nebuďte líní předvídat lidskou vynalézavost
Lidé často dojdou k funkci nebo funkcionalitě jinou cestou než vy. Naučte se s tím počítat. Buď zataraste cestu tak aby to nešlo a nebo tedy počítejte s jiným postupem než je ten váš.

7. Chybovat je lidské
Kdo nedělá chyby není člověk a není ani Bůh. Protože ten chyby zjevně dělá taky (jestli mi nevěříte tak mi vysvětlete kde se vzalo tolik církví). Přiznat si chybu je správný krok. Přiznat jí a opravit jsou dva. Na fotce vypadají dobře liché počty v realitě se věci lépe tvoří v párech. Takže hezky udělat kroky dva.

8. Nemyslete si, že jste chytřejší než uživatel
Nejste. Rozhodně ne chytřejší než všichni. To, že se Vám zdá uživatel jako blbec je proto, že vy jste to udělali složité.

9. Učit se! Učit se! Učit se!
Vždycky je co a vždycky je kdy.

10. Pravidlo tří úspěchů
Funguje to! Děláto co jsem chtěl! Děláto co chtěl uživatel! Pokud ne, čtěte znovu!

úterý 21. února 2012

Jak funguje Ubuntu for Android?

Jako rána z čistého nebe se všude začalo hovořit o Ubuntu for Android (tedy Ubuntu pro Android). Všichni si říkají, jaký je to super nápad a jak to je vlastně udělané.
Samotný princip není nijak složitý. Dokonce se divím, že tohle řešení zatím napadlo asi jen dva výrobce a ani jeden z nich to nedokázal rozumně prodat (asi proto, že oba jsou výrobci HW a nikoliv SW).

Jak to tedy funguje.
V první řadě je třeba si uvědomit, že samotný název trošku klame.
Ubuntu for Android by se spíš mělo jmenovat Ubuntu with Android (Ubuntu s Androidem). Proč? I na to se dozvíte odpověď.

Celé kouzlo je v tom že Android je prakticky Linuxový Kernel (2.6 něco). Zkompilovaný je pro ARM procesor, ale může být zkompilován i pro X86 nebo třeba MIPS.
Tenhle Kernel je zcela plnohodnotné jádro systému. Pokud v Androidu něco spustíte, spustí se prakticky jen JAVA Virtuál Machine (Dalvik) a ten spustí aplikaci. A to včetně Luncheru a dalších systémových vymožeností.
Z toho plyne několik základních vlastností, jako třeba, že bez rootu není pro Android nebezpečí virů. Vypadá to asi takto.
Android bez Ubuntu
Dalvikovské instance samozřejmě mohou sahat na kartu a do DB s adresářem atd. Na stejné úrovní běží notifikace a všechno si to skrze jádro a paměť předává informace. Jak prosté řeknete si. Mimochodem díky tomuto modernímu návrhu, není problém aby Android běžel třeba na deseti jádrech a dokázal je využít. Stačí překompilovat Kernel s podporou více jader. Zpět k Ubuntu.

Canonical to vyřešil skutečně vtipně.
Prostě do Linuxu kde běží řada Dalviků, přiinstaloval jedno Ubuntu. Ubuntu s aplikacemi, vlastním prostředím a několika málo doplňky. To vše pro to aby byla integrace prakticky dokonalá. Po instalaci to totiž vypadá asi takhle.
Android s Ubuntu
Správně tam, kde běží Dalvik, běží prakticky celé Ubuntu.
Důsledek je jasný. Pro instalaci je třeba mít root práva. To je ale vše. Canonical dodal několik aplikací, které propojují Android, a Ubuntu a to v obou směrech. Tak aby zůstala jasně patrná návaznost.
S celou touhle nádherou potom oslovil operátory a výrobce telefonů. Počítám, že se mu podaří je dotlačit alespoň ke zkoušce. Za sebe jsem potěšen.
Microsoftu v tuhle chvíli nejen, že ujel vlak. Ale někdo mu právě rozebral nádraží, schoval koleje, sebral mapu s cestou na tohle nádraží a otočil ho zády.
Zatímco MS ukazuje, jak udělá METRO do Windows 8, Canonical ukázal, že máte desktop v telefonu (nebo tabletu). A to ne v nějaké ukázkovém provedení, ale v systému, který má za sebou tisíce aplikací a funguje!

Ještě doplním minimální požadavky pro Ubuntu: "Dvoujádrový procesor, alespoň 1Ghz, 2 Gb místa pro instalaci. 512 Mb ram, USB HOST a HDMI."