Go to file
Gabriel Arazas 1aab03fc54 Merge cards into one annual deck
The deck is going to be divided into years instead. I find it very
limiting to take Anki sessions with topics. It slowly turns into
memorizing answers through pattern matching, almost like the quizzes I
find in most MOOCs in Coursera; it's not great.

An additional benefit is I get to jump between context, creating some
bit of pressure. It'll most likely end up similarly to pattern matching
but as long as I keep surprises for my future self and know how to use
Anki's filtering feature, I think it's going to be better.
2021-05-14 01:10:49 +08:00
assets/2020-04-17-21-41-30 Move the files into the assets directory 2021-04-15 21:18:44 +08:00
cards Merge cards into one annual deck 2021-05-14 01:10:49 +08:00
literature Update music and structured notes on 2021-05-12 2021-05-12 22:35:46 +08:00
structured Update music and structured notes on 2021-05-12 2021-05-12 22:35:46 +08:00
.dir-locals.el Update project-specific config 2021-04-24 01:08:53 +08:00
.envrc Update reproducibility for local environments 2021-04-19 22:50:00 +08:00
.gitignore Update gitignore, hoorah! 2021-04-05 20:02:42 +08:00
2020-04-12-11-20-53.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-04-12-13-07-20.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-04-13-17-32-27.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-04-14-18-28-55.org Update PIM notes 2021-05-07 12:09:43 +08:00
2020-04-15-14-35-55.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-04-15-20-41-51.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-04-17-21-41-30.org Update PIM notes 2021-05-07 12:09:43 +08:00
2020-04-20-16-51-40.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2020-04-21-19-44-15.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-04-23-23-21-47.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-05-07-21-53-21.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-05-09-12-48-23.org Update notes about notes 2021-05-06 00:55:04 +08:00
2020-06-03-15-21-42.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-06-04-21-32-23.org Update notes about notes 2021-05-06 00:55:04 +08:00
2020-06-09-06-21-37.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-06-24-14-33-42.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2020-06-25-12-37-23.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2020-06-25-13-12-09.org Update PIM notes 2021-05-07 12:09:43 +08:00
2020-06-27-16-21-47.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-06-27-18-31-40.org Update PIM notes 2021-05-07 12:09:43 +08:00
2020-06-28-06-19-24.org Update notes about notes 2021-05-06 00:55:04 +08:00
2020-07-01-23-19-07.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-07-06-03-47-52.org Update notes about notes 2021-05-06 00:55:04 +08:00
2020-07-06-23-55-47.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2020-07-08-22-42-47.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2020-07-10-23-30-27.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-08-19-08-21-44.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-08-28-19-26-43.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-04-16-07-47.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-04-19-57-06.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-11-04-08-34.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-11-04-11-59.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-13-19-42-06.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-14-10-46-15.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-15-03-08-22.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-16-23-09-01.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2020-09-19-08-31-48.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-09-19-18-43-07.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-11-05-17-21-58.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-11-15-05-10-51.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-12-25-21-05-59.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2020-12-26-13-30-39.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-02-28-14-52-58.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2021-04-05-12-43-36.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-05-12-51-56.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-06-22-25-17.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2021-04-07-15-09-24.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-07-18-19-11.org Update notes about notes 2021-05-06 00:55:04 +08:00
2021-04-07-18-53-58.org Update personal info management notes 2021-05-09 22:49:23 +08:00
2021-04-21-01-46-02.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-21-16-26-50.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-22-14-00-50.org Update PIM notes 2021-05-07 12:09:43 +08:00
2021-04-22-15-00-34.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-26-18-59-30.org Migrate notes to org-roam v2 2021-05-05 00:07:40 +08:00
2021-04-30-14-12-52.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2021-05-02-16-52-22.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2021-05-02-23-05-42.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2021-05-05-18-06-29.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2021-05-05-19-43-14.org Update notes about notes 2021-05-06 00:55:04 +08:00
2021-05-07-09-00-43.org Update PIM notes 2021-05-07 12:09:43 +08:00
2021-05-07-09-22-06.org Make a note on creating hub notes 2021-05-07 23:30:09 +08:00
2021-05-07-22-46-41.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2021-05-08-23-12-29.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2021-05-08-23-27-52.org Start writing evergreen notes from metalearning 2021-05-09 00:28:30 +08:00
2021-05-09-17-30-43.org Update personal info management notes 2021-05-09 22:49:23 +08:00
index.org Update cards, documentation, and dependencies 2021-05-07 12:11:25 +08:00
Makefile Add documentation and reproducible environment 2021-04-06 23:10:04 +08:00
neuron.dhall Add a bunch of notes 2020-09-06 20:43:51 +08:00
README.adoc Create the hierarchical notes 2021-05-10 08:49:29 +08:00
references.bib Update cards, documentation, and dependencies 2021-05-07 12:11:25 +08:00
shell.nix Update cards, documentation, and dependencies 2021-05-07 12:11:25 +08:00

Keep taking notes and stop worrying about file organization!

Muh wiki. This documents the "infrastructure" of my notes because I like documenting and I always forget things. It primarily uses the Zettelkasten note-taking method which means all of my notes are scattered in just one location. Fun.

Note

On another note, this supersedes my personal notes. Im not going to import them because I want to start on a clean slate.

Also, not everything on this Git repo is here (at least yet). Some of them are private files and so I want them to not appear anywhere else. Fortunately for me, most of the private files are connected with each other (a separate org-roam instance would be better in this case).

Why set up like this?

We need to focus on why did I need to make the structure like this. For this question, I answer with the outcomes that I expect from the note-taking system I eventually settled with.

  • I want ideas to be searched and woven so easily with the rest.

  • I want to accumulate my reading effectively.

  • Im not an expert so I still need the "basic" way of taking structured notes, summarizing them until I gain a bigger picture of the things Im curious about.

  • I want to easily integrate spaced repetition and randomness to encourage improvement on my notes.

This project is the result of that with org-roam, Anki, and eventually more (preferably less) tools to stick around and gain ideas from.

Getting started

Interested in copying my setup? Heres my IKEA-esque manual for you.

Prerequisites

It needs the following list of software. All of them are required unless noted otherwise.

  • GNU Emacs because org-mode.

    • Uses Doom Emacs as the preferred Emacs distro with the org module enabled. This is optional and you can use your own Emacs config.

    • org-roam v2, the star of the show, is installed.

  • Nix package manager because org-babel. You can fully replicate the environment without Nix by looking at the dependencies at ./shell.nix and install them with your package manager (or anything else, you do you) but I recommend to do so because I say so.

  • direnv (optional, by the way) because automatic shell environment. [1]

Setting up

This wiki uses org-roam v2 as the main note-taking system. As of 2021-05-04, it is yet to reach v2 but it is underway with its first alpha release. The notes shouldve been adapted for v2 by now. Though, you have to configure it in line with the major redesign.

If you want to fully reproduce the config, refer to my Doom Emacs configuration.

Now with the pieces complete and assuming youve already have my wiki in your folder, fire up Emacs, open the wiki folder, and do your thing. This project has a local Emacs config (see related section). If youve set enable-local-variables to :safe or any value that makes Emacs to ignore them, you may want to configure related variables for it to work.

If you have direnv installed, you can also enable automatic shell environments by allowing .entry to set it up for you. Just run direnv allow!

If you have lorri installed, youre better to go with the faster startup for the environment.

Conventions

  • There are certain times to use custom Org mode blocks inspired from Asciidoctor.

    • Abstract — e.g., #+begin_abstract.

    • Appendix — e.g., #+begin_appendix.

    • Admonition blocks — e.g., #+begin_important, #+begin_tip, #+begin_warning.

  • Mainly uses the convention of note categories found in zk.zettel.page. That said, not all notes are going to be self-contained. [2]

    • Fleeting notes are in ./daily/. The fleeting notes are ignored since theyre meant to processed on the daily so having them in the worktree will make a messy history.

    • Literature notes are in ./literature/. The literature notes may be a combination of Org roam notes and other notes from previous set of notes. Practically, this is your 2D system of notes — the hierarchical notebook.

    • The permanent and index notes are in the root folder.

    • Additional types of notes can be put in a separate folder (e.g., cards, microposts). There is not set hierarchy but be sure to create a new type by purpose.

  • The above structure makes it easier for retrieval. If you want to search all of the fleeting notes, just search in daily/, etc.

    • For searching tools, prefer desktop search tools such as Recoll or DocFetcher.

    • Quick search tools such as grep or ripgrep are also nice.

  • Uses timestamp (at localtime) as the filename, it is unique enough (for personal purposes) and doesnt need to change. [3] The format for the filename is equivalent to $(date +%F-%H-%M-%S).org.

  • Since org-roam v2, an ID is now required to be recognized by the software. File-level notes should have a top-level property drawer with an ID set while certain entries have local property drawers. That said, be selective when to assigning IDs for the local headlines.

  • Uses plain org-mode tags for consistency. It also happens to be the only supported tag format starting from org-roam v2 so hoorah for me. :)

  • A list of references are stored at ./references.bib for org-ref-styled workflows. It is managed with Zotero with the better-bibtex Zotero extension but you can replace however you manage and generate the Bibtex file.

  • A creation datetime and a modification datetime is a cruicial part of my notes. It lets me know how up-to-date my notes are without relying on the filesystem metadata because I copy them carelessly, not to mention how various tools deal with them differently. The modification datetime is handled with timestamps automatically. Heres an example Doom Emacs configuration for that:

    (after! org
      (setq
       time-stamp-start "date_modified:[ 	]+\\\\?[\"<]+"
       time-stamp-format "%Y-%02m-%02d %02H:%02M:%02S %:z"))
    
    ; Automate updating timestamps on save.
    (add-hook 'before-save-hook 'time-stamp)

    Just see my Doom Emacs config in my dotfiles.

  • The related assets are stored in the ./assets/. The asset folder names should be the same as the filename of the org-mode document — e.g., 2021-04-06-15-04-11.org should have an asset folder in ./assets/2021-04-06-15-04-11/.

    • I sometimes draw a visual aid just to strengthen my learning as well as an excuse to use my graphics tablet and I want to store them in a reasonable location without dumping it like in a landfill. Unfortunately, this means having to scour the assets folder like a clueless babboon holding a hammer because all of it is named after a timestamp but I can deal with it.

    • org-mode can also generate files including text and graphics. Im lazy and I fear conflicting asset filenames so Ill just put them in separate folders instead alongside opening a can of worms. [4]

    • For my hand-drawn visual aids, I usually name with a prefix (e.g., fds-visual-${WHAT_THE_GRAPHICS_IS_ABOUT}.webp). As a side effect, this mitigates against overwriting of generated assets from org-mode if I remember to not name it fds-visual-*.

    • If you enable local variables (recommended to query it) and are OK with prompts every time you open up a note, then this should be no problem for you.

Future tasks

This also means expect the following changes if youre watching this repo for some reason. Keep in mind all of the details are still under consideration.

  • Create a static site for my wiki. org-roam doesnt have a built-in export option yet but there are solutions. For now, Im not worrying to much on this one.

    • I could make a custom publication script. I did create a publication script back then for a small org-mode-based for testing purposes but it is messy and life happened so I wasnt able to get back on it immediately. Heres a very good example of a org-mode-and-Emacs-powered site complete with features and without JavaScript! [5] The advantage is complete control and the disadvantage is starting from scratch. Still, you can start from already existing solutions.

    • Convert the org documents to commonly-supported text formats like Markdown and use static site generators. Most of them supports Markdown and there is an "export to Markdown" option for org-mode. I could whip up an Elisp script and export it by batch then move them over to an SSG setup like Hugo. This is also how Jethro Kuans org-roam notes are setup.

    • Use a parser outside of Emacs. uniorg has a good example with Next.js as the site generator. It requires an external JavaScript-based setup but it can also be an advantage.

  • Try out Neuron. Ive used it on and off and even tried to support both org-roam and Neuron because I like the static site generated and also because org-roam doesnt have a killer HTML exporter yet (in my opinion). It is simple and nice but I can deviate from that with org-publish or any supported static site generators like Hugo. Once org-mode is reimplemented in Neuron v2, its a 100% addition to my workflow.

  • Support graphing features. org-roam has org-roam-server plugin but as of 2021-05-07, it doesnt v2. Not a necessity, necessarily, but it is a good visual way to quickly glance how my notes are doing in the bigger picture. Also, the ultimate procastination tool.

  • Add/replace Nix with Guix. Maybe add a file intended for setting up a Guix environment. I like both Nix and Guix, all right.


1. You can enable the direnv module from the Doom Emacs config.
2. Also, not all notes have the same structure so that makes it complicated.
3. If you use the title as the basis, thatll depend if you have tolerance for the misaligning relation between the filename and the title.
4. This includes trying to name an asset that doesnt exist already to not overwrite the file that one note needed. Its also a lot more subtle when trying to build it altogether or if the notes get any bigger.
5. Brett Gilio is kind enough to answer my noob org-mode related questions back then so big thanks to him for the guidance. :)