The workflow behind my 637-day journaling streak
I'm addicted to text files and Vim.
I've written a journal entry every single day since January 1, 2024, and I'm still going in the "big 2025" (or whatever the kids say). They are all .txt files, which is pretty wonderful, because I can do a lot of cool hacker-type things with text files:
Reading through them
I have this nice browse function defined in my ~/.zshrc:
browse() {
cd ~/Documents/journalEntries/ || return
vim 2024.* 2025.* \
-c "nnoremap ] :n<CR>" \
-c "nnoremap [ :N<CR>"
}
It makes my life wonderful. I just run browse in any directory, and then:
]: forward 1 entry.[: backward 1 entry.n]: forwardnentries.n[: backwardnentries.:e yyyy.mm.dd.txt: readyyyy.mm.dd's entry:first: read2024.01.01.txt:last: read latest entry:x: exit browsing
Searching through them
I also have search defined in my ~/.zshrc:
search() {
grep -rni --color=always "$*" ~/Documents/journalEntries \
| sed "s|$HOME/Documents/journalEntries/||" \
| less -R
}
So when I want to find the last time I got a haircut, hung out with friend John Doe, or listened to Dua Lipa, I can run:
search haircut
search John Doe
search Dua Lipa
and get highlighted results instantly. I bet your journaling app can't do that! But there are cooler thingsāfor example, I've written a Python script[1] that lets me visualize how often I mention a certain search term over time. I can specify a search term and get this cool graph as output:
-
Query:
minecraft. I quit Minecraft in early July 2025.
-
Query:
london. Can you guess when I went on a family trip to London?
-
Query:
pickleball. I should play moreāI haven't since March!
It's so cool that I can make graphs like that.
Quickly editing them
The main reason I've been able to keep a 637-day journaling streak is not because of my willpower. It's because the friction is almost zero: I can edit my journal within 2s any time I'm on my computer[2], and I can write my journal entries using Vim.
I've used Vim so much now that if I try to write in a Google Doc like a normal, sane human, I end up writing gibberish all over the page trying to use Vim keybinds. I am addicted to using Vim, and that's not necessarily a bad thing, because I feel that I'm much more productive. But now I can't not use Vim. Sylvan Franklin said it best:
When you learn Vim, it's kind of the same thing as getting married or having a kid. It's really awesome and life-changing, but once it happens, you can't really go back to how it was before. So if you try to switch to something elseālike, say, not having a kidāyou just can't do it.[3]
I guess I'm stuck with plaintext files for journaling. No fancy apps for me. But I'm very happy with my setup. Only 363 more days and then I can celebrate 1000 consecutive days: a four-digit streak milestone!
With the help of ChatGPT to write all the matplotlib boilerplate. ā©ļø
<CMD> <SPACE> <t><e><r><m> <ENTER> <e><d><j> <ENTER>ā©ļølink: Sylvan Franklin: Replacing google docs with vim ā©ļø