The daily rituals I described yesterday can also be done with Planner, another personal information manager for Emacs. In fact, I spent about four years managing my tasks using Planner before I tried out Org. My process then was similar to my Org process now in that I wrote the tasks down before I tried to organize or do them, and I built in some time for a review. The difference was that I didn’t organize most of my tasks into separate projects (or plan pages, as Planner calls them). Instead, I tended to organize them according to day. This was helpful when publishing my blog, as I could post my task list along with it. I also liked the greater control I had over my daily task list, and I often used blank lines or extra notes to keep things organized.
The core of the process was the same, though:
- Get the tasks out of your head.
- Schedule the tasks.
- Do the tasks.
- Review the tasks.
Get the tasks out of your head
The first thing I did each day was to put all of my tasks into my
Planner. I briefly scanned through my mail looking for action items,
and whenever I found something I needed to do that would take more
than two minutes, I created a task for it using
planner-create-task-from-buffer. This automatically created a
hyperlink back to the e-mail or file I was reading, and included
useful information such as the e-mail author.
I treated appointments just like tasks, although I added a timestamp
like @13:00 to make it easier to see and sort my appointments.
planner-create-task-from-buffer helped me keep track of reactive
tasks, or things that I needed to do because someone else asked me to
do them. However, I also made a point of reviewing my goals and making
up my own tasks so that I could work on my personal projects. For
example, I had a plan page where I put all my writing ideas, and I
added those tasks to today’s page once in a while.
I also scanned the last few day pages to see if I’d missed anything,
and the next few days to see if I needed to plan for anything.
Although the M-x plan command automatically brings tasks forward, I
didn’t use it to start my day. Instead, I reviewed the last three days
or so, marking tasks that I’d completed but not updated, cancelling
tasks I no longer wanted or needed to do, and rescheduling other tasks
forward using C-c C-c (planner-copy-or-move-task). I also reviewed the
next three days or so. C-c C-j C-y (planner-goto-yesterday) and C-c
C-j C-t (planner-goto-tomorrow) were handy for flipping through pages.
To make the shortcuts shorter and more natural, I bound them to F9 F8
and F9 F10 with:
(global-set-key (kbd "<f9> <f8>") 'planner-goto-yesterday) (global-set-key (kbd "<f9> <f10>") 'planner-goto-tomorrow)
At the end of this step, I had all the things I needed to do scheduled
So the first thing you need to do is get used to creating tasks
quickly. Get them out of your head and into Planner, where you can
then schedule, organize, act on, and review them. You can bind
planner-create-task-from-buffer to a convenient shortcut key such as
C-c t SPC by using the following code in your ~/.emacs:
(global-set-key (kbd "C-c t SPC") 'planner-create-task-from-buffer)
By default, planner-create-task-from-buffer asks you for a date and a
plan page when you create tasks. You can either slow down and think
about this, hit RET twice to accept the defaults, or modify Planner so
that it doesn’t prompt you at all. Being lazy, I chose to let Planner
put all the tasks on today’s page and a copy on the TaskPool plan page
for backup. If I knew I had to do something on a specific date, I
could tell it to prompt for the date by using the prefix argument (C-u
before the command).
Here’s the code that makes that happen:
(defun sacha/planner-read-task () "Do not prompt for date unless the prefix argument is given." (let ((planner-expand-name-favor-future-p t)) (list (read-string "Describe task: ") (if current-prefix-arg (planner-read-date) (planner-today)) "TaskPool" planner-default-task-status))) (defalias 'planner-read-task 'sacha/planner-read-task)
Organize the tasks
Getting the tasks out of my head often resulted in a long list of
tasks, not all of which I needed to do or could even do that day. Then
it was time to ruthlessly use C-c C-c (planner-copy-or-move-task) and
M-x planner-copy-or-move-region to trim my task list down to a
manageable size. I moved tasks that didn’t need to be done on a
certain date to the TaskPool, which I checked whenever I had some free
If I wanted to assign a task to a specific time, I just added a
timestamp such as @14:30 to the task. I had some code which
automatically sorted the tasks by time, so it would go to the right
I also used M-down and M-up (planner-lower-task and
planner-raise-task) to move tasks around. To visually group tasks, I
added blank lines and explanatory text. For example, I put errands
together and I moved the tasks up and down into a logical order for
If there were a lot of small items in my day, I also separated the
“must-be-dones” from the “nice-to-dos”. This wasn’t related to the
importance of the task, just the urgency. Urgent items went in the
first group, and non-urgent items went in the second group of tasks.
At the end of this step, I had a daily plan page which showed me my
tasks and appointments for the day, in the rough order in which I
planned to do them. I also had some tasks on future days, and some
tasks in my TaskPool.
Do the tasks
Now that all my tasks were on the page, it was easy to go through
them. To start working on a task, I marked it as in-progress with C-c
C-i (planner-task-in-progress). If I needed to postpone it, I used C-c
C-p (planner-task-pending). To mark it finished, I used C-c C-x
(planner-task-done). To mark it cancelled, I used C-c C-S-x
(planner-task-cancelled; does not work in some terminals).
Because I had loaded planner-timeclock.el using code like this:
the clock automatically started when I marked tasks as in-progress and stopped when I marked tasks as pending or done. I could also clock out of a task manually by using C-c C-o (timeclock-out).
Review the tasks
To review what I did that day, all I had to do was go to the day page using planner-goto-today, which I bound to F9 F9 with:
(global-set-key (kbd "<f9> <f9>") 'planner-goto-today)
I checked my timeclock reports with M-x planner-timeclock-summary-show, which gave me reports that looked like this:
Timeclock summary report for 2007.11.25 Project | Time | Ratio | Task Not Planned | 0:28:38 | 38.6% | Do weekly review . | 0:45:37 | 61.4% | Figure out how to set up syndicated blog on WordPress Total: | 1:14:15 | 100.0% | . Day began: 21:01:20, Day ended: 22:16:06 Time elapsed: 1:14:46, Time clocked: 1:14:15 Time clocked ratio: 99.3%
It’s easy to configure planner-timeclock-summary to add that report to
day pages automatically, but I rarely checked my time usage then, so I
didn’t set that up. I also didn’t usually need to see my time summary
for a particular project, but you could get that with
So at the end of this step, I had a warm and fuzzy feeling from seeing
many checked-off tasks on my task list. I published my task list to
the Net, too, which made it easy for other people to keep up to date
with what I was doing. Good stuff.
Planner helped me keep track of the different things I wanted to do.
Working with the other Planner geeks was also an incredible
experience. I’ve switched to Org for my task management because Org
does timeclocking better, but I still miss being able to easily
organize, publish, and tweak my daily task list. =) If you’re new to Emacs planning, I suggest giving both OrgMode and PlannerMode a try!