My Path to Org Mode
This post is part of the Building My BASB in Emacs - 2023 Capstone Report series.
Table of Contents
|[Personal Knowledge Management]
Since this isn’t my first attempt at working with a PKM tool, I thought I would kick off this series by recapping the tools I’ve used thus far.
Pre-2020… Org to Other Tools to Org Again
My first attempt at using org mode was with a vanilla installation of emacs many many years ago… but it was a somewhat lackluster experience. In addition to having no idea what I was doing (and no community to ask for help), I insisted on using Org headlines as if Org was a pure outliner (with no folded text underneath headlines). A big mistake. That led to a few customizations to the
RET key functions early on that hampered growing any functionality over time. Short term gains, long term pains.
Following that I bounced through a number of other tools. I used Dave Winer’s Little Outliner (called Fargo at the time, if memory serves), a simple pile of Markdown Files (edited with Atom, when that editor was the bees knees), and even just Google Drive. Those all had their trade-offs, be it start times, connectivity issues, search-ability, or my own trust issues with how the files were kept.
By the time I decided to give Org mode another try in 2019, Spacemacs had become popular, and was a tremendous improvement for me. The pop up keys were magical. Learning the vim keys was something I’d always wanted to do and was actually pretty fun. I had a journaling habit that solidified regular use, and things were humming along OK, even on my Chromebook.
Sure, updates were… opaque. And I didn’t understand why things would break from time to time… And trying to learn what org could do, and then map it to the Spacemacs org layer was a bit of a maze… but it wasn’t too bad all in all.
So, I was initially planning to keep using Org mode for my first BASB course (Cohort 10 in 2020).
However, once the course began, I realized there would be a lot I would have to figure out about emacs that had nothing to do with PARA or CODE or any of the other core concepts being taught… mostly related to getting info into and out of the system. Mobile sync was challenging. Capturing from different info sources would require a lot of thought for each flow. I would have to keep grokking more and more elisp as I went.
The 40 year old editor was fighting me instead of helping me.
So, I hopped off of Emacs and went with the course’s default of Evernote. This was a great move. I unquestionably understood the concepts more deeply by using the tool they were built around. There was also the benefit of a slicker, web-based app since I happened to be trapped with only a Chromebook at the time. The Stylus extension let me at least change the color of the web app, and plenty of the tools were good enough, even if Evernote wasn’t programmable in any real sense.
… but I could never shake the feeling that I was afraid of the files not being where I could see them on my hard drive. Like with pure Google Docs, internet connectivity occasionally proved to be a challenge. And having to look up a dynamic daily prompt elsewhere to copy and paste it into my morning journal got annoying.
I wanted BASB to be more.
Then I heard about Obsidian, an up and coming tool that promised to let me see and keep my files, and do a bunch more than Evernote could.
Obsidian proved to be a great choice, and the program has only gotten better with time. Journaling was easy. The community was great. I started following voices like Eleanor Konick and Nick Milo. I was introduced to (and then rejected) Zettelkasten as an organizing framework. It was a really fun time to get involved.
But…. as I dug more and more into the tool I realized… I’m really an outliner kind of person at heart. It’s how I think, how I like features to be arranged, and how I like to navigate. There were a few Obsidian plugins to help make bulleted outlines more manageable, but the keyboard shortcuts did unexpected things sometimes, the display didn’t work well with certain themes, tiny plugins would conflict with each other… ultimately it felt a bit too uncoordinated for how I like to work. Even zooming into a section of a document outline was implemented as a plugin that…. usually worked. I didn’t like the idea that such key components of how I engaged with my ideas were dependent on some little plugins that might stop working any day in this rapidly developing product.
So while it was thrilling watching the plugin ecosystem spring up, the frustration of having to continually rework them all as the app and API changed grew and grew. If I’d come to Obsidian a year or two later I might still be on it, but it just didn’t quite fit. The change was coming from outside of me, and it was hard to trust.
I also found writing my own plugins to be incredibly frustrating. I could make a few things work with some very explicit examples, but it seemed harder than it should’ve been. And building on top of helper plugins led to even more rapid-change challenges.
So I went in search of something where I wouldn’t be quite so plugin dependent.
Roam caught my eye for about half a minute, but the die hard fans turned me off of the approach. Anything that proudly called itself a cult was not for me. And again, web based, even in the fledgling mobile version.
But then came LogSeq. A local-first, open source version of Roam. Some have quibbled with how the project is governed, which is fair, but I felt much more comfortable building on it than the other options. And hey look! It supports org files as well as markdown! What a fun throwback!
All was well at first. It was nice to have a proper outliner at hand. It’s a more minimal experience than in Obsidian, but it also covered pretty much all the bases.
… but then I noticed the performance started to really suck on long documents. I had to fold and unfold different headings just to move around efficiently. The query language was good, but I had a few cases for advanced queries where the documentation was absolutely non-existent. Once again, it felt like I was fighting the tool rather than working with it.
I hit the final straw when I couldn’t for the life of me figure out how to display my “prompt of the day” in my morning journal from a list. It shouldn’t have been that hard. I had it in a cloud function. I had it in raw JS. I had it in an array. There were options! But again I just couldn’t figure out how to get through all the DOM layers to make it display as part of my morning template.
Then, two things happened:
- A few fortuitous blog posts came across my Mastodon feed talking about how they used org mode in 2023 (thanks Nick!)
- I found System Crafters doing the immeasurably valuable work of intelligibly walking through building an emacs config Emacs from scratch into something more like Spacemacs
So, I decided it was time to return to the where I came from.
In a sea of new tools, it was time again to bet on the one that’s been around the longest.
Building My BASB in Emacs - 2023 Capstone Report series
- My Path to Org Mode
- Should You Choose Org Mode?
- What Makes Org Mode Hard for PKM
- My BASB Implementation in Org Mode v2023-06
- Things Left Unimplemented… and I'm Unsure if I Ever Will