Abstract
I use Emacs Org-mode extensively to stay on top of the things in my life. I call this my exobrain because I treat it as an external augmentation of my mental abilities. In this article, I explain the various features of Org-mode that I'm using, how I arrange my files, and how I fit it together into a complete system that works for me.
I feel like I have a lot on my plate. I want to have it all: a well maintained home, a successful career, health, a happy family, and a million other small things. I can't keep track of everything in my head, and it's easy for important things to be forgotten. The amount of stuff I need to track has long ago outgrown what I can write on a single piece of paper. That's why I need a more complex system. I call this my exobrain.
The concept of an exobrain is fairly simple. Take your brain and augment it with some external technology. But I don't mean this in terms of neural implants and AI nonsense. What I mean is much more along the lines of using a pen and paper (external technology) to write down your shopping list (augment your brain's memory). Many of my problems involve juggling what I need to get done on any given day, so there are a lot of calendars and to-do lists involved.
The systems that I use for staying organized have gone through a few iterations over the years. I'd like to share the current iteration.
Principles and Ideals
First I want to discuss the principles and ideals which have lead me to this iteration of my exobrain. Principles should be things that are generally true and slow to change. This might include some principles that depend on how my normal brain works or the type of work I do, so just because these principles are true for me it doesn't necessarily mean that they are true for you.
The exobrain should be good at remembering things
I haven't actually read Getting Things Done by David Allen (I probably should), but I once heard him say in an interview that "Your mind is for having ideas, not holding them."
Our brains aren't very good at holding information. We forget things all the time. And when we don't forget them, we generate anxiety trying to make sure we remember all of the important things we need to. Remembering things is a key thing that our exobrain can help us with.
But it isn't enough for the exobrain to just have things written down. That brings us to our second principle.
The exobrain needs to surface information when it becomes relevant
More than just remembering things, the exobrain needs to be able to remind you of things. If you can trust your exobrain to remember things for you, and bring them up at the appropriate moment, then you can let go, and free up your mind for the creative work it is actually good at.
Let's take a shopping list as an example. In our house, whenever we realize we need to buy something, we write it down on a dedicated piece of paper that lives on the fridge. As a habit, when we go shopping, we take the list off the fridge with us. The combination of writing on the paper, and the habit of bringing the paper to the shops, forms the exobrain system that automatically surfaces the memory of needing to buy onions and paprika when we are in the shops. After writing it down, we don't need to use our regular brains to remember it at all.
Automate whatever you can
The point of an exobrain isn't to have an exobrain. The point is to get stuff done. The point is to be less stressed. The point is to keep track of more things than you can keep in your head.
As far as possible, the exobrain itself shouldn't need maintenance. This is where software can often shine, since it can expand how much you can set up once and not need to manually updating. This needs to be done mindfully though, since software can create its own maintenance issues.
Digital and analogue systems both have their place
I'm a computer person. I tend to use the computer as a default. Sometimes appropriately, and sometimes past the point where it makes sense. It's important to remember that analogue technologies have their place too, especially paper.
Digital systems are they excellent when it comes to making copies (perhaps automatically syncing between places) and automation. Digital systems also excel when you want to keep updating notes. A pencil and eraser only let you update so many times before the paper is a mess.
Pen and paper on the other hand are great for portability, and are much better for social situations. If you're taking notes while talking to someone, it is much easier to stay engaged with the person you're with if you're taking notes on paper. I also find it easier to read or review longer written pieces if they're printed out onto paper that I can scribble on.
The exobrain needs to fit your regular brain, and so it must be personalizable
There are techniques that other people swear by that just don't work for me. Similarly, I'm sure some techniques in here won't work for others. People are different, and think differently.
The conclusion I've reached is that it isn't possible to take a single system or app developed by somebody else and have it 100% work for you. So an important aspect is that the tools involved need to be customizable.
The exobrain is there for you to achieve your goals, not for its own sake
It is too easy to spend a lot of time optimizing these systems without actually using them. The aim is to put as few pieces in place as possible. Those pieces should be carefully chosen to be the best at helping you to get more things done.
Keep the things that are serving you. Drop the things that are not.
The exobrain is a platform for reflection
I want my exobrain to be more than a set of calendar appointments and to-do lists. I also want it to help me to be more mindful of what I'm doing, to help me to focus on putting my energy towards doing the things I want to get done.
In other words, the system must also prompt me to zoom out and reflect on what I'm choosing to spend my time and attention on.
The System
The central hub of my exobrain system is a bunch of text files, supercharged by Emacs Org-mode. Org-mode files are similar to Markdown files, except that Emacs can search through the headings for to build calendars, and TODO lists. Org-mode is also a competent literate programming environment, which makes it great for taking programming-related notes, and has built in spreadsheet support on all tables.
A quick aside on what Org-mode can do
I'm not planning on making this article an extensive Org-mode tutorial, but to understand how I'm organizing things it does help to have a basic understanding of how Org-mode works and what it can do. The key Org-mode feature here is its agendas, but the building blocks need to be explained before I get there.
Tagging things with a date
Org-mode has a special syntax for dates. If you include a date under a heading, then that heading is tagged with that date. The tag can have a time too.
* Heading about something that happens on a specific date
<2025-05-01 Thu>
* An appointment that happens at a specific time
<2025-05-02 Fri 9:00>
Giving tasks a status
If the first word in a heading is TODO or DONE, then that heading is a task with the specified status. Actually, you can configure this to be any set of statuses. My "TODO" statuses are TODO and WAITING, and the "DONE" statuses are DONE, CANCELLED and DELEGATED.
** DONE Drink some coffee
** TODO Write an awesome blog article
Scheduling tasks
Tasks have two special dates, SCHEDULED and DEADLINE. In other words, the date that you plan to do the task, and the date that the task must be done by. I tend to SCHEDULED in my workflow.
These scheduled dates can also be recurring. If you add a +1w into your date,
then when you mark the task as done it will be moved a week into the future
instead.
** TODO Paint the stoep
SCHEDULED: <2025-03-08 Sat>
** TODO Mow the lawn
SCHEDULED: <2025-03-08 Sat +1w>
Tags
Tags can be put at the end of headings. These are useful for sorting and filtering, especially when it comes to putting tasks into an agenda. If you have a tag on a heading, then subheadings below it also get the same tag.
** TODO Brush my teeth :MORNING:
** Routines :ROUTINE:
*** TODO Mow the lawn
Agendas
Agendas are where all of these features come together. Org-mode can go through all of your files and pick out the collection of tasks and headlines relevant to a specific day.
I'm using a package called Org-super-agenda which adds more ability to group this list of tasks based on tags.
My normal daily agenda starts with a timeline of the day, with any headings linked to a specific time of day on it. Then it will show any headings linked to the day as a whole. After that, it lists my tasks that I'm currently actively working on.
File Layout - Maintenance, Projects, Lore, and Archive
My exobrain is roughly split into four sections. Since the exobrain as a whole is a bunch of text files, these four sections are the four directories that the text files are dropped into.
Maintenance
The vast majority of what I'm doing with my exobrain is keeping track of things that I'm responsible for. Things that I need to maintain. You can also think of this as things that I'm keeping in my sphere of influence. Some maintenance area might be physical things like "Cars", where I need to track when the cars last had a service, or renewing my driver's license. Other maintenance areas are more abstract like "Health". Each maintenance area gets its own Org-mode file in the Maintenance directory.
maintenance/
health.org
cars.org
house.org
children.org
worthe-it-website.org
What goes in a Maintenance file?
A maintenance file should contain all of the information that I need to take care of that area of my life. If I have a note to make a regular appointment with my dentist in my health file, it should include the information needed to contact my regular dentist. A maintenance file about writing on my blog will have a heading for brainstorming blog topics.
While each maintenance file is different to meet the needs of that area, most of them have several of these top level headings:
Why?
Why am I working on this area of my life? This helps to set the boundaries of what is included or excluded from this maintenance file. If I can't concisely answer why this maintenance category exists, then I probably don't need it anymore.
Improvement Kata
Often, maintenance areas are something I want to work on actively improving. Using the Toyota Kata methodology of describing an idealized vision, and an assessment of the current state, can help figure out what to do to move this area forwards.
Calendar
Appointments, and similar things that are scheduled to happen at a specific time or day are listed here. Sometimes, it's easier to block off time for a recurring activity rather than having TODO items. For example, I don't have an exercise TODO, but I do have time blocked off in my calendar for it.
TODOs
Once-off tasks go under this heading.
Routines
Maintenance areas are generally long-running, and so tend to have recurring tasks. These could be frequent, like paying school fees on time every month, or really infrequent like renewing my driver's license every 5 years.
Chores
Chores are the same as routines, but they do not need to be considered when planning my week. Usually this means that they're quick to do, and very frequent. Things like running the dishwasher every day.
Log
Sometimes it's useful to make a quick note, or write a short journal that's relevant to an area. The log is simply a list of headings, where each heading is a journal entry starting with a timestamp. It can also make sense to have a "Log" section under an individual task.
TODOs Archive
Completed (or cancelled) tasks build up over time, but sometimes they have context that you don't want to delete. In that case, they can be safely moved from the TODOs heading to this heading.
On top of this, maintenance files have additional headings that are specific to that area. The "Career" maintenance area will have a section where I list potential opportunities I might want to explore one day. The "Continuous Learning" maintenance area has a list of books I might want to read one day.
As a final note, maintenance files are only useful if they evolve to meet the needs of their area. Almost every maintenance file has a routine to review that file in its entirety every 3 to 4 months. This is the point to reflect on the maintenance area. Read over the "Why?", and make sure that this is still an area to worry about. Maybe it's time to drop it, or maybe it's time to split one area that was previously simple into two. Or maybe the goals are correct, but the current routines aren't leading to those goals, so it's time to pivot.
Projects
Sometimes a TODO item is too big to just be a TODO item in a maintenance area. In that case, that task gets its own file in the projects directory. The big difference between a project and a maintenance area is that a project can be completed.
projects/
learn-elixir.org
move-house.org
What goes in a Project file?
Like the maintenance file, a project file should contain everything relevant to completing that project. That means that each project file will also have its own headings, but there are some common ones that come up often.
Why?
Why am I doing this project? Since projects generally take longer to complete than a single task, it's generally good to consider why they are worth undertaking. If I can't say why I should do it, then I shouldn't do it. Things aren't all work here, "I should do this because it will be fun" is a perfectly acceptable reason.
Outcome
A set of criteria for when the project is complete. Unlike maintenance areas, projects must always have a point where they can be considered complete.
Ideas
Sometimes it isn't immediately clear how to achieve the outcome of a project. In that case, it's useful to keep a list of ideas to try.
Calendar
Sometimes project also need you to schedule appointments for things that happen on a specific day.
TODOs
When you make a plan to complete a project, it generally comes down to a list of once-off tasks.
Log
As a project proceeds, sometimes it's useful to keep a log of the things that have been done towards it. The log is simply a list of chronological headings, where each heading starts with a timestamp.
Lore
This is the directory for stuff I've learned and want to write down somewhere. One file per high level concept or tool. It's basically a big knowledge base that I can refer to.
Lore isn't tied to any specific project or maintenance area. Usually that means the topics are relevant to multiple maintenance areas, or it's useful information that I haven't yet figured out how to apply to any maintenance area. If some information is only relevant to a single project or maintenance area, then that information should just go in the relevant maintenance or project file.
lore/
git.org
shell-scripting.org
burnout.org
For lore to be useful, it has to be kept up to date, and I need to know what is in there.
The solution to keeping things up to date is a philosophy that "reading is editing". In other words, if I refer to something in my lore, and discover that it's phrased awkwardly or is out of date, then I immediately update it. If I go looking for a one-liner which doesn't exist, that is the best time to add it.
Making sure I know what is in my lore, and that I find it when I need it, is a bit trickier. My solution to this is to have a routine where I touch a piece of lore every work day. I sort the files by their last modified date, take the one that hasn't been touched in the longest, and review it. This might mean only skimming over the things I've written, but the point isn't to memorize everything. The point is to create the seed that when I'm thinking "I'm having problems with my Docker cache again", I'll remember "I wrote something about that in my exobrain."
What goes in a Lore file?
Lore files are the most free form, so they don't have any notable common headings. They don't ever have TODO items or calendar entries.
I've found it particularly useful to include "cheat sheet" style one liners around certain CLI tools. For example, in my "Docker" lore file, I have a one liner for clearing out the docker cache.
It can also be useful to hyperlink sources of information liberally, and include a section for external references. If there are other related lore files, it's also useful to link to them.
The Journal File
There's just one file in the root, journal.org. It's there to make it easy to capture things quickly when I don't have time to consider where they should go. It has a calendar for things that don't fit into other maintenance files, like a list of public holidays. The main thing that stays in the journal without moving into other files is its Log section, where I can write more free form notes for any given day.
Archive
This is stuff that doesn't need to be in the active working memory anymore, but might be useful to refer back to one day. Notes specific to employers I no longer work for, or projects that have been completed end up in the archive.
I often navigate around the exobrain using fuzzy matching of filenames. At the
same time, when I'm doing this I generally don't want to jump to completed
projects. To combat this, I find it useful to put all completed projects in a
single project-archive.org file, so that old projects don't come up when I'm
looking for active ones. Similarly, if you compress a group of files into a
.tar.gz archive, then it will no longer appear when I'm using git grep to
look for something active.
archive/
previous-employer.tar.gz
old-presentation.tar.gz
journal-archive.org
maintenance-archive.org
project-archive.org
The daily agenda
Whenever I open Emacs, it starts up by showing me my agenda for the day. All of the projects and maintenance areas that have tasks or calendar items scheduled for the current day appear here, under the following headings:
Calendar
Anything scheduled to happen that day. Meetings, appointments, birthdays.
To Do
Tasks that I'm currently working on, based on their scheduled date.
Morning Chores
Tasks have both the CHORE and MORNING tag, indicating that I want to get them done first thing in the morning before starting other work. This list shouldn't ever take long to complete, but most things on it need to happen every day.
Chores
The regular recurring tasks that don't really require any planning, I just need to get them done.
Waiting
Tasks that I'm currently waiting on someone else. In this case, the scheduled date is when I want to follow up.
When things are done, they get removed from the agenda, so that I'm only looking at the things that still need to get done.
Inboxes
Despite the impression I may give on this site, I'm not always in front of the computer. Sometimes I need to make a note of something when I'm out, in a meeting, or just not in front of the computer. This is where the concept of inboxes comes in.
The idea of an inbox is that it's a great way to capture information. You might need more than one inbox since each inbox will work better in some contexts and worse in others. It doesn't need to be good at any of the other exobrain stuff, because once a week I go through all of my inboxes and rewrite the important stuff into my Org-mode files. This can take several forms:
A paper notebook. This is the best for taking notes during meetings. I find that it's also a good place to take longer notes if I'm deliberately disconnecting from the office, like if I'm out walking in nature. The notebook itself doesn't have any structure. I just write stuff at the end. After I review it to include bits in my Org-mode files, I draw a big underline after the reviewed notes. When I get to the end of a notebook, I can throw it away because I've already reviewed and captured anything important.
I have a chat group that is just me talking to myself. That way I can jot a quick note on my phone, and see it later on my computer. This can be very useful to write down reminders or dates, but I avoid it for anything long because I don't like typing long messages on my phone.
The
journal.orgfile in my exobrain. This one is for when I am at my computer, but don't have a moment to consider how to sort something properly.
The weekly review
Once a week, currently on a Friday, I sit down with my exobrain and try to figure out what I'm doing with my life. At least what I'll be doing with my life for the next week.
This starts by making sure that everything in the exobrain is up to date.
I pull out my various inboxes and make sure that everything has been captured in the exobrain.
Next, there's a moment of reflection. Is there anything that I've been carrying around in my mind instead of putting into the exobrain? If so, now's the time to capture it.
Now that everything is up to date, I take a look forwards. I have a "weekly review" agenda, which will show my calendar for the next week (excluding the 'chores' to keep things neat), and a big list of unscheduled tasks to choose from.
First I just read through the next week's calendar. Get a feeling for the week ahead and my available time in it. Be reminded of the things that I have already decided to do in this week.
Finally, I fill the week with more stuff, generally by grabbing unscheduled tasks and putting them on the calendar. My list of unscheduled tasks can sometimes get a bit long, so the art here is figuring out which are the urgent or important things that I should be working on next.
Syncing the exobrain everywhere
Something great about plain text files is that they work great with version control systems like Git. It should be no surprise then that I have a Git repo for my exobrain, and I have a script that runs on a regular interval to sync any changes. I have a more thorough explanation of the syncing system in my blog article on file syncing using git-sync and systemd.
This works great both to have the exobrain available on every computer I use, and to have a backup on the cloud. Unfortunately, I don't currently have a good solution to see my agenda when I'm away from the computer.
Coordinating with Others
This exobrain system is all well and good when I'm working on my own, but what about if I'm working with others? Especially in contexts like employment, where there is usually some other task tracking of project management tool like Jira in place.
The answer that I've come to over time basically comes down to some small amount of duplication between systems. When I start working on a new project, I create a TODO entry for it, same as any other task I work on. That task is in the maintenance file for my work with my employer. In that task I keep the links to any external resources, including Jira tickets, merge requests. My personal notes go into my exobrain, but anything that I need to communicate goes into whatever the shared system is.
This philosophy of duplicating information into shared systems also extends into my home life. I might have my daughter's sports day in my exobrain, but I also write it on the shared paper calendar that's up on the fridge.
Other resources
I have many influences that have lead me to this setup.
One of the significant influences is Tiago Forte's "Building a Second Brain". The influence of his "PARA" organization (projects, areas, resources, archive) reflects in what I'm doing, although I've adjusted it to my own use case and have changed the names a bit.
I also find it quite influential to read on other Emacs user's Org-mode setup and config. The Emacs ecosystem is so broad that it really helps to encounter other people's recommendations. My personal philosophy is to take what fits me, and leave the rest, so it helps to have many examples to pick and choose bits from.
A final useful source is the general pile of productivity and self help literature out there. I find that these type of books lend themselves particularly well to audiobook format.
The Productivity Project - Chris Baily, and a special shout out to Chris Baily's podcast, Time and Attention.
Appendix - My Org-mode agenda config
I'm not going to share my whole Emacs config. I think that would be more noise than useful. However, I think it could be useful to share my agenda config.
(use-package org-super-agenda
:ensure t
:custom
(org-agenda-default-appointment-duration 60)
(org-agenda-dim-blocked-tasks nil)
(org-agenda-hide-tags-regexp ".*")
(org-agenda-skip-deadline-if-done t)
(org-agenda-skip-scheduled-if-done t)
(org-agenda-custom-commands
'(("d" "Today"
((agenda ""
((org-agenda-span 1)
(org-super-agenda-groups
'((:discard
(:todo "DONE"))
(:name "Waiting" :todo "WAITING" :order 5)
(:name "Morning Chores" :and (:tag "CHORE" :tag "MORNING") :order 3)
(:name "Chores" :tag "CHORE" :order 4)
(:name "To Do" :todo t :order 2)
(:name "Calendar" :time-grid t :date t :order 1)))))))
("w" "Week review"
((agenda ""
((org-agenda-overriding-header "This week")
(org-agenda-span 11)
(org-agenda-time-grid nil)))
(tags-todo "-SCHEDULED={.+}-BLOCKED=\"t\""
((org-agenda-overriding-header "TODO"))))
((org-agenda-tag-filter-preset
'("-CHORE" "-DONE"))))
("o" "Task Overview"
((todo ""
((org-super-agenda-groups
'((:name "Waiting" :todo "WAITING" :order 0)
(:name "Morning Chores" :and (:tag "CHORE" :tag "MORNING") :order 5)
(:name "Chores" :tag "CHORE" :order 6)
(:name "Routines" :tag "ROUTINE" :order 4)
(:name "Scheduled TODOs" :scheduled t :order 2)
(:name "Blocked TODOs" :property ("BLOCKED" "t") :order 1)
(:name "Unscheduled TODOs" :scheduled nil :order 3)))))))))
:custom-face
(org-agenda-date-weekend ((t (:inherit org-agenda-structure))))
:config
(org-super-agenda-mode)
(org-agenda nil "d"))