organization
My method for self-organization works really well for me. It might work really well for you too, so I decided I should share my setup.
I was ultimately inspired by Jamie Rubin's blog post on his Obsidian.md notes setup and Jeff Huang's blog post on his single text-file setup. Additional fine-tuning was inspired by org mode, org roam, the Zettelkasten Method, and the P.A.R.A. Method.
If you're not familiar, Obsidian.md is a solid markdown editor. They advertise themselves as "A second brain, for you, forever." It's inferior to vim as an editor imo tho. More on obsidian: {1}
Here's an example of a day of notes:
Here's an example:
1. I can easily search for all my todos, thoughts, ideas, etc.
2. I can easily jump between days, or find a specific day
3. I'm not limited by any sort of organizational structure
4. Very little effort to maintain
5. Flexible af
My workflow isn't exactly feature-hungry, so this setup works nicely for me. Although, there are some notable drawbacks. Mainly, it's impossible to create diagrams or anything visual. Also, It's hard to keep everything synched up across different devices (this isn't too big of a deal for me tho, see {3}).
This keeps my general notes separate from my topic-specific notes. If need be, I can hyperlink between different files too. Also, note I do not keep my university notes in the
I wanted to be able to pop open a new window with my main notes file with a single keystroke. So, I mapped
Executing
With my current Vim configuration, my Daily notes file looks like this:
To generate today's date with a simple keybind, I use UltiSnips. My
which results in:
To search for and open notes files in the
Which looks like this:
To search through my non-main-file notes manually, I mapped
{2} I back up all my notes in a high-quality SSD. This SSD has a git repository configured to pull and sync with my notes (as well as other stuff, like my programming projects). I have a script to do this automatically when the SSD is plugged into my computer and mounted.
{3} I usually carry a dumbphone with virtually no productivity capability, so my phone isn't important to my workflow. It's not necessary for me to sync my notes to my phone (or any other device besides my backup server, for that matter). Although, for some people, I'd imagine this sort of feature would be important.
{4} I'll write about my full university notes setup eventually. Here's my organizational structure for the first two years of my computer science and mathematics degree:
Notably, I keep a symlink between
• Johnny Decimal Project Organizaton System
• In Defense of Obsidian's Graph View
I was ultimately inspired by Jamie Rubin's blog post on his Obsidian.md notes setup and Jeff Huang's blog post on his single text-file setup. Additional fine-tuning was inspired by org mode, org roam, the Zettelkasten Method, and the P.A.R.A. Method.
If you're not familiar, Obsidian.md is a solid markdown editor. They advertise themselves as "A second brain, for you, forever." It's inferior to vim as an editor imo tho. More on obsidian: {1}
Setup Details
My system involves using a single main text file as the primary means of organizing myself. My main text file is always edited using neovim and lives on my work laptop. Everything is managed by git routinely backed up {2}.Here's an example of a day of notes:
### [Date]
- todo: [thing(s) I need to do]
- read: [thing I read]
- idea: [idea I have]
- thought: [thought I have]
### 23-02-04
- todo:
(1) systems hw by 2/5
(2) build updated SCTP spin model by mon
(3) number theory hw due wed
(4) set up webctf on digitalocean for TA-ing
(5) compile safe-LLVM with ninja
- thought: Now that my Unihertz Jelly 2 is dead,
look into getting a replacement dumb phone
- unihertz jelly 2 root guide:
https://www.reddit.com/r/UnihertzJelly2/wiki/index/root/
- read: https://beautifulracket.com/appendix/why-i-no-longer-contribute-to-racket.html
- read: https://felleisen.org/matthias/Thoughts/Apology.html
- thought: PL people are wack
- idea: write this post
- thought: matt might suggested this blog: https://blog.regehr.org/
Thoughts
This is a great organization method for several reasons:1. I can easily search for all my todos, thoughts, ideas, etc.
2. I can easily jump between days, or find a specific day
3. I'm not limited by any sort of organizational structure
4. Very little effort to maintain
5. Flexible af
My workflow isn't exactly feature-hungry, so this setup works nicely for me. Although, there are some notable drawbacks. Mainly, it's impossible to create diagrams or anything visual. Also, It's hard to keep everything synched up across different devices (this isn't too big of a deal for me tho, see {3}).
Beyond One Text File
If I want to make a continuous note for a specific topic, I'll create a file in theabstract
notes directory:
.
|-- main.md
|-- abstract
|-- topic.md
|-- othertopic.md
|-- etc.md
abstract
folder. Managing uni-specific work is a completely separate ball-game from managing general notes {4}.
Implementation Details
Because I use Linux as my operating system and Neovim as my text editor, the implementation of my setup is non-trivial and worth discussing. Technical details incoming.I wanted to be able to pop open a new window with my main notes file with a single keystroke. So, I mapped
super + o
in my sxhkd config to open my terminal emulator, neovim, and execute a few commands within neovim.
super + {o}
alacritty -e
nvim /path/to/daily -c
"execute 'normal G'
| set path+=/path/to/abstract
| Goyo "
normal G
emulates the user pressing G
- e.g., in vim, jumping to the bottom of the file. Setting the path
variable to /path/to/abstract
allows me to hyperlink to other notes files in the abstract
folder. And, Goyo is a plugin for distraction-free writing in vim (see the project's Github repo!)
With my current Vim configuration, my Daily notes file looks like this:
To generate today's date with a simple keybind, I use UltiSnips. My
.config/nvim/markdown.snippets
file looks like this:
snippet date "markdown add date" b
### `date +%y-%m-%d`
- $0
endsnippet
To search for and open notes files in the
abstract
folder, I configured rofi as my fuzzy-search util:
super + {ctrl} + {o}
// search for file and pass chosen to "cdir"
find /path/to/abstract -follow
| grep -E '.md$'
| rofi -dmenu
| read chosen
// open chosen file
&& alacritty -e nvim /path/to/abstract/$chosen -c
"Goyo
| set path+=/path/to/abstract"
To search through my non-main-file notes manually, I mapped
super + {shift} + {o}
to open nvimtree instead of Goyo:
super + {shift} + {o}
alacritty -e
nvim /path/to/daily -c
"execute 'normal G'
| NvimTreeOpen /path/to/abstract
| set path+=/path/to/abstract"
Notes
{1} Obsidian is cool. It has great features. It's just Obsidian isn't perfect, and I'm very picky. Obsidian is not open source, requires a license to use as of 2023, and subjects users to a lengthy terms of service. Also, if I'm going to live out of a text file, I want the text editor I use to be fully customizable, y'know?{2} I back up all my notes in a high-quality SSD. This SSD has a git repository configured to pull and sync with my notes (as well as other stuff, like my programming projects). I have a script to do this automatically when the SSD is plugged into my computer and mounted.
{3} I usually carry a dumbphone with virtually no productivity capability, so my phone isn't important to my workflow. It's not necessary for me to sync my notes to my phone (or any other device besides my backup server, for that matter). Although, for some people, I'd imagine this sort of feature would be important.
{4} I'll write about my full university notes setup eventually. Here's my organizational structure for the first two years of my computer science and mathematics degree:
university
|-- bachelor-1
| |-- semester-1
| | |-- cell-biology-and-genetics
| | |-- college-writing
| | |-- data-science-with-python
| | |-- discrete-mathematics
| | |-- geography-ireland
| | |-- calculus-1
| | `-- music-in-ireland
| |-- semester-2
| | |-- cybersecurity-foundations
| | |-- discrete-structures
| | |-- fundies-1
| | |-- intro-cs-research
| | `-- multivariable-calculus
| `-- summer-1
| `-- fundies-2
`-- bachelor-2
|-- semester-1
| |-- algorithms
| |-- cybersecurity-research-seminar
| |-- logic-and-computation
| `-- object-oriented-design
`-- semester-2
|-- computer-systems
|-- linear-algebra
|-- number-theory
|-- research-seminar
`-- security-and-privacy
current-semester -> semester-2
current-semester
in my home directory to, well, the directory of my current semester. My structure is loosly based off this blog post.
Interesting Related Stuff
• How I'm able to take notes in mathematics lectures using LaTeX and Vim• Johnny Decimal Project Organizaton System
• In Defense of Obsidian's Graph View
← 2023