Bugfixy jako terapie

It's also very concrete improvement. When you're spinning your wheels, you're by definition not going anywhere. But if you've closed a few bugs, you can very clearly see improvement: I've fixed bugs! Something that was broken is now fixed and in production! The users are happier! It drives motivation.

Občas je potřeba si oddychnout od dodávání nové funkcionality, zastavit se a ujmout se opravy bugů.

Statická analýza v PHP

Slidy z mé přednášky na Čtvrtkonu v Českých Budějovicích.

Pokud jste někdy programovali ve staticky typovaných jazycích jako je C# nebo Java, určitě vám v PHP schází hledání chyb napříč zdrojovými kódy celé aplikace. Staticky typované jazyky ví přesný typ každé proměnné a dokážou tak nacházet zjevné chyby jako zmínky o neexistujících třídách, volání metod s nesprávnými počty a typy parametrů, přístup k nedefinovaným atributům apod. Takový kód vám vůbec nedovolí zkompilovat.

Strašák jménem TDD

Jason Gorman o TDD:

Most developers and teams who report a loss of productivity when they try TDD are actually reporting the learning curve. Which can be steep.

Pokud ještě teď, v roce 2013, potřebujete někoho přesvědčit o výhodách psaní unit testů, odkažte ho na tento článek.

Veřejná beta Instacast for Mac

Instacast je můj oblíbený klient pro poslech podcastů na iOS. Verze 3, která vyšla v prosinci, přinesla spolehlivou synchronizaci nepřehraných epizod a aktuální pozice při poslechu.

Jelikož zatím nebyla k dispozici verze pro Mac, byl jsem doma odkázaný k poslechu podcastů z iPhonu položeného na stole. (A nebyl jsem v tom sám.)

Betaverze pro Mac již měsíc testuji a používám k plné spokojenosti. Dnes vyšla první veřejná beta, stahujte.

URL adresy jsou pro lidi, ne pro počítače

Andreas Bonini rozebírá, jak by měla vypadat ideální URL:

We are all familiar with URLs: the string uniquely identifying the requested document. However, we don’t always consider they are more than that: URLs are user facing and should be considered important UI elements.

Školení Doctrine 2 ORM

S Vaškem Purchartem, mým kolegou a autorem oblíbeného článku Architektura aplikací nad Doctrine 2, jsme připravili nové školení, na kterém vás naučíme efektivně pracovat s tímto frameworkem.

Doctrine 2, jejíž tvůrci vycházejí ze standardu JPA ze světa Javy, vám umožní pracovat v aplikaci s daty uloženými v databázi jako s plnohodnotnými objekty. Díky tomu se vám bude snadněji udržovat jejich konzistence a při dodržení best practices, se kterými vás seznámíme, klesne chybovost vašeho kódu a bude snadněji testovatelný.

Pokud nejste spokojení s tím, jak ve vašich aplikacích pracujete s databází, určitě přijďte. První termín je již 26. dubna.

Facebook Home

Nejsem cílovka, ale tahle produktová stránka je udělaná výborně. Proscrollujte si jí.

Dívejte se na svůj produkt očima uživatele

Kyle Baxter o uvedení prvního iPhonu:

They could have presented it as a technological marvel, a device that combines a high-resolution multitouch screen, fast mobile processor, cell and WiFi radios, and proximity, ambient light and accelerometer sensors into a handheld device with desktop-breed software and surprisingly-good battery life, a PC in your pocket. But they didn’t; rather, they presented it in terms of what it did for users and what they would find useful about it.

Co čekám od iOS 7

Nedávno jsem si uvědomil, že na mobilních zařízeních trávím více času, než u počítače. Díky přenositelnosti a výdrži baterie je to pro mě lepší volba navzdory zjednodušenému operačnímu systému a dotykové klávesnici.

Novou verzi iOS tak očekávám s větším zájmem, než Mac OS X. Současná šestá verze oproti svému předchůdci nepřinesla moc nového, předpokládám tedy, že Apple už druhým rokem pracuje na zásadnějším updatu.

iCloud

V posledních dnech vyšlo několik ne zrovna pochvalných článků o iCloudu. Pod tuto značku patří více různých služeb – e-mailová schránka, kalendář a úložiště kontaktů, ale především API pro aplikace třetích stran. Právě s ním jsou největší problémy a vývojáři se uchylují k jiným službám (např. Simperium) nebo k vlastní infrastruktuře (např. Things nebo Instacast).

Pokud byste se dnes rozhodli použít pro svoji aplikaci iCloud, musíte si vybrat jedno ze tří úložišť pro svá data. Jednoduché key-value, kam lze uložit maximálně 1000 hodnot, souborové a databázové (CoreData). Nejvíce problémů je s CoreData, které je ale zároveň nejlákavější. Slibuje totiž synchronizaci vzájemně provázaných datových struktur, což je velká výzva samo o sobě. Kromě principiálních problémů s tímto složitým úkolem ale API někdy nefunguje ani na té nejzákladnější úrovni a vývojáři se těžko mohou dopídit, v čem je chyba.

Apple tohle musí vyřešit. Ať už tím, že opraví stávající implementaci CoreData, nebo že vytvoří čtvrté API s podobnou funkcionalitou, ale s úmyslem cloudové synchronizace už od začátku. CoreData totiž měli vývojáři k dispozici už před iCloudem jako běžné databázové úložiště a tato funkcionalita do něj byla jen doplněná.

Pokud odhlédneme od toho, že synchronizace dat prostě nefunguje, iCloud čelí dalším problémům. Souborový systém na iOS z pohledu uživatele tvoří aplikační kontejnery. Každá nainstalovaná aplikace má tak k dispozici svůj adresář a mimo něj číst nemůže. Stejně funguje i dokumentové úložiště iCloudu. Pokud uložím prezentaci v Keynote do iCloudu, na iPadu ji otevřu zase v Keynote. Pokud si ale soubor uložím v aplikaci, která na druhém zařízení nemá protějšek od stejného vývojáře, ten soubor prostě nenajdu. PDF si přes iCloud nepošlu, protože ho na Macu můžu uložit jedině v aplikaci Preview a ta na iOS neexistuje. Musím se uchýlit k Dropboxu nebo e-mailu. Tohle taky není jednoduchý oříšek k vyřešení, protože Apple se úmyslu postavit zeď mezi uživatele a filesystém nevzdá.

K datům v iCloudu lze přistupovat pouze v nativních aplikacích pro iOS a Mac OS X. Pokud vývojář chce udělat třeba i variantu pro web nebo pro Windows, musí si také vyvinout vlastní synchronizaci. To, že Apple podporuje pouze svojí platformu, se dá pochopit, ale aplikuje tu dvojí metr – k e-mailu, kalendáři a kontaktům se dostanete i ve webovém prohlížeči na icloud.com.

Pokud má aplikace podporovat spolupráci více uživatelů, musí také mít vlastní server. iCloud slouží jen jako úložiště dat jednoho uživatele. V současnosti podporuje jen omezené případy užití a jakmile chce aplikace dělat něco sofistikovanějšího, nemůže k tomu iCloud využít.

Apple musí tyto technologické a principiální nedostatky vyřešit. Protože jinak hrozí, že ho ostatní předeženou i v tom, v čem zatím vede a žádná konkurenční výhoda mu nezbyde.

Meziaplikační komunikace

S podobou filesystému a aplikačními kontejnery souvisí i podoba meziaplikační komunikace. Ta je na iOS velmi omezená.

Aplikace se mohou zaregistrovat pro otevírání určitých typů souborů. PDF, které načtu v Safari, tak mohu otevřít v iBooks nebo v Dropboxu. V tu chvíli se tento soubor nakopíruje do kontejneru iBooks. Změny, které v souborech provádím, se tedy neprojevují do jeho dalších instancí v jiných aplikacích.

Další možnost výměny dat jsou tzv. URL schemes. Každá aplikace si do systému může zaregistrovat svůj protokol (např. googlechrome://) a ostatní aplikace ji přes něj mohou mohou spouštět. Podmínkou tedy je, aby vývojáři věděli o ostatních konkrétních aplikacích a jejich podporu implementovali.

Mimochodem to znamená, že každá aplikace si musí sama implementovat posílání odkazů do „read it later“ služeb a pokud pominu integrovaný Twitter a Facebook v iOS 6, tak i podporu pro sdílení na sociální sítě.

Naštěstí se v tomto ohledu blýská na lepší časy. Ole Begemann při šťourání do vnitřností systému objevil mechanismus tzv. remote view controllers, který Apple začal využívat např. pro okno odesílání e-mailu. Aplikace Mail tímto způsobem nabízí použít část sebe uvnitř jiné aplikace a po splnění úkolu opět odejít na pozadí. V budoucnu by se právě tohle mohlo stát základem důmyslnějšího sdílení dat mezi aplikacemi, které uživatelé ostatních operačních systémů znají jako intents (Android) nebo contracts (Windows Phone).

Jony Ive

Po vyhození Scotta Forstalla na konci října došlo k rošádě na nejvyšších pozicích firmy. Jony Ive převzal softwarový design a všichni si od toho slibují novou podobu uživatelského rozhraní iOS. Konec kožených kalendářů a linkovaných poznámkových bloků!

Těžko říct, kolik razantních změn se za těch pár měsíců dá stihnout a vzhlížel bych pro jistotu až k iOS 8, ale první vlaštovka už dorazila. Na konci března dorazil update aplikace Podcasts, který odstranil efektní, ale naprosto zbytečnou pohyblivou magnetickou pásku.

Čeho se v iOS 7 skutečně dočkáme a jak bude vypadat se dozvíme nejspíše v červnu na tradiční konferenci WWDC 2013.