Building a second brain with plain text
I’ve used Notion, Obsidian, Logseq, and probably three other things I can’t remember. Every six months I’d migrate. The last time I migrated, I went the other direction: plain Markdown files in a Git repo, a folder structure copied from a friend’s, and a small Go CLI for the parts that need to be automated.
The layout
~/notes
├── 0-inbox
├── 1-projects
│ ├── ko-wal-ski
│ ├── otel-sidecar
│ └── ...
├── 2-areas
│ ├── engineering
│ ├── writing
│ ├── home
│ └── health
├── 3-resources
│ ├── go
│ ├── distributed-systems
│ └── ...
├── 4-archives
└── daily
└── 2026-06-09.md
PARA, mostly, with a daily/ directory for journaling. The numbers in the
folder names are not strictly necessary but they keep things ordered.
The CLI
Three commands, written in a weekend, replaced four SaaS features:
notes new "Title here" # creates a stub in 0-inbox
notes review # walks the inbox, prompts to triage
notes today # opens today's daily note
notes new is a 12-line script that creates a file with a YAML frontmatter
and a sensible template. notes review is the only interesting one — it
walks the inbox, reads the first heading, and asks me where it should go.
Twenty seconds a day, and the inbox never has more than ten items.
What I gave up
- Backlinks. Obsidian’s killer feature for me was the graph view. I don’t
miss it. I miss it once a quarter, then I find what I need with
grep. - Mobile editing. I do 95% of my writing on a laptop. The remaining 5%
is on my phone, and the friction of
git pullover cellular is real but tolerable. - Pretty formatting. Everything is monospace now. Tables are painful. But I write more because writing is fast.
What I gained
- It will outlive the company. Every tool I used before this has either changed its pricing, changed its file format, or shut down. Plain text in Git will be readable in fifty years.
- It costs nothing. No subscription, no sync fees, no “pro” tier.
- I can script it. The whole point of having a CLI is that I can add
features in an afternoon. The last one I added was
notes review --tag retroto filter by frontmatter tag.