
For a while, I’ve wanted to create a simple note-taking system in Emacs. Inspired by the Denote package, I wanted to create something that
- Used only native Emacs functionality (but sweetened by other packages)
- Created uniform, timestamped notes
That’s it! Nothing too complicated.
Finally, I managed to get this done. But then, even after having the system, I wasn’t using it. Below, I’ll talk about why I wanted to create a system, why I didn’t use it, and how I started using it.
Why create a note system?
I have often found it difficult to organize the files on my computer. When I consider all the various types of files I write, it’s no wonder they can get confusing:
- Notes about books I’m reading.
- Random diary entries.
- Ideas for future projects.
- Emails to friends and coworkers.
- Critiques for writing group.
- Original fiction.
- Blog posts.
- Scripts for YouTube videos.
- And more.
And these are just plain text files.
For a while, I managed to do quite while with three different directories:
- stories
- notes
- videos
- blog posts
So I created these folders and started storing files in them. Notice, these categories fail to capture a lot of the above use cases. I started using the “notes” directory for anything that was not a story, video, or blog post. Fair enough.
But soon, I was only using the stories
folder and still saving random files to various other locations in my file system.
I think the reason for this was simple. There was still some overlap in categorization. For example, I’d start writing a blog post, then decide to turn it into a video script and scrap the post. This meant I had a video script in my blog post directory. Not a big deal, but sort of inefficient and lazy; and, down the road, this makes it more difficult to find something if you need to reference it later—as I often do.
So…Why have separate directories at all? I needed a singular destination for everything.
Everything is a note
I decided to stop with the multiple directories and just start putting everything in the notes
directory. This opened up the whole system. Now, I had one singular destination to create new files, link them together as needed, and reference them later if necessary.
Of course, “notes” is an arbitrary destination. The directory could be called everything
, deep_thoughts
, files
, etc.
Now, the next task was to create some functionality for managing these notes. The system relies heavily upon Org mode hyperlinks, so I needed some functions for managing and viewing linkages, in addition to the basic functions for creating new notes in a uniform fashion using timestamps as a unique identifier (to avoid duplicates).
I needed a few simple things, some functions to do the following:
- Create new notes in the chosen directory.
- Create a uniform note from an existing file located somewhere else in my file system (like, ~/Desktop, ~/Downloads, or ~/Pictures, etc.).
- Create new note from highlighted text in buffer (like in Obsidian).
- Mark files that have a backlink.
- List files that link to current file (if any).
I now have the system written and documented, and I will be giving a demonstration in an upcoming video. The reason I chose to build my own system instead of using an existing package was two-fold:
- I find it more difficult learning a program someone else wrote while simultaneously figuring out how I want to use it.
- Minimalism. I think it’s always better to create a smaller set of functions based solely on your individual needs.
When it comes to documenting your important thoughts, creative insights, systems, and projects, you’ll want something robust—and there are plenty of great programs out there that can handle it—, but also something lightweight that you can tweak on the fly. The live text-editing environment of Emacs is ideal for meeting those particular demands.
So, my advice for the day is to just take a deep breath, relax, and make everything a note. And, be sure to subscribe to my newsletter.
Leave a Reply