My journey to Emacs and org-mode

If you're like me, you've been prey of the productivity porn, a beautiful form of time wastage that somehow feels like it's not procrastination while, clearly, being.

Because you can rationalize it.

I'm being unproductive now because it'll make me more productive later. You know, XKCD #1205 and all.

Well this is of course false. But I'm not here to tell you that you shouldn't do it. I'm here to tell you that I've done it and emerged on the other side a better person.

Or at least a person that now uses Emacs.

Gasp!

Would you like to know more? Choose your own adventure. Keep reading to get the scenic route. Or skip to the end to see what's my current setup.

For a detailed explanation on how to reproduce my setup, this is not the right post. I'll write another later with that. See the index to find it (or wait until I publish it!).

In the Beginning - Cellulose

I've always taken notes while working. Mostly unorganized bits of paper, one-offs. Enough to take a quick note of what was discussed in a meeting or a call. Or to lay a quick checklists of things to do today.

It was a disaster of course. I'd just lose them immediately in the sea of kipple and be unable to recall what, when and how anything ever.

To correct that I went online and learned about all the fancy methods. One stuck: bullet journaling.

For those unaware: bullet journaling is set of strategies to track the past, present and future on paper. On a fancy $29, leather-bound, subtly-off-white, dotted A5 notebook kind of paper, usually.

But I digress.

It works. Essentially you write a page per month. And a page per week, or day, depending on how verbose you are. You plan your months and weeks. And every day you keep track of what you do, you set your daily tasks with nice checkboxes, carry them over to the next day if you haven't finished them, etc.

You always have the up-to-date set of things to do today. And you pick tasks from the days before you haven't finished (again, by carrying forward), or from your monthly plan, or from whatever thing you've crafted yourself, like project planning pages, or anything. At the end of the day, this is a blank notebook. You figure it out.

But I never figured it out. I'm a digital native, plus a complete disaster when it comes to handwriting and being neat in general. This was… workable but it felt wrong. It felt half-the-weeks-are-empty-and-the-rest-are-unreadable-blobs-of-ink type of wrong.

So it didn't stick.

Let's go digital - Notion

After much mucking around with disorganized .md files that would be invariably lost in the next computer migration, I landed on Notion.

It was a breath of fresh air. Native markdown-ish enough, lots of embeds, very visually appealing. I got it in my phone, I hooked up my n8n automations. I lived there.

And I even reproduced the Bullet Journal experience. A Daily Notes database with a good template allowed me to essentially do the lay-down-today's-work and carry-over-what's-left-from-yesterday kind of dance every day.

That, plus I could have well structured pages for my projects, better task lists with Kanban boards for larger things, the lot.

But it was slow. Clunky. And my Notion workspace grew and grew without bounds. Not the system's fault, mind. My fault. But I started to feel like I needed two tools.

Or more, like, three tools.

I needed a knowledge base. Somewhere were to store information long-term. Information on projects (key people, deliverables, whatever). Where to make lists (of my recipes, interesting products, car maintenance). For that, Notion was working just fine. A bit tricky to manage, but good enough.

I also needed a collaboration tool. Tasks, shared documents, project management. For one of my businesses we use ClickUp. It's massive and I hate it but it works. It's a good collab tool. Notion is also good for this: the collaboration features are pretty decent.

And finally I needed a bullet journaling tool. I needed to be able to have a daily dump place where to jot down the list of 5-10 things I wanted to do today, be able to see the previous days to copy-paste things over, and just keep the thing neat.

And I didn't have anything for that one. Notion wasn't it.

Markdown is my lord and savior - Obsidian

Then I landed in Obsidian big time. And I bought into it. I was going to, finally, take the advice from all these productivity gurus I had been listening to for years. I was building my second brain.

I created my vault. Added way too many plug-ins. Automatic syncing of my Kindle highlights. Of my Omnivore (RIP) snippets. Wrote my own styles and functions to automate things around.

I have to admit it: it sort of worked. But something didn't feel right. It was too heavy, and I knew it was my fault. I was adding too many bits and pieces. But I couldn't help myself.

Also, I tried to fully replace Notion with this. Fully. And I'm afraid my mind doesn't work as a graph. I need my folders. I had my folders, but felt like a tacked-on thing. Obsidian fighted me, dragged me to the unstructured world of a bunch of markdown files in a huge directory.

And the worst part is that what I needed most, which was a replacement for my bullet journal daily tasks with carryover thing, wasn't great there. It was just OK. But not a first class citizen.

I can't really explain why I stopped using it. But I just did. Maybe it was also the closed-sourcedness? I mean Notion was too, and here at least I could see my Markdown files just there. But something didn't work for me. And I didn't make it a conscious decision. I just found myself some day having reverted back to a bunch of scattered papers on my desk.

And I knew I needed to continue my journey in wasting time.

I need the basics. Just daily notes - Logseq

If you start looking for Obsidian open-source alternative you'll inevitably find Logseq. It's power-usery to say the least. In the good sense.

It's an outliner. This means that you're not writing text. You're writing bullet lists with arbitrary nesting. And just like with Obsidian (or Roam, or any one of these) you link things together by referring to other pages or even (I think?) other nodes. Pretty neat.

And they're very much daily-note-first. You in fact get a daily note every day. And you just type whatever there.

Holy F, it worked. It worked so well. It was so simple and turns out I just needed that: simplicity. It became my daily driver. I'd get up, open Logseq, I'd be already in my daily note, I'd type a few words about how I was feeling and what the day looked like, then copied outstanding tasks from yesterday, added a few new ones and started working.

If I had to note things down, back to Logseq, already in my today note, I'd just add a "Notes" node and type away.

The outliner concept was just perfect.

But Logseq isn't perfect. Not at all. As the honeymoon phase started to fade, a few things became clear.

The ergonomics are… bad. They just are. It's not that it doesn't have vim mode (it doesn't). It's just that editing is plainly uncomfortable. You'd drag-select and sometimes get nodes, sometimes text. Customizing macros or commands was either impossible or horribly complex. And it wasn't the Clojure. I know Clojure, my dudes.

And an outliner was great for my bullet journaling. But not much else, really. Sometimes I wanted to write some prose on some particular thing. It was fighting me.

But what broke the camel's back was the development roadmap. See, Logseq, even if it's an outliner, stores things in Markdown, which is great. But of course when your database is a bunch of plain text files, and you try to do wizardry on that data (on, essentially, a bunch of scattered frontmatter), things get heavy.

Heavy, like Obsidian heavy.

So the team behind Logseq is pushing forward a new back-end based around a combination of Markdown files and SQLite. And they say the legacy Markdown-only will be supported forever, just without the new fancy features.

I don't believe it. I just don't.

I don't trust the future of this application. So I decided I wasn't going to keep investing my time in it.

Time to find something.

And here we are - Writing this in Emacs

I was lost. Needed guidance. And landed in the soft and supple bosom of Richard Stallman.

Figuratively of course.

It started with a simple question to our good friend GPT-5. Can I get a good outliner-style bullet-journal workflow in Emacs with Org mode?

I genuinely didn't know. See, I'm a vimmer. I've always been. I've always joked that Stallman's beast's name is a self-referencing acronym for EMACS Makes A Computer Slow.

Tips my fedora.

Well turns out GPT-5 answered with something along the lines of duh that's literally what org-mode does, you dum-dum. And it is.

Org-mode is a document format for hierarchical (read, outline-ish) note taking (read, daily notes) and planning (read, to-do lists) that is very much native to Emacs. And with packages like org-journal (daily notes) and org-roam (connected notes) you essentially get exactly what I need plus a plethora of other packages and snippets of beautiful elisp for your endless tinkerer enjoyment.

My current setup

I'll publish a full step-by-step, rationale-by-rationale guide on how to reproduce my setup. But, in short:

  • I started with Doom Emacs. It's just a distribution, that is, a bunch of settings and vetted extensions ready for you to pick and choose. It's vim mode by default, which fits me perfectly. And makes it trivial to configure org-mode.
  • I set up org-journal to create daily notes and to carry over the previous day's unfinished ones. Tweaking this to my liking involved heavy doses of elisp. It was glorious.

That's essentially it. I open Emacs, press SPACE n j j and I'm dropped in my daily note, with yesterday's unfinished tasks already there. And I start working. Every time I do SPACE n j j a timestamp gets added to my "Day log" node to make arbitrary notes.

C-p and C-n allows me to go the previous/next day. SPACE n j c manually triggers the carry-forward code if I ever need it. I've been able to customize the tasks statuses and I can S-right to cycle them.

Turns out Emacs is pretty great. I mean, with evil-mode it's just Vim with more things and configured with a lisp instead of the awful undebuggable lua. Writing functions is just as easy as opening my config.el, writing some elisp and eval-ing it with C-x C-e. Then I reload with SPACE h r r and have my new functions and bindings available for me to use.

It's… just. I'm basically amazed that it took me so long. How has my emacs phase been disconnected by 15 years from my tweak-the-CFLAGS-and-hand-compile-Gentoo phase? It feels wrong.

I would have been so productive if I had discovered Emacs back then.

Or at least, I would have wasted my time so productively.

Anyway, that's the post. Hope you enjoyed my rant. As I said, full guide later.