Zápisky, ne přednášky
Co jsem si přečetl a co si z toho odnáším.
Krátké články o tom, co mě zrovna zajímá — od frontendu a AI po cokoli dalšího, na co se zeptám. Můžeš je číst jako klasický článek, nebo přepnout na prezentační režim.
Podpis dokazuje přístup ke klíči, ne pravdu
Hardwarový modul chrání klíč před vytažením, ne před zneužitím
C2PA slibuje, že podepsaná fotka je pravá. Na Androidu stačí root a hardwarový modul podepíše cokoliv, aniž by klíč vydal. Rozbor toho, proč je hranicí právo klíč zavolat, ne jeho držení.
Tvůj kód už ten DAG obsahuje, nekresli ho znovu
Orchestrace nepotřebuje graf navíc, potřebuje trvanlivé hranice
Airflow tě nutí nakreslit graf závislostí, který strom kódu už dávno má. Rozbor toho, proč je skutečným problémem durable execution hranice kroku, a proč verzování rozbíjí běžící workflow.
Crawler si vybere to dražší z tvých rozhraní
Mohutnost URL prostoru je závazek, ne vlastnost routeru
git.kernel.org dává celá data ke stažení jedním clonem. Scrapery přesto renderují miliardy HTML stránek a berou pětinu výkonu. Rozbor toho, proč se kombinatorický URL prostor stane účtem.
Context je vyhledávání nahoru, ne kanál dolů
Hodnotu si komponenta při renderu najde, nikdo jí ji neposílá
Context se popisuje jako trubka, kterou data tečou stromem dolů. Ve skutečnosti je to hledání nejbližšího providera nahoru při čtení. Z toho plyne, proč se překreslí každý konzument bez ohledu na to, co si z hodnoty vzal.
Cache zneplatníš jen tam, kam dosáhneš
Vrstvy se liší tím, kdo je vlastní, ne rychlostí
Prohlížeč, CDN, aplikace a databáze necachují jednu věc čtyřikrát. Každá vrstva má jiný klíč a jiného vlastníka. Rozbor toho, proč se verzované URL používá právě tam, kam ruka nedosáhne.
Ketóza je ukazatel, ne účinná látka
Tam, kde ketodieta prokazatelně funguje, ketony obvykle nejsou důvod
Nejsilnější důkazy pro ketodietu nepocházejí z hubnutí, ale z neurologie. A i tam experimenty ukazují, že samotné ketolátky nejspíš nejsou tím, co léčí. Ketometr měří vedlejší produkt.
Transition nic nezrychlí, jen dovolí práci zahodit
Označíš update jako přerušitelný, ne jako méně důležitý
startTransition neposílá update na pozadí ani ho neodkládá. Označí ho jako práci, kterou smí React kdykoli přerušit a spočítat znovu. Z toho plyne každé jeho omezení včetně zákazu u textových inputů.
O kvalitě standardní knihovny nerozhoduje rozsah
Rozhoduje o ní kapacita organizace, která ji roky drží
Spor o velké versus minimální standardní knihovny je špatně položený. Python, Go a Rust ukazují, že kvalita nezávisí na rozsahu, ale na tom, kolik trvalé pozornosti má tým k dispozici.
Stejné váhy ještě neznamenají stejný model
Attention kernel, kvantizace KV cache i počet GPU mění odpověď
Stejný soubor s vahami, stejný prompt, jiný výsledek. Rozbor toho, jak se numerický šum v inference stacku přes autoregresi promění v jiné volání nástroje — a proč benchmark bez popisu stacku nic neměří.
Harness má poločas rozpadu, model ho pohltí
Co dnes obcházíš promptem, umí příští model sám od sebe
Anthropic smazal 80 % systémového promptu Claude Code, protože model mezitím tu práci převzal. Rozbor cyklu trénuj, pohlť, odhoď — a toho, které části harnessu přežijí a které jsou jen náplast.
Token nepatří do sandboxu, doplň ho až v proxy
A doplň ho podle struktury požadavku, ne podle textu
v0 pouští vygenerovaný kód proti Snowflaku, aniž by mu dal přístupový token. Rozbor toho, jak se tajemství doplňuje až za hranicí sandboxu a proč slepé nahrazení řetězce udělá z proxy orákulum.
BFF není sdílená brána, je serverová půlka klienta
Jedna zkušenost, jeden backend, jeden tým, který drží obojí
Backend-for-Frontend se často zaměňuje s API bránou. Rozdíl je vlastnictví: BFF patří týmu, který dělá to rozhraní, a proto je duplicita mezi dvěma BFF vlastnost, ne zápach.
Radon je v půdě, ale pumpu dělá dům
Proto index pozemku nepředpoví, kolik ho naměříš v obýváku
Radon sám tělu neublíží, vydechneš ho zpátky. Škodí jeho rozpadová rodina, kterou do domu aktivně nasává podtlak — a proto česká norma od roku 2019 přestala navrhovat ochranu podle radonového indexu pozemku.
React neukládá nový stav, ukládá frontu úprav
Tři stejná volání setState dají jedničku, nebo trojku, podle tvaru
setState nic nenastaví. Zařadí položku do fronty, kterou React projede až po doběhnutí handleru. Z toho plyne, proč trojí zvýšení o jedna skončí na jedničce a kdy se batchování láme.
Rychlost úložiště se ti tiše zapíše do architektury
Z jedné milisekundy na pět a smyčka se protáhla na minuty
Vercel přesunul stav buildů z Redisu do DynamoDB. Latence stoupla o čtyři milisekundy a supply loop se zhroutil, protože v kódu byl roky zapečený nevyslovený předpoklad o rychlosti čtení.
Ostrovy obracejí výchozí stav stránky na statický
Interaktivita přestává být default a stává se ohraničenou výjimkou
Islands architecture není optimalizace hydratace. Je to obrácení defaultu: stránka je statické HTML a interaktivní je jen to, co si to výslovně vyžádá, každý ostrov nezávisle na ostatních.
Nech model štítek vymyslet, pak ho teprve namapuj
U velkého číselníku je generování levnější než výběr ze seznamu
Klasifikace proti tisícům kategorií se dělá tak, že se modelu ten seznam neukáže vůbec. Nechá se vymyslet kategorii od oka a embedding ji pak přiřadí k reálné položce číselníku.
Fakta se do vah nekomprimují, postupy ano
Znalost stojí zhruba dva bity na parametr, uvažování se škáluje líp
Malé modely dnes řeší olympiádní matematiku a přitom si nepamatují, kdo co kdy udělal. Není to regrese ani nedodělek, ale důsledek toho, že fakta a postupy se v parametrech chovají úplně jinak.
Nudná technologie přestává být nudná mimo hlavní cestu
SQLite šestnáct let neztratilo zápis, dokud ho někdo nepoužil jinak
Tailscale mělo za půl roku devatenáct poškozených databází. Na vině byl šestnáct let starý závod v SQLite, který nikdo nikdy nepotkal, protože nikdo nečekpointoval ručně a tak často.
Server state není tvůj stav, jen ho máš půjčený
Proč kopírování dat ze serveru do useState je bug, ne pohodlí
Data ze serveru nevlastníš, jen si je půjčuješ k zobrazení. Jakmile je zkopíruješ do useState, vyrobíš zastaralou kopii a odřízneš se od synchronizace. Tenhle rozdíl mění, jak stavíš datovou vrstvu.
useEffect běží po paintu, useLayoutEffect před ním
Kde v timeline render–commit sedí tvůj effect, rozhoduje o všem
React rozdělí každý update na render a commit. Kde mezi nimi a paintem sedí tvůj effect, rozhoduje o tom, jestli změříš DOM včas a jestli uživatel uvidí problikávat mezistav.
Rendering strategie je volba, kdy vyrobíš HTML
CSR, SSR, SSG a ISR jako čtyři body na jedné ose času
CSR, SSR, SSG a ISR nejsou čtyři technologie, ale čtyři odpovědi na jednu otázku: kdy vzniká HTML. Rozbor té osy — od build timu po každý request — a čím za každý posun platíš na čerstvosti, ceně a rychlosti.
Přeposlat výstup AI z tebe dělá zbytečný mezičlánek
Proč tím v code review přehazuješ implementaci na recenzenta
Když bez přečtení přeposíláš výstup modelu dál, příjemce si ho mohl vygenerovat sám — rychleji a s lepším kontextem. V code review to obrací role: recenzent dělá tvou práci. Rozbor toho, kde se ztrácí odpovědnost.
Průměr umí ukázat přesný opak pravdy
Proč se ti dvě populace requestů schovají do jednoho čísla
Průměrná latence stoupla o 9 %, medián ze stejných čísel klesl. Rozbor toho, jak multimodální rozdělení schová dvě protichůdné změny do jednoho čísla a proč CDF řekne víc než kterýkoli percentil.
React si hooky pamatuje podle pořadí, ne podle jména
Proč hooky visí na fiberu jako spojový seznam a kurzor se posouvá
React neví, že se tvůj hook jmenuje useState. Ví jen, kolikátý v pořadí je. Hooky visí na fiberu jako spojový seznam a při každém renderu se čte odshora. Proto je podmíněný hook zakázaný — a proč to není zbytečné pravidlo.
CVE je nepodložené tvrzení, ne ověřený fakt
Jak se do databází zranitelností dostaly vymyšlené SQLite díry
Někdo nahrál desítky vymyšlených zranitelností SQLite — funkce, které neexistují, řádky za koncem souboru. Prošly, protože registrace CVE nevyžaduje důkaz. Rozbor toho, proč je CVE jen tvrzení a proč to jazykové modely levně zneužijí.
Většina SIMD kódu má pořád stejný tvar
Pět kroků, které z vektorizace horké smyčky dělají rutinu
SIMD má pověst arkánního umění, ale běžný případ se vejde do pěti kroků, které se opakují napořád. Rozbor toho tvaru a proč se ho vyplatí napsat ručně, když to kompilátor stejně neudělá.
Ne model, ale harness rozhoduje o ceně agenta
Proč stejný model spálí podle uspořádání pipeline i šedesátkrát víc tokenů
Stejný model spotřebuje na téže úloze až šedesátšestkrát různě tokenů — nerozhoduje model, ale harness kolem něj. Rozbor toho, proč se vyplatí rozdělit role mezi levný a drahý model a oddělit toho, kdo nález najde, od toho, kdo ho ověří.
Agenti odstraní tření, a s ním i sdílené porozumění
Proč věž roste dál i poté, co tým přestal rozumět vlastnímu systému
Zpomalení z code review a koordinace nebylo jen ztráta času — byla to cesta, jak se tvoje porozumění stalo mým. Agenti to tření odstraní a věž roste dál i poté, co sdílený model systému tiše zmizel.
Zakázat přímou akci nestačí, agent ji složí oklikou
Jak honeypot přiměl Claude vyhláskovat cizí data po písmenech přes odkazy
Claude nesměl volat libovolné URL. Směl ale následovat odkazy z už načtené stránky — a to stačilo. Útočník postavil web s písmeny v cestách a agent přes něj vyhláskoval jméno, zaměstnavatele i město svého uživatele.
Math v prohlížeči přestal být bitově přenosný
Proč Math.tanh(0.8) vrací na Linuxu, macOS a Windows tři různá čísla
Až do Chrome 148 vracel Math.tanh všude stejné bity. Pak V8 přepnul na systémovou libm a stejný kód začal na každém OS počítat jinak. Rozbor toho, proč IEEE 754 nikdy nesliboval to, na co ses spoléhal.
Přepsat půl milionu řádků svede až kontrolovatelná dekompozice
Jak Bun převedli ze Zigu do Rustu za jedenáct dní pomocí testů jako arbitra
Bun přepsali z 535 tisíc řádků Zigu do Rustu za jedenáct dní se 64 agenty naráz. Nedrželo to pohromadě díky chytrým agentům, ale díky testům, které nezávisely na implementaci, a recenzentovi, který o kódu nic nevěděl.
Agent tě stojí 33 tisíc tokenů, než přečte první slovo
Kde se bere stálá daň z kontextu a proč ji přepis cache uprostřed práce zdvojnásobí
Claude Code pošle přes 33 tisíc tokenů dřív, než dorazí tvůj prompt; OpenCode sedm. Rozdíl není v kvalitě, ale ve schopnostech, které visí v kontextu pořád. Rozbor stálé daně z kontextu a toho, proč ji nikdo neměří.
Tlačítko má jedinou práci: přijmout vstup hned
Proč iPhone bufferuje rychlá klepnutí a Android je během animace zahodí
Otoč fotku osmkrát rychle za sebou. iPhone provede všech osm, Android půlku zahodí, protože zrovna běží animace. Za tím rozdílem je celá filozofie: nikdy nenuť uživatele čekat, až animace doběhne.
Lepší model, horší dodržování cizího schématu
Proč nejnovější Claude modely komolí edit tool, který starší zvládaly
Novější modely Anthropicu vymýšlejí do volání nástroje pole, která ve schématu nejsou. Není to regrese kvality, ale stopa po tom, na čem se trénovaly. Rozbor toho, proč silnější prior škodí.
Zrychlení se počítá až za prahem
Proč desetinásobné zlepšení může být úplně k ničemu
Zkrátil jsi dotaz z deseti minut na třicet sekund a nikdo si nevšiml. Výkon nemá lineární hodnotu — počítá se, teprve když překročí práh pozornosti, diskrétní jednotku nebo bottleneck. Tři místa, kde optimalizace ztrácí smysl.
Jednotkou prefetche má být trasa, ne odkaz
Jak si server-driven navigace půjčuje trik ze single-page aplikací
Server-driven navigace působí pomalu, protože čeká na síť. Next.js přestal prefetchovat každý odkaz zvlášť a začal cachovat jednu znovupoužitelnou skořápku na trasu — jako code splitting v SPA. Rozbor toho mentálního posunu.
Prompt injection ustojí model, ne chytrý prompt
Co ukázalo šest tisíc útoků na e-mailového agenta
Dva tisíce lidí poslalo přes šest tisíc e-mailů, aby z AI agenta vytáhli tajný soubor. Neuspěl nikdo. Co to říká o obraně LLM agentů — a proč autor stejně tomu agentovi nedá právo odesílat maily.
Rychlost paměti je otázka lokality, ne kapacity
Proč stejný součet poběží patnáctkrát pomaleji jen podle pořadí přístupu
Sečíst stejná čísla může trvat patnáctkrát déle jen podle pořadí, v jakém k nim sáhneš. Rozbor pěti vrstev paměťové hierarchie, kde se lokalita láme, a proč na tom záleží víc než na velikosti cache.
Prompt engineering, seriózně
Šest principů, které fungují napříč modely
Ne triky, ne magie. Šest osvědčených principů, jak dostat z jazykových modelů použitelný výstup — a proč fungují.
Jak funguje React Reconciler
Fiber, priority a to, co se děje mezi setState a paintem
Krátký průvodce vnitřkem Reactu — proč byl fiber revoluce, jak se plánuje práce a co to znamená pro tvůj kód.