Jsme Samizdat, datový tým Českého rozhlasu. Občas se nás ptáte, jak si zaznamenávat svá vlastní data, jak si vést log. Které filmy jste viděli, kolik zvednete na mrtvém tahu, jak vám rostou děti. Konkrétních příkladů jsme od vás už slyšeli tolik, až jsme se přestali domnívat, že jde o pouhé zdvořilostní konverzace, a rozhodli se postavit k tématu seriozně.
- Papírové sešity mají svůj půvab, ale pak už spíš nevýhody: snadno se ztratí a těžko se z nich něco počítá či generuje. (Zcela na okraj: tato forma lidového archivaření by si zasloužila výstavu či monografii: kolik jsme už viděli notesů se záznamy o účasti na pravidelném saunování či nohejbale…)
- Appky a cloudové tabulky jsou vždy po ruce, ale jednak svá data sdílíte s bůhvíkým, jednak mohou bez varování zmizet. Z některých appek je nelze dostat ven, z některých jen krklomně přes API. Z Tabulek Google jde stáhnout CSV, narazili jsme však už na různé podivnosti ve formátování těchto exportů.
- V souladu s nestárnoucí knihou The Pragmatic Programmer tedy vítězí textové soubory na lokálním disku. Člověk nad nimi má plnou kontrolu, jdou přečíst i bez proprietárního softwaru, snadno zálohovat nebo zapojit do skriptů a automatizací.
- Formát? Na jednoduché tabulky čas-hodnota je patrně nejvhodnější CSV. Na data slovníkového typu klíč-hodnota spíše YAML (stručnější syntax, ale s některými háčky nebo TOML (robustnější za cenu delšího ťukání). JSON nechejme strojům.
- K těm automatizacím: pokud si něco logujete často, hodí se nastavit si klávesové zkratky, které vrátí aktuální datum ve formátu YYYY-MM-DD (což je jediný správný formát) anebo rovnou aktuální unixový čas. Vlastní klávesovou zkratkou jde také rychle otevřít konkrétní log a ještě třeba ve vimu najet na jeho konec a přidat nový řádek. (S příslušným skriptem pro AutoHotKey nebo podobný nástroj vám pomůže některý LLM.)
- Nakonec obecný apel: logujte dřív, než budete vědět, co s tím. Ne obsedantně vše, ale pokud už něco počítáte nebo měříte, účast na srazech spolužactva z gymplu nebo úrodu kadlátek, vaše budoucí já může zachovanou evidenci ocenit.
Napsali jsme
Honza Boček nejprve pátral po tom, proč se zrovna Brno stalo hlavním městem kratomu. Pak si opět jednou střihnul téma zdravotnické: Místo 52 týdnů i 190. Čekací doby na velké ortopedické zákroky se od covidu nezkrátily, stále překračují limit, zjistil.
Michal Kašpárek se povrtal v datech o běhání a jízdě na kole z aplikace Strava. Ta si mimochodem můžete stáhnout přes link v článku.
Přečetli jsme
Přemýšleli jste při čtení úvodu, proč vůbec něco ze svého života evidovat? Protože z toho pak můžete generovat dílem objevné, dílem prostě jen hezké autobiografické přehledy jako Felix Krause.
Jde na novém levném MacBooku Neo pracovat s velkými daty? Jde. Fofr to nebude, ale dík DuckDB není 8 GB RAM nepřekonatelným limitem.
Jsou vizualizace slavných šachových partií ve formě 3D drátěných modelů přehledné a srozumitelné? Nejsou. A půvabné? To ano. Škoda, že nejde o fyzické artefakty: modýlek do poličky, velká socha na náměstí…
Pěkná galerie isotypových vizualizací z let 1945 až 1948.
Vyzkoušeli jsme
Naši přízeň si získávají interaktivní sešity https://marimo.io/ (česky řasokoule) a částečně k nim migrujeme z Jupyter Notebooks. Proč?
- Podobně jako v tabulkovém procesoru i v Marimo každá jedna změna okamžitě aktualizuje všechny buňky v sešitu. Aby v tom nebyl brajgl, nástroj vás nechá definovat proměnnou či funkci pouze v jediné buňce. To znamená rychlejší práci a zároveň méně chyb: nejde si nepozorovaně smazat řádek s důležitou deklarací.
- Sešity jsou out-of-the-box spustitelné jako běžný pythoní skript. Šikovné pro rychlý přesun od blbnutí k produkci i pro pořádek ve správě verzí. (Na rozdíl od košatých jupyteřích JSONů.)
- Náhled dataframů je zde šikovnější: u sloupců se zobrazují agregované statistiky včetně pidigrafíků, výpisem se jde proklikávat tam a zpátky nad rámec defaultních 10 vypsaných řádků.
- Pak tu jsou další UX drobnůstky jako automatické měření doby běhu jednotlivých buněk.
- Podpora Mermaid diagramů? Bájo.
- Nástroj výborně spolupracuje s uv – správcem balíčků a projektů, o kterém jsme psali loni. Sešity Marimo můžete přes uv nainstalovat a spouštět a zároveň si samy přes uv rychle doinstalují knihovny, které v konkrétním projektu potřebujete. V Anacondě toto trvá dlouho a co hůř, neodhadnutelně dlouho: někdy pět minut, někdy hodinu. Ve stacku uv+Marimo je to záležitost sekund, ostatně jako instalace a spuštění Marima samotného.
- Hladká je taktéž integrace linteru a formatteru Ruff: zvlášť při exploraci dat člověk často buší kód jako prase, takže je milé, když jej něco při uložení bleskově zúhlední. Zde je ale bohužel nutné zmínit, že byl tvůrce nástrojů uv i Ruff v březnu koupen OpenAI. Co to znamená pro jejich budoucnost, těžko říct.
Za Samizdat, datový tým Českého rozhlasu, přeje duben jako buben
Michal Kašpárek
Ilustrační obrázek jsme vygenerovali v Gemini promptem „Obří mechovitá řasokoule (marimo) sedí za úhledným, ale evidentně levným notebookem a její ruce zalamují papírový sešit. Kolem ní v prostoru náhodně levitují modré švestky (kadlátka), osy na mrtvý tah a z oblohy prší vystřižená tiskací písmena tvořící nápis YYYY-MM-DD. Celé to musí působit jako hrubě poskládané z výstřižků ze starých časopisů a novin.“ Prompt navrhla na základě textu newsletteru sama Gemini.