My perfectly imperfect note-taking system for ML papers
A note-taking system based on Obsidian and Zotero
My approach to reading ML papers had been a constant frustration. Especially during my Ph.D., I tried different systems, but it mostly was a mix of “just remember the paper contents“, “maybe I’ll find this one relevant paper again after an hour of googling”, and “copy-paste the references from my old paper”.
It doesn’t help that ML research moves at such a high velocity.
It was only when I left academia and became a self-employed writer that I finally found a note-taking approach that worked for me. The secret sauce: A system that encourages imperfection.
I’ve read a couple of approaches to note-taking, but none was a 100% fit. However, it was super helpful to see how other people take notes to figure out my own system. I want to share my approach with you, so you can pick the pieces that resonate with you.
the note-taking software I use
Let’s get right to it. On a high level, my software stack is:
Firefox → Zotero → Obsidian
Firefox is for discovering and reading papers. Zotero is the middleman that organizes my references. Obsidian is where I take notes. All three are glued together through plugins.
Here is an example of what the process looks like:
I’m on Twitter and discover a relevant paper. If I have time, I might read it immediately, or save it for later.
I start reading the paper in Firefox. Sometimes I download it.
I might skip the paper, but if there’s any value in it for me, I go to the next step.
To get the reference into Zotero, I use the “Save to Zotero” plugin for Firefox. It’s one click and the paper is automatically cataloged. If a PDF is available it’s also saved into Zotero. Works like magic.
In Zotero, the Better BibTeX plugin is running and automatically adds the new paper to an exported bib file which contains all my references. This happens automatically, so I only open Zotero when I have to correct some information.
The bib file is automatically read by an Obsidian plugin called “Citations”, a plugin that helps with creating literature notes.
That means to take notes on the paper, I open Obsidian and press “Ctrl-Shift-O”. This shortcut opens my list of papers. I quick-search and select the current paper which opens a note for the paper with meta-information like title and author already filled out.
Then I usually split my screen, have Obsidian on the left, and the paper on the right. Then I read or skim the paper and write down anything that I need for a project or that I find interesting. Also meta stuff like how the paper connects to my projects and how I judge the quality of the paper.
I can reference the literature note in other notes as well.
my rules for writing literature notes
Besides software one needs an approach to writing notes. I’ve developed a few “rules” for myself on how to take notes (not super rigid though). These rules are designed to take perfectionism out of my note-taking process.
My “rules”:
Only use bullet points: It’s a bit ugly and chaotic, but my literature notes are bullet points only. No paragraphs, no headings, and no abstract/intro whatsoever. On this, I’m very strict. Without this rule, I would mix up note-taking and “writing”. And the process is not about writing, it’s about understanding the paper and extracting value from it. As quickly as possible. I try to write full sentences, sometimes I will add formulas and copy-pasted figures, but otherwise, it’s just stream-of-thought jotted down. If my note isn’t a bit messy afterward, I did something wrong.
Length doesn’t matter: A literature note can be 1 bullet point or 100. It doesn’t matter. A note saying “This paper was irrelevant for the SHAP book because they focus on toy data” might be worth a lot when I revisit the paper years later.
Describe the reading status: I have a field called “reading status” in each literature note where I write down how deeply I’ve read a paper. It’s for record-keeping, but it’s also symbolic: Writing “just skimmed the paper” gives me a sense of closure.
No copy-pasting: Copy-pasting from the paper doesn’t work for me. I have to write it in my own words. Helps against clutter and improves the chances that I understand the note years later. This is a general rule for note-taking that I follow. It’s the difference between nodding along without actual understanding versus forcing yourself to process it.
Describe the context: Another piece of information I track is the context of why I read the paper. The context field keeps me focused and when I revisit the literature note I know what lens I used when reading the paper.
My note-taking system isn’t perfect but it works well for me. And maybe you’ll find bits and pieces of this process that are worth trying out yourself!
Great post. Would love to see how you then use this system to compile notes for paper writing/index them for later referencing
Nice pipeline! Me doing the same, except using DOI to manually fetch paper's metadata in Zotero! I also incorporate `git` for version control.
I wonder what other Obsidian plugins do you use?