As described in My experience with a Zettelkasten, I tried Logseq and Obsidian for a while, but changed from one to the other all the time. This wasted my time and I was NOT getting things done. Eventually I added Emacs to the list because its clear advantages
- In Emacs you can adjust the workflow as you want, you can even easily write your own functionalities (this of course requires knowing Elisp).
- Emacs integrates everything you could ever need (except browsing) in one environment:
- Take notes,
- Relate notes with code and files in the disk,
- Use Magit for Version Control,
- Work on Markdown files (to maintain this blog),
- Edit the blog’s configuration files (to maintain this blog),
- Manage projects, track the time in each task, export the notes to whatever format I want… and Org-mode features in general,
- RSS Feed managing,
- And of course can be extended to soo much more (these are just my use cases).
- Emacs is a solid piece of free software with a huge community and the Free Software Foundation behind it.
- It is keyboard centered so you can work faster than using the mouse.
But still I felt the need for something more visual in front of me, like an easily accessible Graph View, formatted text, and Journal pages to record things I was doing and seeing without a place to write them down. All of that can be done in Emacs, but I would have to learn Elisp. For these reasons I choose to use Logseq for note taking as it comes with most of that functions out of the box.
Managing the notes with Denote
Denote is an Emacs package maintained by Prot. It is based in simple functions, which makes it quite powerful and easily extensible. Besides, the notes are named following a scheme which makes possible to quickly find them even with a file explorer (see more in the corresponding section of its documentation).
use-package my current Denote’s configuration is the following (see complete Emacs
configuration at my git
This allows me to see existing notes and create new ones
C-c n n, link them
C-c n l, and see the
C-c n b with minimum distraction.
A tip: if you write the name of a note with
C-c n n and it does not exists, you normally will hit enter
to create it. But this will ask you again for the name you want to give to the note. By typing
will autocomplete the name of the new note with the one you introduced in the first moment.
Searching for words in the body of the notes
It is quite important to be able to search all your notes for some terms. For global search inside the content of the notes there are many possibilities.
grepfrom an external terminal
M-x grep-findfrom inside Emacs
- From Dired, use
But what I really like to use, and works perfectly, is
M-x consult-grep. This of course requires the
consult package being installed. The following is the configuration I currently have for
Consult, but one
more time you can check the complete configuration in my git
repository, and also check the
corresponding section of the
It is important to be able to capture information, and of course this is an area where Org-mode excels. In my
configuration I have org-capture bound to
C-c c, and it directly opens the capture template, which is quite
frictionless to capture information. Of course this can be combined with email and many other stuffs, but
things can get messy very quickly in that direction, so I prefer to keep it simple.
organizer-file is a variable set to the name of the note where the captured headlines will go.
Although Emacs has everything one could wish and one needs for carrying out almost any activity on a computer, it kind of lacks that visual and modern design which sometimes attracts me so much. Nor photos neither equations are displayed, and although efficient for editing, when thinking and searching for something it helps me better to be mouse dependent, it’s more sensorial to me. Also, if used for everything, with time thing can get messed up very quickly in the configuration files.
Nowadays I use Logseq for taking the notes and writing into the Journal page all the interesting info I found online, marked with tags that will probably make me find them again in the future. It has been working great for retrieving information. Some capture I do it here, and some other in Emacs, it all depends on which I am at the time.
On the other hand, Emacs is reserved for maintaining projects which need too much headlines and details. Wen I launch 100 computations in a cluster as part of research job, all of them get tracked in the corresponding project page, and can efficiently hide and show heading levels, track time, take notes, relate to others, and appear in the custom agenda views to get up to date with their status. This is extremely useful, and if done in Logseq would end up in extremely large pages with lots of information at the same time.
Capturing information in journals
I found that spending time “working” in the PKM system tends to be counterproductive. Just capturing
a few things during the day, and then reorganizing them at some point in the future is better. In this regard Emacs can be extremely helpful with
refile, since all captured entries will be in the specified file of your choice. With Logseq the alternative is to tag as
#inbox (for example) captures that need to be reviewed in the future.
I also keep a minimalist Bullet Journal for written thoughts, which I enjoy more than typing on the
keyboard. Something very similar to a bullet journal can be set up seamlessly with
Denote, but for me there was some friction. Every time I needed to capture something, I had to turn on the PC if it was turned off, and digital stuffs just don’t hit you as hard as they do when they are written on paper.
However, if this doesn’t affect you and keeping a digital-only journal suits your needs and tastes, Prot has provided me with an improved function that he will integrate into the next update of the Denote manual, which allows you to create a daily note, exactly the same as Logseq Journals or a Bullet Journal. The function I refer to is
my-denote-journal, and can be found in this section of the Denote manual. The modified version here below, which add the ability to check if today’s note already exists and if so not to create a new one, but open the existing one is:
In my case, because I use
use-package for handling installed packages,
denote had to be called before the use of this function for it to correctly work, because
use-package does not loaded Denote until it is required. To fix this it is necessary to include
:demand t when using
use-package to configure Denote.
Regarding the constant change of apps
Over time I’ve come to understand that the app we use doesn’t really matter, and that switching from one to another can be very counterproductive. This video on YouTube or Invidious contains an analysis of this issue, and you may find it interesting in case you have found yourself, like me, switching from one to the other.