Postavili jsme maskota, který vám pár minut před schůzkou přeletí přes obrazovku. Dáváme ho zdarma i se zdrojovým kódem.
Postavili jsme maskota, který vám pár minut před schůzkou přeletí přes obrazovku. Dáváme ho zdarma i se zdrojovým kódem. Tenhle díl je o tom, co všechno se muselo udělat mezi „funguje mi to" a „můžu to dát cizím lidem do počítače".

Než začnu, jedna věc dopředu. AI a vibecoding máme rádi doopravdy, ne jako marketingovou frázi. Pracujeme s AI denně, dělá nám sedmdesát až osmdesát procent práce. Za sebou máme tisíce a tisíce hodin napříč modely, spoustu slepých cest a miliony korun jen za testování, zkoušení, pokusy a omyly. Platili jsme je my, aby je nemuseli platit naši klienti.
Tenhle článek proto není o tom, že vibecoding je špatný nápad. Je přesně naopak. Ukazujeme ho veřejně proto, že chceme, aby bylo vidět, co všechno se za jednu jednoduchou appku schová. Ta rychlost je skutečná výhoda, ne iluze. Jen s sebou nese odpovědnost, o které se v nadšení málokdy mluví.

Pro tuhle ukázku jsme si záměrně vybrali software, appku, která se instaluje do vašeho počítače. Ne web, ne webovou appku. Ukázky AI zázraků, které vídáte na sítích, jsou skoro vždycky weby. Je to nejvděčnější disciplína na předvádění, protože když demo web nefunguje, uživateli se nic nerozbije, prostě zavře záložku. Software v cizím počítači je jiná liga.

Píšu o tom i proto, že jsem si za ty roky spálil prsty víckrát, než bych chtěl počítat. V sedmnácti jsem měl nápad na osobní projekt. Na doporučení jsem si najal vývojovou firmu a designéra. Slibovali, nedodávali. Skončilo to čtvrt milionu korun v minusu. Byly to všechny peníze, co jsem si šetřil od dětství. Hotová byla jen třetina toho, co slíbili. A právě proto v tomhle článku ukazuju neviditelnou práci tak otevřeně.

Nejdřív ta appka
Notifikace na macOS je zdvořilá, decentní a dokonale přehlédnutelná. Bublina vyjede v rohu, po pár vteřinách zmizí a vy zjistíte, že vás na hovoru čekali dvanáct minut.
Ptáček řeší přesně tohle. Pár minut před schůzkou vám přes obrazovku přeletí maskot s názvem schůzky. Přes všechna okna, i přes prezentaci na celou obrazovku. Za pár vteřin sám zmizí.

Appka byla hotová za půl dne. Zbytek dvou dní patřil bezpečnosti
Funkční verze, tedy maskot, kalendář, plánovač a nastavení, byla hotová za půl dne. Kdybych appku tehdy hodil na internet, vypadala by navenek úplně stejně jako dnes. Jenže než mohla jít ven, musela projít kontrolou druhé, nezávislé AI, jejímž jediným úkolem bylo hledat díry v tom, co první model postavil. A nad oběma modely byla ještě ruční kontrola, protože poslední slovo má člověk. Ta kontrola a opravy zabraly den a půl.

Zdědili jsme cizí kanál na aktualizace
Appku jsme nestavěli od nuly, vyšli jsme z otevřeného projektu. Ten měl v sobě automatické aktualizace mířící na repozitář cizího autora. Kdyby to tam zůstalo, znamenalo by to, že si naši uživatelé můžou jednoho dne stáhnout kód, který jsme nikdy neviděli. Tohle je přesně ten typ věci, kterou AI při generování kódu nezmíní, protože ji o to nikdo nepožádal.

Název schůzky je nedůvěryhodný vstup
Zní to absurdně: proč by měl být nebezpečný název vlastní schůzky? Protože do kalendáře vám může někdo poslat pozvánku a název si napíše sám. Takže se název nikdy nevkládá do stránky jako kód, jen jako text.

Adresa kalendáře je heslo
Ta adresa je fakticky klíč: kdo ji má, vidí, kdy máte schůzky. Proto neleží v konfiguračním souboru, ale v systémové Klíčence, tedy tam, kde má Mac vaše hesla. A nikdy se nepíše do logu.

A pak sto malých věcí
Co dělat, když se schůzka zruší minutu před přeletem. Co když ji někdo posune. Co když se počítač probudí ze spánku a čeká v něm pět zmeškaných upozornění naráz.
Nic z toho není zajímavé. Všechno z toho uživatel pozná, když to neuděláte.
Práce, kterou není vidět
Diakritika v názvu rozbila podpis aplikace. Protože se soubor jmenoval Ptáček, systémový nástroj na podepisování zapečetil hlavní program jako přílohu a podpis přestal platit.

macOS umí appku spustit z dočasného místa. Appka vypadá, že funguje, ale nezapamatuje si nastavení ani povolení kalendáře.
Přetažení do koše po sobě nechává nepořádek. Nastavení, spouštění po přihlášení, adresa v Klíčence. Takže je v nastavení tlačítko Odinstalace, které to uklidí. Je to jediná věc v celé appce, která něco maže, tak má vlastní testy na to, že nesmaže nic jiného.

Ticho místo chyby
Appka vyšla, testy byly zelené, podpis platil. Vypadalo to hotovo. Pak appku začal používat první skutečný uživatel a během jedné noci se ukázaly dvě věci, které žádný test neviděl.
Ostrá verze neuměla číst kalendář. Za vším stál jeden řádek v podpisu aplikace. Bez něj systém žádost tiše zamítne. Žádný dialog, žádná chybová hláška, prostě ticho.

Maskoti začali mizet uprostřed letu. Pojistka nerozlišovala, čí okno hlídá. Byla to chyba, která tam byla od začátku, jen se neprojevila, dokud se nelítalo hustě.
Výsledek jedné noci: tři vydání za sebou, testů z osmnácti na dvaapadesát, a uživatel neviděl jedinou novou funkci. Přesně tohle je práce, která není vidět.

AI je turbo, ne autopilot
Zrychlí vám první verzi appky na půl dne, ale nerozhodne za vás, co je přijatelné riziko a co ne. To rozhodnutí zůstává na člověku, pořád.
Článek původně vyšel na LinkedInu. Původní článek na LinkedInu

