A lot changed since my 2019 GTD and CRM flow post . After trying lots of new software in 2022, I’ve come back full circle to org-mode. But the experiments with new things were super valuable. I caged and culled new ideas and ways of doing stuff from other software and feel it’s made my GTD setup and system fundamentally stronger and helps me execute better. Here’s how it all works.
This is a
#LongRead
so grab a cuppa or glass of something. I do hope you take something away from here that helps you out and makes you more productive.
…
A lot changed since my 2019 GTD and CRM flow post . After trying lots of new software in 2022, I’ve come back full circle to org-mode. But the experiments with new things were super valuable. I caged and culled new ideas and ways of doing stuff from other software and feel it’s made my GTD setup and system fundamentally stronger and helps me execute better. Here’s how it all works.
This is a
#LongRead
so grab a cuppa or glass of something. I do hope you take something away from here that helps you out and makes you more productive.
The Setup
My ~/.config/emacs/
has this init.el (slightly modded for public posting) as well as an early-init.el and then just needs the loaded template file which you should modify to taste.
I’ve posted the relevant sections of it as we talk about particular components of the system. At time of writing I’m using emacs 29.0.60
and all up to date versions of packages. I’m using the emacs-plus@29
formula tapped from d12frosted/emacs-plus
with homebrew. Hardware-wise I’ve got a 2020 M1 chipped Macbook running OSX 13.1 Ventura (though this setup should work even better on linux.).
Basically, my GTD setup revolves around:
- A system of directories in PARA fashion for top level organizing
org-roam
with a lot of templates to contextualize different classes of information I’m capturing (people, media, astrophysics, blogs, experiments etc)org-super-agenda
to collect all date aware tasks and meets and present it for actionabilityorg-agenda-custom-command
s to collect up class of information and column display it- A per-day Dailies file for tracking new info as it comes in Also, some weekly and monthly planning templates that are outside day-to-day execution. I talk about them below, but the meat is in the system above. It sounds complex, but set up, it’s amazingly quick to operate, and gets out of your way and lets you get stuff done.
Since improvements have ended up being a combination of new (or improved) Emacs packages, structuring info in new ways, GTD improvements during COVID (Weekly and Monthly reviews, Resonance Calendar, Experiments etc), templates to codify processes, and enhanced UX I’ve organized the post that way.
New Stuff
-
Blog Queue Better Old Stuff
New Stuff
Packages - Org Roam
Org-roam has significantly enhanced how I used org-mode. A Roam Research replica, it’s based on ideas from the book Smart Notes of taking zettelkasten notes. Org-roam enhances this by creating bi-directional links in your org-documents.
This means you can see all the backlinks to your document in a window and creates, over time, a “knowledge graph” of everything you have linked. You can even visualize this as an actual graph to understand how notes and knowledge fits together. There are definite benefits to being able to see your information this way (though hype around “knowledge graphs” sadly was overly hyped by VCs).
It’s powerful for learning and studying and has unambiguously helped me learn and retain information more strongly (especially in Astronomy and Physics concepts as I try to carve a path to a PhD.). YMMV. It’s also shockingly interesting when you begin to look at your information longitudinally for patterns and recurrences as you develop your “knowledge graph”. But, it’s more important additions to my workflows have been more pragmatic.
More practically to GTD, it’s very useful for tracking and relating information on projects, tasks, and people (see my notes on CRM below). For stakeholders, direct reports, and collaborators this allows me to have great visibility on things, and easily look up both the past and current state of things when interacting with people. Considering the large organization I work with it was the only thing that could handle the complexity and global scope. I also found it made me a better manager, since I’d have information at my fingertips and context before 1:1s and could update people across my org and others with a few lookups and queries. While you can do similar linking in Obsidian and Logseq, I found it the most powerful and facile in org-roam
You can also create abstraction for areas and concerns you want to like like Learning, Exercise, your Blog Queue (see below) and even more foo-foo things like gratitude (disclosure: I embed a link dream for dreams I’ve had when journalling to scry patterns or connections to my real life in them.).For some of these Areas, they are really just placeholders pages that provide the target for the backlinks, but that still ends up being very powerful if you do something (like I do) and have daily files named in ISO date format.
It’s also handy tagging what you’re working on in your Dailies to particular Projects since it creates an idea of what you were working on when, or relating meetings and their notes to what ends up being a very flexible tagging system with easy lookups and reference.
Structure - PARA
Tiago Forte’s been teaching courses on how to organize a Second Brain in productivity software for a while now. He just released a book on it, Building a Second Brain (BSB) which connects course and his various blog posts There are three things I took away from his approach:
- Organize for actionability rather than subject
- Use PARA
- Areas as concerns which need to maintain a certain standard or maintenance over time The first is easy. Place stuff where you can action most relevantly to what your priorities are now. How? Enter PARA.
What’s PARA? An organizational framework on where to place information. Which sounds silly on the surface of things, but it ends up being amazingly powerful as having a home for each datum you acquire ends up reducing search and cognitive costs. As well as making it easier to link and action information. So, I ended up setting both org-mode and directories on my computer (for the files) in this way.
| | | | | | | P | Projects | | A | Areas | | R | References | | A | Archives |
Projects are pretty much what you and I would normally define one as if asked: An outcome that needs to be achieved by a date and has multiple tasks associated with it.
References is more where you put information not immediately actionable. Generally saved information not related to projects and areas that ay be useful at a future date, or things you hope to use in the future, For me, this is storage in org-mode for things like my contact list, resonance calendar items (that is, information that /may/ be useful in the future), various “zettels” (not really) on astronomy and physics etc etc - usually linked from Res Cal materials like textbooks, lectures etc.).
Archives are no longer active materials. Where you put all the stuff that you’re not working on in terms of Projects (or even Areas, really) that are no longer relevant in your day-to-day or quarter-to-quarter.
Tiago’s contribution here, and where a light went on for me, was /Areas/. Areas are concerns where you need to do work to consistently apply a standard or maintenance to them but don’t have an end date. They’re not projects. A light went on for me here, since I have loads of these such as Finances, Health, Coding etc where not being able to manage them as projects, but still having them contribute to long term goals, ended up with me not making as concrete progress over time as i would have liked. So, organizing around these, even saying them out loud as concerns I needed and wanted to maintain over time to the exclusion of others, was quite illuminating for me, and definitely helped. It made me explicit about things I wanted to excel at.
And quite often, you will carve off projects from Areas and action them. As a concrete example, you might have Home as an area where certain tasks need to be handled in order to maintain the place. But, let’s say you want to move to another country or find a new place. That would be a project you would carve out from the area and handle differently.
What this ends up looking like for me, from a directory experience is this:
.
├── archives
│ ├── areas (+ subs)
│ └── travel (+ subs)
├── areas
│ ├── astro
│ ├── blog ->
│ ├── dh
│ ├── exps
│ ├── goals
│ ├── health
│ ├── home
│ ├── money
│ ├── peeps
│ └── travel
├── journal
├── logs
├── projects (+ subs)
└── refs
├── assets
├── astro
├── images
├── prm
├── rez
└── templates
Some of the directories also have information in them which could be argued should be in separate directories. For example, my logs directory contains my daily log files like 2023-01-26.org
, but also weeklies like 2023w04.org
and my monthlies.org
file. Refs similarly has files like quotes.org
etc. Hopefully though, this gives you an idea of how to PARA organize your information. /projects
has subdirectories with one named directory for each project since it often collects up a bundle of information. Archives splits info into areas and projects and old areas or projects directories get moved there when no longer being worked on. The blog directory is a symlink to the /content/posts
directory in my hugo install.
For me, a lot of changes in how I organize my information, and how I think about Goals in respect to Areas and Projects helped my longer-term thinking more.
UX - nano emacs
Sadly, emacs has a default UX that is 40 years old and that only a mother could love. Its lack of modern interface and UX conventions is definitely an impediment to use, including the difficulty of customizing and bending things to your will via emacs-lisp
, an on-going source of Redditor battles in r/emacs
.
While a lot of work has been done in this area (I was using Doom’s interface and mode-line which made things better), nano emacs appeared to came out of nowhere and be based on much of rougier
’s academic research on what makes good user interfaces for text editors.
He’s done a spectacular job of stripping out the cruft in the emacs interface and creating a phenomenal environment for writing and reading (I have to admit to not using emacs for code that often.). It makes a huge difference in my ability to use emacs as a writing and GTD tool (for example, this post is being edited in org mode in nano and writeroom-mode
right now.).
I used this excellent blog post to get up and running and customized some of the faces to get the best of nano and previous UX posts, I’d written. This is what the nano-emacs part looks like and the mods I’ve done to org-faces to get items like tables and such prettified amongst other things.
(straight-use-package "rougier/nano-emacs"
; note: at the moment I'm using my own fork since
; found a bug or two in rougier's excellent work
(setq nano-font-family-monospaced "IBM Plex Mono")
(setq nano-font-family-proportional "SF Pro Retina")
(setq nano-font-size 13)
;; (load-theme 'nano-dark t)
(require 'nano-layout)
(defun nano-theme-set-spaceduck ()
(setq frame-background-mode 'dark)
(setq nano-color-foreground "#ecf0c1")
(setq nano-color-background "#0f111b")
(setq nano-color-highlight "#1b1c36")
(setq nano-color-critical "#e33400")
(setq nano-color-salient "#00a4cc")
(setq nano-color-strong "#e39400")
(setq nano-color-popout "#f2ce00")
(setq nano-color-subtle "#7a5ccc")
(setq nano-color-faded "#b3a1e6"))
(nano-theme-set-spaceduck)
;;(require 'nano-theme-dark)
(require 'nano-base-colors)
(require 'nano-faces)
(nano-faces)
(require 'nano-theme)
(nano-theme)
(require 'nano-help)
(require 'nano-modeline)
(require 'nano-defaults)
(require 'nano-colors)
(require 'nano-writer)
As well, I modify the following to get a look and feel I like. YMMV. Experiment with them if you like to modify the default nano though. The default dark mode is based on Nord.
(with-eval-after-load 'org-faces
(require 'org-indent)
(set-face-attribute 'org-level-7 nil :inherit 'org-level-8)
(set-face-attribute 'org-level-6 nil :inherit 'org-level-8)
(set-face-attribute 'org-level-5 nil :inherit 'org-level-8)
(set-face-attribute 'org-level-4 nil :height 1.0)
(set-face-attribute 'org-level-3 nil :height 1.0 :weight 'bold)
(set-face-attribute 'org-level-2 nil :height 1.1)
(set-face-attribute 'org-level-1 nil :height 1.2)
(setq org-hidden-keywords '(title))
(set-face-attribute 'org-document-title nil
:height 1.75
:foreground 'unspecified
:inherit 'org-level-1)
;; Ensure that anything that should be fixed-pitch in Org files
;; appears that way
(set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch)
(set-face-attribute 'org-table nil :inherit 'fixed-pitch)
(set-face-attribute 'org-formula nil :inherit 'fixed-pitch)
(set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch))
(set-face-attribute 'org-indent nil :inherit '(org-hide fixed-pitch))
(set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
(set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch)
;; Get rid of the background on column views
(set-face-attribute 'org-column nil :background nil)
(set-face-attribute 'org-column-title nil :background nil)
)
I find it makes emacs almost, well… beautiful and the ability to fold and reveal information by heading (and writeroom) makes it an amazing authoring environment.
It goes a long way to making emacs and org-mode a more enjoyable tool you want to spend your whole day in.
Rougier’s also recently release a new Book mode which is a WIP for nano which looks even more amazing and optimized for both reading and writing, so looking forward to seeing that when it’s finished. It looks very promising.
GTD Improvements
Resonance Calendar
I consume a lot of media. I read roughly a book a week. A while back it started bothering me I was consuming but not retaining or actioning a lot of the information in the books, posts, and video material I was tearing through.
When I switched to Notion and was using it for a while, I ran across this fantastic video by Ali Abdaal who had the same problem and made a video about his solution, a Resonance Calendar. I adapted and riffed on the idea but it’s been a powerful tool for retention and actioning the media that has an impact on me so have recreated it in both Obsidian and now in org-mode.
I plan and garden a simple ordered list of books as my Reading List
. It simply ends up being an ordered list (that I abuse and re-order frequently on whim).
* Reading
1. Battle Royale Remastered by Koushun Takami @add [2022-12-12 Mon] ★★★★★
2. Building a Second Brain @add [2022-11-28 Mon] ★★★
3. The Go-Giver a la Ali Abdaal @add [2022-12-14 Wed] ★
4. The Angel's Game a la Eliot Piper @add [2022-12-29 Thu] ★★★★
5. Benjamin Franklin: An American Life
6. Give and Take @re-add [2023-01-05 Thu]
7. Tomorrow and Tomorrow and Tomorrow a la Eliot Piper @add [2022-12-29 Thu]
8. The Luck Factor a la Ali Abdaal @add [2022-12-14 Wed]
9. Only Study Guide You'll Ever Need @add [2022-12-12 Mon]
10. Leading by Alex Ferguson
11. The Greatest Benefit to Mankind a la Muckerjee @add [2022-12-09 Fri]
12. Uprooted a la Doctorow @add [2023-01-09 Mon]
13. The Mountains in the Sea a la Eliot Piper @add [2022-12-29 Thu]
Once I start a book (and linking not shown in list above), I link the notes for it via org-roam so everything hangs together. One dangerous feature of org-mode is being able to easily re-order ordered and unordered list with ⌘-up/down
so I try not to insert or re-order books too too often and wreck my (loose) plan for the year. Always having a next (or several) books next on the list and a daily reading habit get me through about 45ish (serious) books a year.
If you’re interested in highlights, and books I recommended each year, you can see recommended reading lists from 2022 , 2021 , 2020 , 2019 , 2018 , 2017 , and 2016 .
I do the same thing for movies and games. Though it’s more a reminder list for both than something I methodically work through. I’ve got a recent, separate, post on dealing with ephemera since my old system for that was not working as well as I’d like.
OK, but how does the actual Resonance Calendar work? Since it’s where all the knowledge goes into and where I try to link things to.(See the Science Stuff section for how I leverage this for specific chunks of knowledge in textbooks, formulas and the like.)
How It Works
Two parts:
- A template for media I consume I want to action or retain that gets thrown in a directory
/refs/rez
(a la PARA) - An org-agenda-custom-command to collect up all the files, and sort them in descending order of start date
This works because I make it dead easy for me to record the information and linking to it from the template is as simple as creating a link
C n i
the org-roam default, selectingr
from the templates andC-c C-c
(again, the default) to have it saved and linked back to the originating document.
Here’s the org-roam template I use:
("r" "Rez" plain "%?"
:target (file+head "~/Documents/org/refs/rez/${slug}.org"
"#+TITLE: ${title}
#+CREATED: %u
#+MODIFIED:
* ${title}
:PROPERTIES:
:Type:
:Start:
:Fin:
:Killed:
:Rating:
:Digested:
:Creator:
:URL:
:END:
* Actions
* Key Ideas
** Review
** Quotes
** Notes
"):unnarrowed t)
Notes on things go in the (duh) Notes section. I add in TODOs in the Actions section and either week, Deadline, or Scheduled tag them.
If I want to get a view of everything and look at the Resonance Calendar in total, I use the following org-agenda-custom-command
to collect up all the file entries and sort them into a nice column view.
(setq org-agenda-custom-commands
'(("r" "Resonance Cal" tags "Type={.}"
((org-agenda-files
(directory-files-recursively
"~/Documents/org/refs/rez" "\\.org$"))
(org-overriding-columns-format
"%35Item %Type %Start %Fin %Rating")
(org-agenda-cmp-user-defined
(cmp-date-property-stamp "Start"))
(org-agenda-sorting-strategy
'(user-defined-down))
(org-agenda-overriding-header "C-u r to re-run Type={.}")
(org-agenda-mode-hook
(lambda ()
(visual-line-mode -1)
(setq truncate-lines 1)
(setq display-line-numbers-offset -1)
(display-line-numbers-mode 1)))
(org-agenda-view-columns-initially t)))
)
You also need the following sorting function which works with both org-mode calendar datastamps (eg. form like <2023-01-19 Thu>
) and things like 2022w05
if you prefer to just note the weeks (as I do in Experiments.).
(defun cmp-date-property-stamp (prop)
"Compare two `org-mode' agenda entries, `A' and `B', by some date property.
If a is before b, return -1. If a is after b, return 1. If they
are equal return nil."
(lexical-let ((prop prop))
#'(lambda (a b)
(let* ((a-pos (get-text-property 0 'org-marker a))
(b-pos (get-text-property 0 'org-marker b))
(a-date (or (org-entry-get a-pos prop)
(format "<%s>" (org-read-date t nil "now"))))
(b-date (or (org-entry-get b-pos prop)
(format "<%s>" (org-read-date t nil "now"))))
(cmp (compare-strings a-date nil nil b-date nil nil))
)
(if (eq cmp t) nil (signum cmp))
))))
Looks like this:
You can arrow up and down through the list and hitting return will take you to whatever entry you’re interested in.
The other nice thing about this (though still trying to codify the query) is that it shows how many open items I have at any one time through the blank Finished column. Weirdly, it makes me docus on existing stuff a little bit more before jumping to the next shiny thing.
(nb: also there are things I consume that are not on this list, I just find they end up being things I don’t think I’ll need to action or retain in the future — a bit sad, but it’s amazing how much content out there in substack, podcast, blog post, and youtube are effectively “filler”, imho.).
Since this is an agenda command, I merely bring up the Agenda menu (C-t
for me) and then pick one of the custom commands for this or one of my other custom commands (u
for org-super-agenda Super view, r
for Resonance Calendar, and e for Experiments, p
for [active] Projects).
The really nice thing about this is you can also filter dynamically on anything in the media list. Hitting C-u r
and typing Type="book"
gives you just the list of books you’ve looked at. Replacing “book” with “movie” or “post” or “youtube’ gives you that list as well.
Also, need to give a ginormous /ht
to Redditor user orgtre who basically handed me the solution to this problem in this Reddit post . Legend. Des milles mercis.
While not at the computer (often I use a second screen to watch or read something and the laptop screen to note things), I’m often reading a book on my KIndle and I use the Plain Org
app and type under the Notes section of the template
Experiments
While less exciting than the Resonance list, I try to track both big and little experiments I’m running in terms of life design both to keep myself honest, make sure I’m assessing outcomes and actioning them, and to be clear about goals. It works with the same sort of custom command at the Resonance Calendar and a slightly different template, but other than that, almost exactly the same schtick. In the ResCal template I use actual org-mode datestamps whereas in the Exp calendar I tend to have start and end denoted by weekly datestamps (eg. 2023w10) and only use the org-mode native datestamp in the Assess field in properties since it will then bring it up in my Dashboard as something I need to pay attention and do something about (honestly, one of my favourite features in org-mode is putting a datestamp almost anywhere and having it flag something in my Dashboard.) 😍
The Experiments template looks like this:
("e" "Exp" plain "%?"
:target (file+head "~/Documents/org/areas/exps/${slug}.org"
"#+TITLE: ${title}
#+CREATED: %u
#+MODIFIED:
#* ${title}
:PROPERTIES:
:Type: Exp
:Start:
:Fin:
:Assess: <yyyy-mm-dd aaa>
:Qs:
:Status:
:Outcome:
:END:
* Actions
* Hypothesis
-
* Treatment
-
* Notes
-
* Outcome
-
* Contraindications
-
"):unnarrowed t)
It’s triggered from org-roam’s C n i
insert link command via an e
.
The org-agenda-custom-command
works pretty much the same as the the one for the RezCal (hopefully, it’s obvious from this second example that this is a general pattern you can use for any collection of files in a directory you want to give properties to and track.).
("e" "Experiments" tags "Type={.}"
((org-agenda-files
(directory-files-recursively
"~/Documents/org/areas/exps" "\\.org$"))
(org-overriding-columns-format
"%35Item %Start %Fin %Status %Outcome")
(org-agenda-cmp-user-defined
(cmp-date-property-stamp "Start"))
(org-agenda-sorting-strategy
'(user-defined-down))
(org-agenda-overriding-header "C-u r to re-run Type={.}")
(org-agenda-mode-hook
(lambda ()
(visual-line-mode -1)
(setq truncate-lines 1)
(setq display-line-numbers-offset -1)
(display-line-numbers-mode 1)))
(org-agenda-view-columns-initially t)))
Blog Queue
I wish I had something “1337 code” to tell you about my blog queue but it’s pretty ghetto though works fantastically.
I started using a Kanbam board with columns of Ideas | Drafts | Edits | Pubbed
from a video production Kanban I’d seen when using Notion (which has a great Kanban implementation.). And continued to use the idea with Obsidian.
It’s been a fantastic way to look at my universe of blog post ideas and states you’ve got and work on your pipeline. Loved it. Emacs, though, does /not/ have a good kanban mode.
What org-mode does have though, is a fantastic
table-mode
. Match that with the nice pretty-tables
package formatting and you’ve got a fine looking ersatz Kanban.
In practice, whenever I think of a new idea, I go to the Ideas column and at the bottom throw it in. When I move it to Draft I use org-roam’s C n i
insert node, name it, and fire off the blog template below to create a placeholder for the future post I will (hopefully) write. I use the default C-c C-c
to capture the details which creates the file and notes, if not the whole post, and then continue on with my work.
When I come to the writing part of my day (I’m trying to be good about doing Morning Pages, then blog posts, then book work every day), I go to the Blog Queue buffer with its Kanban and open up the link of what I want to be working on (org-table make you use the “open link” default C-c C-o
rather than just hitting return (in org-tables that moves you down to the next line though trying to find a way to override that.
Moving something from Idea to Draft or Draft to Edit is easy with org-table
. A S - up/down/left/right
will swap cells with whatever cell you are currently on, so I generally move items down and then right as I progress them. Org-table in general is nice because it autoformats everything for you.
Perhaps strangely, I’ve come to like this setup better than the Kanbans for both Notion and Obsidian since its keyboard navigable and just simple text and links. I also version control my files so it’s cool seeing how things might have evolved over time (I wanna write something to replay how stuff moves to be honest over the git history.). Might be informative.
About the only disadvantage is that your titles can’t be too long, but since org-roam uses a hash for your links, you can shorten the title as much as you like to make the cell width manageable. For example, even though the title of this blog entry is much longer, I used Emacs GTD and CRM revisit which fit nicely in a cell.
And while my blog software, Hugo supports org-mode out of the box (and even a mix os markdown and org-mode posts in the same directory), a number of basic features you have in markdown (images etc) don’t seem to be parsed. While there are people who blog in org-mode and use plugins and various other things to get around it, I have to admit, if markdown had a way to support org-mode’s datestamps and org-agenda functionality in-file, I’d switch back to markdown in a second. It’s much more comfy to write in and most of the advanced features of org-mode (literate programming etc), I don’t really use.
How does that work. I use this nice package md-roam which allows my org-roam setup to work with markdown files and their frontmatter. Basically, when I select my blog template from the list, it creates a markdown file with frontmatter appropriate to Hugo. And under Areas, I symlinked my /Areas/blog/
directory to my hugo /content/posts
directory in my repo for the blog. Org-roam picks up the directory without a hitch so I can link to it normally from the Blog Queue - the id
you see in the front-matter gets linked to the org-roam database and you can follow links normally. When new files get created, they have a markdown extension and emacs treats them as such. I lean on git to version control the directory (and it’s on Github) from when I deploy the blog normally.
("b" "Blog" plain "%?"
:target (file+head "~/Documents/org/areas/blog/%<%Y-%m-%d>-${slug}.md"
"
---
id: %<%Y-%m-%d>-${slug}
layout: post
title: '${title}'
permalink: '/${slug}'
date: %<%Y-%m-%d>-Thh:mm:ss+07:00
location: Ao Nang
tags: []
description: 'Clever description of contents.'
draft: true
---
"):unnarrowed t)
Better Old Stuff
Org-super-agenda
My dashboard helps me execute daily. It shows what I’m supposed to be working on each day, but also what’s coming up and what’s past due. As well it shows items and people contacts I’d rolled into this particular week of the year and should be dealing with.
It collects up tasks scattered amongst all the PARA directories and my logs (since quite often one-offs and things get added to my Dailies) and then displays and filters them according to if it’s something for today, something upcoming with an alert in the next 5 days (I can override this in the datestamp for where I need more advanced warning), and things that are overdue. It also takes items that are tagged with the particular week but are not scheduled or have a deadline associated with them because they’re more “think about” items that I need to action in some way that week.
Org-super-agenda then divides things into whether its personal or work related or dealing with academics (tags I use for this are :perso:
, :dh:
, and :uh:
respectively. So, a tag like :perso:w04:
which just takes seconds to add (or modify in the dashboard line with C-c q
shows up in ISO week 4 of the year.
I’ve found it a fantastic system for making sure things pop up when they need to be dealt with, and implements David Allen’s concept of the “Tickler” file. I’ts kinda like this amazing personal assistant that knows just when to bring up the stuff you need to pay attention to. More to the point, it helps me sleep at night, since I trust that when something is in the system I know it will eventually be dealt with. And if priorities change I can search on it and surface it earlier or move it to later.
It’s also all keyboard driven so once you muscle memory the shortcuts, it’s easy to move something that was in the “Week of” section into a task that needs to be done bny a certain date by adding a scheduled or deadline date to it (C-c s
, C-c d
) or just move it to another week by altering the w04
tag with C-c q
.
The basic upshot is that super agenda gives you focus on daily and weekly organization and execution and allows you to re-organize on the fly as your priorities change (as they often do in most companies these days.).
Here’s the relevant org-roam setup for org-super-agenda. Note it also drives off a few settings in org-mode such as how much advanced notice you have on deadlines, and how scheduled items get handled.
Note that the configuration for org-super agenda is, much like the ResCal and Experiments above, also an org-agenda-custom-command, so you need to put it in that block alongside the others.
While a matter of taste, I override whether something gets moved into Overdue and other areas by using a :today:
tag on some items, particularly ones that are monthly or quarterly so that it is top of mind till I get it done. Also, things tagged as birthdays, anniversaries, calendar items, or holidays end up getting added at the top of the agenda.
I also use origami, another package so that I can easily fold and reveal sections of the agenda which ends up being super handy as well as if it was a plain old org-mode file.
Suffice it to say, I feel this dashboard makes me super efficient and like I have a full overview of the scope of things that need to be done every day and some crow’s nest capabilities on things farther out. One enhancement I’d like to do is work on a bit more of a “crow’s nest view” for longer term planning and scheduling to make it easier to move Big Rock items around in relation to my capacity and ensure I’m only handling enough WIP stuff that I can fit in the critical things I want to get done.
(use-package org-super-agenda
:straight t
:after org
:defer t
:config
(org-agenda nil "u")
)
;; And then the org-agenda-custom-command config
("u" "Super view"
((agenda "" ( (org-agenda-span 1)
(org-super-agenda-groups
'(
(:name "Today"
:tag ("bday" "ann" "hols" "cal" "today")
:time-grid t
:todo ("WIP")
:deadline today
:scheduled today)
(:name "Overdue"
:deadline past)
(:name "Reschedule"
:scheduled past)
(:name "Perso"
:tag "perso")
(:name "Due Soon"
:deadline future
:scheduled future)
))))
(tags (concat "w" (format-time-string "%V")) ((org-agenda-overriding-header (concat "--\nToDos Week " (format-time-string "%V")))
(org-super-agenda-groups
'((:discard (:deadline t))
(:discard (:scheduled t))
(:discard (:todo ("DONE")))
(:name "Ticklers"
:tag "someday")
(:name "Perso"
:and (:tag "perso" :not (:tag "someday")))
(:name "UH"
:and (:tag "uh" :not (:tag "someday")))
;; (:name "Neo"
;; :and (:tag "neo" :not (:tag "someday")))
(:name "Ping"
:tag "crm")
))))
))
; general is needed for origami keymaps for org-super-agenda
(use-package general
:straight t)
(use-package origami
:straight t
:hook (org-agenda-mode . origami-mode)
:general
(:keymaps 'org-super-agenda-header-map
"<tab>" #'origami-toggle-node))
Daily, Weekly, and Monthly templates
I use a daily template for tracking and a weekly template for “ideal planning” out my week and then seeing how I did against that plan at end of week. I also do monthly and quarterly checkins with myself to plan and re-architect as nececessary (though the quarterly and monthly checkins are more freeform than a template.).
Daily
When not head down coding or writing or doing science, a lot of days consist of meetings and either getting or giving information, and particularly in this last role, coordinating the activities of large groups of staff and stakeholders to accomplish things. During covid, it was a /lot/ of Zoom meetings.
That means I need to constantly take notes on things that are being discussed and the tasks that may come out of it, as well as who is supposed to do what, by when.
This workflow consists of abusing the org-roam-dailies
function of org-roam. I basically open up a new daily log template every morning (or the night before) and use it to track meetings and other things during the day (i’ve got it keybound to C-l
even.
What does the Daily Log look like? For me, it’s combination of personal and work information though I tag work or academic information with org-mode tags such as :work:
or :uh:
in order to allow org-super-agenda to segment the information in my dashboard (especially tasks).
The main change in the daily log from past years is using org-roam links in it, which allow me to see backlinks and that information as it progressing through time. For work
(setq org-roam-dailies-capture-templates
'(("d" "default" entry
"* %?"
:target (file+head "%<%Y-%m-%d>.org"
"#+title: %<%Y-%m-%d %a>
#+CREATED: %<%Y-%m-%d %a>
#+MODIFIED:
* Daily Intent
The one thing
___
??
* Log
-
** Todos
** Pings
* Perso
** [[id:873C893B-DE3B-4433-87D7-A51806D7CA16][Morning Pages]]
[[file:~/Documents/org/journal/journal-2023.org.gpg::* %<%Y-%m-%d %a>][ %<%Y-%m-%d %a>]]
** [[id:9AD761D3-02F4-40DD-AED2-13AED735290E][Storyworthy]]
** Meta
- Where: ???
- Weather: ???
- Music: ???
- Sleep: 7h?
- Weight: ???
- Energy: L/M/H
- Effective: L/M/H
- Mood:
*** [[id:50EABEC4-239C-4123-A106-4B97417D98D2][Exercise]]
*** [[id:CFB3EFF4-1237-4E35-9385-77D404611596][TIL]]
*** [[id:3F912AB7-47DB-46A3-AADB-CA9F4589C840][Highlights ]]
*** [[id:D660A331-01E0-4247-B74F-A28FAF4C30C2][Lowlights]]
*** Eats
- Breakie: ???
- Lunch: ???
- Dinner: ???
*** [[id:E50848D2-1CB5-4B0C-B1AC-B1952A37A37C][Gratitude/Savoured]]
1.
2.
3.
"))))
Weekly Review
One of the better things I introduced into my workflow and which ends up just being this amazing habit for course correction and sanity checks (esp when things go off the rails a bit), is the weekly review. This is something DAvid Allen insists on in his GTD system, but somehow I felt it wasn’t necessary until I started doing it much more habitually and realized what a powerful tool it was (particularly combined with a connect between my quarterly goals and actions for the week.
So, every Sunday evening there’s some time blocked off in my cal to do my Weekly RPP, which is short for Review, Plan, and Prune.
I try from looking at everything I need to do in the week and sort of thinking about the one thing I wan to accomplish each day in sort of broad, general terms as well as what my “weekly intent” is. The rest is me filling in the things that are priorities and making sure they’re connected with the Quad I have
Don’t be scared off by the template. Beside the weekly review where you look back at the week and kinda “score” yourself as well as doing a quick “What Went Well”, “What Could Have Gone Better”, and “What Will I Do Next Week” it’s more a way to close out the week and reset for the coming week. I also find it’s key for me seeing stuff I need to make time for in the next week as well and making sure I give myself space during my days of that week to actually get that done without stressing myself overworking.
("7" "Weekly" plain "%?"
:target (file+head "~/Documents/org/logs/${slug}.org"
"#+TITLE: ${title}
#+CREATED: %u
#+MODIFIED:
* Intents
Week Goal: ??
|----+--------+-----------+----------+---------+---------+---------------+-----------|
| | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|----+--------+-----------+----------+---------+---------+---------------+-----------|
| 🐧 | | | | | | | |
|----+--------+-----------+----------+---------+---------+---------------+-----------|
| 𝚫 | | | | | | | |
|----+--------+-----------+----------+---------+---------+---------------+-----------|
* Commits
|---------------------------------------+------------------------------------------|
| *This Week* | *Q1 OKRs* |
|---------------------------------------+------------------------------------------|
| 1. | 1. WO and runs. Bed by 11:00. |
| 2. | 2. Astro Foundations: SR+CM+Obs progress |
| 3. | 3. Code replacement for AArk |
| 4. | 4. Write: Blog catchups and Book ½ draft |
| 5. | 5. PhD: COMA Infra |
|---------------------------------------+------------------------------------------|
| *Next 4 Weeks* | *Health Metrics* |
|---------------------------------------+------------------------------------------|
| 1. 2023 Travel plan | 1. Weight + health + fatigue |
| 2. Belong Matrix (choose 3) | 2. Astro + PhD progress progress |
| 3. Do Dec+Jan Stargazing Obs | 3. Coding progress |
| | 4. Habits (W/R/O/S/L/Rev) |
|---------------------------------------+------------------------------------------|
Watched:
Played:
Read:
* Buckets
** Sharpen
3 wo/run + movie + game + read
⬜ ⬜ ⬜ ⬜
** Create
Blog + Book
⬜ ⬜
** Invest
COMA + Stocks + AArk
⬜ ⬜ ⬜
** Learn
Astro + Docker/Airflow + Rust
⬜ ⬜ ⬜
** Review, Plan, Prune
Buckets + Weekly Review
✅ ⬜
* Weekly Review
⬜✅💪❌🔼🔽¼ ½ ¾ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘
** Score: XX/XX ~ XX%
** How'd it go?
** *🏆 Pluses*
1.
2.
3.
** 🔽 Minuses
1.
2.
3.
** ▶️ Next
1.
2.
3.
"):unnarrowed t)
OK, so I kinda like using emoji for marking it up. You do you. The key thing is getting into the habit of the weekly review.
Monthly and Quarterly Review
My Monthly reviews just went though an overhaul and, tbh, are not really templated yet (though have already begun to be.). I do have a system (which revolves around scoring Health, Wealth/Work, and Relationships both at the start and end of a month, but it’s more a loose system that I started near the end of 2022, and I still feel like it’s in flux and experiment, and want to let it gel a bit more before writing about it. Kicking the tires is important as well as working out the kinks.
The one key thing I do think you should do monthly, particularly with longer term Areas and goals is setting Accomplishments you want to get done in each area (as well as ones that happened you weren’t attending.).
While I think setting systems and habits ends up being more powerful longer term than simply setting Goals, working backwards from those goals to the things that need to get accomplished to get you there, and seeing how you’re tracking against those things, ends up being the only way you can feel like you’re making progress on longer term objectives. If not, you start to question what you are getting done with your time, since habits reduce a lot of work to the routine. Progress counts, both against those goals and in terms of your motivation.
CRM system
Originally, I was using org-contacts
for this mostly because it allowed me to put people’s birthdays into a file for each person and get reminders ahead of their dates. This worked less well for anniversaries and similar milestone dates.
I’ve replaced this with Org-roam completely now which ended up being better as a working system.
How It Works
Each person now has their own file in filled-in template form below.
Birthdays are now a TODO
heading and as a nice bonus, have a configurable warning in their datestamp so I can be warned further in advance for some people, particularly if I need time as I’m planning something for them or the like.
The other thing this allows me to do is to take advantage of the default org-mode tagging system, using a :crm:
tag to let the system know this is a person of interest to me and matched with a week tag (like :w04:
for this week) tied to the Pings
heading and filter and in my org-super-agenda
setup and which pops up their name with others for the week if that’s the next time I had wanted to contact them.
Before you scoff reading this, I would not say that I am a super-networker or anything. I created this system because I felt this was an area I really needed to work on. And I have to say I feel it works really well. It’s just too easy to get busy and not
One warning: I have not quite figured out a way to auto roll forward people with a :crm
tag and a past week to the current week. I imagine there’s org-ql
or a script I can write but right now you may need to be careful if you copy this idea that you manually move forward the people you don’t contact to the current or future week.
Operations for the CRM are pretty simple:
Pings
Each week, I look at the list of contacts in the Pings
list in my org-super-agenda
dashboard. From the dashboard I’ve got two choices. I can either
C-c z
and add a note to their logbook when I talk to them, or- I insert their name via an org-roam link in my daily file
I’m doing the latter much more often these days, I insert their name via an org-roam link in my daily file (“Called
Olivia
to followup onSORTIE
project - clarified photometry”) where both say,Olivia
andSORTIE
are org-roam links. Any new TODOs would get added in there or in the TODOs section in the Daily file.
On her Ping dashboard item, I then simply C-c C-q
to change the week tag to a relevant future week. So, in this case I follow up in 4 weeks and edit the :crm:uh:w04:
tag to :crm:uh:w08:
and hit return. 3 seconds.
Now, Olivia’s name will pop up in the Pings lst when we get to week 8 and I don’t need to try keeping all the people I’m supposed to talk to in a particular week in my head.
Birthdays and Anniversaries
I like remembering people’s birthdays and anniversaries, even if I cheat at it. Basically, for those people close to me (and who have actually told me their birthdays! You’d be surprised how many people keep it a secret), I have an entry for them and then I get some forward notice when it’s their birthday. For really important people, it also helps give me a little advanced planning time when I want or need to do something especially thoughtful.
As you can see from the template, you simply fill in the details for the person. No date in the template means it never gets surfaced.
* David A's Birthday - 1926-05-08 :bday:
DEADLINE: <2023-05-08 Mon +1y -4w>
(and yes, a birthday I would totally go to if invited!)
I’ve also started putting in friend’s wedding anniversaries and children’s birthdays as well, especially for weddings I was invited to or people I’m very close to.
Milestones
This is kinda silly, but I also have a reps.org file where in addition to recurring weekly, monthly and quarterly tasks, I keep interesting Milestones that happen in my life.
For example, the first time I visited a country, did something notable, and things I want to make sure I reminded myself of annually that aren’t a task or just so I take a moment to savour and be grateful for (yeah, ok, I know how that sounds, but I find it honestly makes me feel like a boss). As well, looking at those things often makes me evaluate my current situation more as well as spurring me onto more interesting life adventures. YMMV.
It works pretty much like birthdays and anniversaries above. It’s a simple flie of datestamped headings with a recurrence.
* Ran with the Bulls in Pamplona - Jul 6th, 1998
DEADLINE: <2023-07-06 Thu +1y -21d>
:PROPERTIES:
:CREATED: [2001-01-01 Fri]
:END:
(don’t run with the Bulls by the way, it was not smart.)
Science Stuff
Over the last year, I’ve been trying to carve a path to go back and do a PhD, ideally in astrophysics. One of the issues with being out of school and not taking a physics course in 25 years is that you have a lot of foundational material to learn (as well as advances in the field) to stopgap where your brain stopped on this stuff.
It’s been challenging, but I’d have to say org-roam has really helped much more than I would have thought on this front.
Why? Perhaps because learning is fundamentally about building connections about things between things you already understand and can extend, and for some reason org-roam makes that easier (as well as making it painless when you arfe referring to another topic, to link to it, review it, and then move on.
The only big thing I use here here besides org-roam and a tempalte for “Astro” stuff (which mostly just puts it into a directory to keep it from cluttering up