Portál AbcLinuxu, 30. dubna 2025 12:41
Bystroušák v posledním blogpostu položil dobrý dotaz na to, jak používám svou osobní wiki. Tenhle blogpost má být rámcovou odpovědí, zároveň je to možnost osvětlit motivaci pro některé designové rozhodnutí v Trilium Notes. Na rozdíl od Bystroušáka (jeho kvalitní post na toto téma) se nebudu zabývat filozofií, ale jen patterny organizace dat.
Jen pro ujasnění, za meta patterny považuji patterny patternů, tzn. pattern často se objevující jako součást jiných patternů.
Základní meta pattern je, že poznámky řadím do hierarchie - mám určité "top-level" poznámky, které určují základní rozdělení, ty se pak dělí dál podle potřeby. Stromovou strukturu obecně považuju za efektivní způsob organizace velkého množství dat. Omezení některých software (např. Evernote) v tomto směru mě hodně deptalo, protože to zásadně limituje škálovatelnost.
Když tak mluvím o škálovatelnosti, kolik těch poznámek vlastně potřebuju mít? Počítám, že denně můžu vyprodukovat 10 poznámek denně, což je ročně 3 650, za desetiletí už 36 500. Tuhle osobní wiki (míněno primárně data, ne nutně stejnou aplikaci) plánuji používat tak nějak celý život, tzn. desetiletí (až staletí, kdo ví), tzn. se můžu klidně dostat až na 100 000 poznámek nebo víc. Momentálně mám poznámek zhruba 10 000.
Hierarchii vytvářím líně, tzn. nesnažím se prvně vytvořit strukturu, kterou pak naplním. Pro dané téma vytvořím poznámku a "štěpím" pod-poznámky až když je potřeba. V tomto hodně pomáhá fakt, že v Triliu není rozdíl mezi vnitřními uzly a listy (oboje můžou mít jak obsah, tak potomky). Ve chvíli, kdy daná poznámka vyroste za hranici dobré použitelnosti, můžu některé dlouhé části textu vyčlenit do podpoznámek. Klasický filesystém nutí uživatele do "všechno nebo nic" přístupu - pokud je soubor moc dlouhý a chcete jej přeměnit na adresář, je nutné vyndat a rozdělit celý obsah.
Při organizaci poznámek do stromové hierarchie velmi brzy narazím na problém, že logicky dává smysl položku zařadit na více míst. Pokud mám např. poznámku (resp. podstrom poznámek) o bashi, tak fakt nevím, jestli jej zařadit pod "Programovací jazyky" nebo pod "Linux". Je to totiž falešná dichotomie do které nás tlačí omezenost našich aplikací - bash patří pod obě tyto poznámky! Trilium proto nepoužívá standardní strom, ale rozšíření, které každou poznámku umožňuje zařadit pod více rodičů.
Čtenářům abclinuxu se asi rozsvítí, když řeknu, že Trilium stejně jako linuxové FS podporuje hard linky, s tím zásadním rozdílem, že jde vytvořit hard link i pro "adresář". Pro nedostatek lepšího termínu tuto funkci ale nazývám " klonování".
Všechny "klony" jsou si ze systémového hlediska rovnocenné (což je jeden z důvodů, proč je slovo klon dost zavádějící), ale sémanticky má poznámka často primární umístění. Např. recenze knihy bude zařazena pod poznámku Knihy, ale i do denní poznámky (viz níže) - v takovém případě považuji Knihy, za primární umístění.
Trilium mám otevřené konstantně, občas můžu při odejítí od počítače zapomenout jej zamčít nebo jej můžu někomu vědomě na chvíli půjčit. Chráněné poznámky poskytují vyšší ochranu hodně citlivých dat (např. hesla, osobní deník) v tom, že a) data šifrují a b) každých pět minut (resp. jiný nastavitelný interval) vyžadují zadání hesla, jinak se jejich dešifrované kopie vymažou z paměti. Chráněné poznámky mám různě rozeseté po stromě - jakmile určitá poznámka překročí nějakou subjektivní hranici citlivosti, tak ji dám chránit a hotovo.
Poznámky často časem ztrácí relevanci - například pokud změním práci, tak všechny poznámky k firemním projektům už prostě nejsou důležité. To ovšem neznamená, že je chci smazat. V takovém případě podstrom pro danou firmu označím
děděným labelem
archived
, čímž daný podstrom vyfiltruju z vyhledáváním.
Poznámky jde stále procházet a jinak s nimi pracovat, jen nezaplevelují výsledky vyhledávání (rychlé vyhledávání přes našeptávač je pro mě hlavní způsob navigace mezi poznámkami).
Archivaci používám i u poznámek, které mají již od vzniku nízkou relevanci - např. importované reddit komentáře. Pokud relevantní poznámky nejdou nějak rozumně oddělit od těch relevantních nějakou kategorizací, tak si prostě vytvořím poznámku "OLD" a přesunu tam ty málo relevantní poznámky (opět s labelem
archived
).
Zjednodušeně mám pro každý den jednu poznámku, která (v podpoznámkách) združuje všechno, co se daného dne nějak dotýká. Je to taková pracovní plocha a zároveň inbox - řadím tam věci, u kterých zatím ještě nemám rozmyšlené jejic zařazení a kategorizaci provedu později.
Trilium má tuto funkcionalitu částečně zabudovanou, převážně ve formě API - Trilium ví, kde a jak strukturu Rok / Měsíc / Den vytvořit (pod poznámkou s labelem
calendarRoot
). Mimo to existuje ještě globální klávesová zkratka
CTRL-ALT-P
, která vkládá novou poznámku právě pod aktuální denní poznámkou (do
inboxu).
Co si pod takovou denní poznámku uložím:
Většina poznámek je primárně zařazena jinam než do denní poznámky a jejich výskyt v denní poznámce je tak nějak sekundární. Tento pattern tedy do velké míry vyžaduje funkci klonování (viz výše).
Co je projekt asi každý chápe, v mé taxonomii to ještě značí dlouhodobost (v délce roků) - příkladem může být třeba Trilium Notes. Struktura takového projektu se dost různí a nevidím nějaké jasné patterny. Co je ale vidět je silná provázanost s ostatními částmi - např. mám do projektu naklonované credentials z jiné lokace nebo blogposty o Triliu (jinak uložené v projektu Blog).
Epicy jsou vlastně to samé jako projekty, ale jsou spíš středně dobé - v délce měsíců - a proto je primárně ukládám pod "roční" (např. 2018) poznámku. Sem patří hodně pracovních věcí (které jsou samozřejmě naklonované i do poznámky "Práce"), ale i osobní (např. teď mám velký epic stěhování).
Pro krátkodobé projekty (náročnost den nebo několik dní) zatím nemám označení (i když by se mohlo hodit story) - buď je mám uložené pod měsícem nebo si je každý den přesunuju mezi denními poznámkami.
Ukládám si credentials pro všechny služby, mám je rozdělené do kategorií (typicky práce, projekt, osobní podle země atp.). Tyto poznámky jsou samozřejmě chráněné a často naklonované do jiných částí (např. login do githubu mám naklonovaný i v projektu Trilia). Tohle je pro mě docela zásadní výhoda oproti specializovaným toolům (např. KeePass) - všechny data mám na jednom místě (bez ztráty na bezpečnosti).
Mám standardní "To Read" seznam. Vedu si recenze knih - co kniha to podstrom, kde kořen má nějaké základní labely (autor, rok vydání, čteno od, čteno do) a má pod-poznámky "Highlights" (importované zvýrazněné pasáře z Kindle plus můj komentář), další pod-poznámka je samotná recenze a pak jak se uvidí.
Zatím tyto recenze řadím přes roky, ale mám v plánu použít již uvedené labely definující interval čtení na vytvoření nějakého timeline grafu, který bude zobrazovat co jsem četl a kdy (ne jako vlastní feature Trilia, ale jako custom skript). Jsem docela zvědavý vizuálně vidět, kdy jsem měl čtecí maratony a kdy jsem polevil.
Krom toho si ty knihy ještě klonuju pod poznámky autorů (teda jen u vybraných autorů). U poznámky autora mám pak ještě související materiály - linky na rozhovory, eseje atp.
Podobný systém mám i pro filmy a seriály, ale míň propracovaný.
Tohle někomu může připadat "creepy", ale vedu si na lidi záznamy. Standardně věci jako datum narození, bydliště, kontakty, ale i třeba pracovní historii, základní info o jejich zájmech, názorech atp. - tak nějak všechno co považuji za důležité a bojím se, že to můžu zapomenout. Není nad to, když si dokážu během konverzace vzpomenout, že už jsem se X-krát dané osoby ptal na práci, ale už si nepamatuji odpověď.
Známých lidí je samozřejmě hodně a víceméně je třídím přes sociální kruhy - tak nějak odkud je znám - ze základky, vesnické hospody nebo z knižního klubu. Některé lidi znám z více kruhů zároveň, ale pak je prostě naklonuju do víc kruhů.
Speciální kategorií je kruh rodina, který je stále příliš velký a proto mám podkategorie podle "klanu", např. "Novákovi". Na rodinné vztahy se mi hodně hodí relační mapy, které jsem představil v posledním blogpostu.
U lidí si často vedu i důležité (IM, mail, i meat space) konverzace.
Všechny důležité dokumenty (občanka, pas, maturitní vysvědčení atp.) mám naskenované a uložené v Triliu. Je to dobré jako záloha nebo pokud fyzické dokumenty nemám u sebe.
Informace a dokumenty k věcem, které vlastním - např. auto u kterého si vedu datum zakoupení, datum technické kontroly a naskenovaný techničák, servisní zákroky a cena za ně atp. To samé pro telefony, PC, foťáky, jinou elektroniku atp. Tohle dělám jen pro věci, které jsou pro mě nějakým způsobem důležité.
Tady si to vedu prostě podle jednotlivých kurzů - ať už je to Coursera, pracovní training nebo jen čtení knihy. Typicky se to dělí na nějaké jednotky - lekce, kapitoly, tréninkové dny atp. Knihy jsou samozřejmě naklonovány i do poznámky "Knihy", tréninky do "Práce", denních poznámek atp.
Tady mám uložené už tak nějak sesumírované znalosti a poznatky z daných domén. Přestože to tvoří velkou část obsahu mé "wiki", tak v tom jde těžko najít nějaký pattern. Základní dělení je dost subjektivní - klasické vědy jako Filozofie, Fyzika, Ekonomie, Historie atp. ale pak třeba Apps pro popisy aplikací nebo Mental models. Je tam často překryv se Studijními poznámkami, rozdíl je v tom, že ty jsou spíš procesně strukturované.
Mám top-level poznámku pro firmu, kde aktuálně pracuji (předchozí zaměstnání jsou odsunuté jinam). Vedu si základní organizaci firmy (divize, business unity), kdo je kdo (hodí se relační mapy), projekty na kterých pracujeme atp.
Samozřejmě si sem píšu přístupy ke spoustě firemních služeb. Firma má většinou nějaké vlastní (komplikované) procesy a tooly, které je dobré zdokumentovat. Píšu si sem shrnutí meetingů. Linkuju věci na firemní wiki (ve které je peklo něco hledat). Obecně existuje spousta specificky firemních věcích, kterou musím mít při ruce ve struktuře, které rozumím. Často jde vlastně o jakousi filtrování a transformaci dat z firemních zdrojů do něčeho mně srozumitelného.
Ze skušeností mě dokáže efektivní užití takové osobní wiki značně zvednout produktivitu a hlavně dramaticky snížit míru frustrace.
Dalo by se pokračovat dál s výčtem dalších věcí, ale už teď cítím, že to musí být nudné i pro ty, co dočetli až sem ... Budu rád, pokud popíšete některé vlastní patterny v diskusi. Obecně považuji tyto patterny za docela přenositelné, resp. dá se z nich minimálně vytáhnout nějaká inspirace.
Tiskni
Sdílej:
vypada to dobre, ja se o neco podobneho (v mensi - pracovni - mire) snazim v OneNote. Ten ma par vyhod (mobilni klient), integrace s Widlemi v praci i nevyhod - proprietarni reseni, neexistence klienta pro Linux, nikdo nevi, jestli to MS "nevypne".
K te osobni wiki by to chtelo dodelat klienty pro android/ios a/nebo integraci do own/next cloudu...
jo a jeste integraci s todo/kalendarem ;)
~/doc
a různých dalších místech do organizovanější wiki. Zvolil jsem software mdBook.
Můj hlavní požadavek a důvod, proč právě mdBook, je, že chci na poznámky pokudmožno používat svůj normální editor, který mám nastaven k plné spokojenosti. Nechtěl jsem se učit / nastavovat nový editor specielně pro wiki.
mdBook je primárně generátor dokumentačních brožur, tj.počítám, že nejspíše nebude vyhovovat fanouškům dynamických prototypových systémů. Mně vyhovuje díky své až primitivní jednoduchosti.
mbBook mě překvapil v tom, jak pohodlně to funguje. Je tam sice to rozdělení, že na vstupu je struktura Markdown souborů a "na příkaz" se vygeneruje html výstup, nicméně mbBook umí běžet jako démon, který si sám zdetekuje změnu ve vstupní struktuře a následně vygeneruje a lokálně naservíruje výstup, který se při změně sám reloaduje. mdBook taky umí to, že při přidání nové položky do SUMMARY.md
dovytvoří soubory/složky na disku chybějící, takže operace přidání nové pozmánky nebo celého podstromu je dost snadná.
Je to sice hodně subjektivní, ale výstup mi přijde celkem velmi pěkný a dostatečně funkční - pomocí JS umí provádět rychlé vyhldávání/skákání pomocí kliku nebo klávesové zkrátky 'S'. Taky umí MathJax pro vzorce/rovnice/etc. Podpora Markdown je spíše základní, umí třeba základním způsobem tabulky, ale neumí nějaké jiné rozšíření/fíčury navíc, např. mi trochu chybí škrtnutý text (který dá udělat pomocí <s>), ale moc to neřešim.
Hierarchii vytvářím líně, tzn. nesnažím se prvně vytvořit strukturu, kterou pak naplním. Pro dané téma vytvořím poznámku a "štěpím" pod-poznámky až když je potřeba. V tomto hodně pomáhá fakt, že v Triliu není rozdíl mezi vnitřními uzly a listy (oboje můžou mít jak obsah, tak potomky).Dělám to stejně (to štěpení do hierarchie až když je potřeba) a s mdBook to jde triviálně tak, že pro každý nový uzel udělám rovnou podsložku, tj. místo
foo.md
vytvořim rovnou foo/0.md
a další pod-uzly do toho buď přibudou nebo ne.
Vícenásobné řazení do hierarchie se udělá tím, že se prostě daný md file dá do SUMMARY.md
na více míst.
mdBook používám tak, že mám napsán krátký systemd service, který běží mdBook na pozadí pod user instancí systemd (tj. po přihlášení), service mám trvale otevřený v prohlížeči. Když chci poznámky přidávat / měnit, přepnu nebo otevřu projekt v editoru (který je vesměs taky trvale zapnutý) a provedu co potřebuju.
Pro účely archivace a záloh mam obsah wiki v gitu.
Co se týče obsahu wiki, nemam to určitě tak podrobné jako ty. Dobudoucna chci mít wiki podrobnější a organizovanější, ale asi ne až tolik. Budu se snažit najít nějaký balanc, nechci trávit neúměrné procento času psaním wiki ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.