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:
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)
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.
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).
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!
My Random Posts widget turned up a link to Another kitten who must not be named!, which told the story of how my parents adopted Ollie, another stray cat.
And of course there’s Neko, my somewhat psychotic but sweet-to-me cat.
I miss them. I rarely talk about the cats during my webcam chats with my family because there’s not much I can do. W- has asthma, so no kitties ever. =( So I content myself by watching cat videos on Cute Overload. It’s nice not dealing with kitty litter, but it’s not the same as feeling something purr as it nestles in your lap.
Here is my cat:
Scottish Folds have nothing on my cat. =)
I miss her. But I’m still glad I had a chance to rescue her from inside the walls, and I’m still glad that I woke up at odd hours to feed her, and I’m still glad that I got tremendously attached to her. And I really appreciate how my family’s still taking care of my cat even if she tears up all the furniture…
On Technorati: cat
Random Emacs symbol: modula-2-mode – Command: This is a mode intended to support program development in Modula-2.
I’m beginning to understand what comes naturally to me, the strengths that I can build on for an excellent career. One of the things that I’m good at and working on getting even better at is information development. This week, I started on a wiki that’ll document some of the best practices we’re learning at IBM for using these emerging collaborative technologies. I loved figuring out a structure and filling it in with tips and examples that I’ve seen. I’ve also been working on my book, and I’m now up to 13 raw pages. I’ve still got a long way to go (35 pages due by Dec 31!), but it’s a lot of fun explaining (and re-learning!) the things I picked up over the last six years. (Has it really been that long?) I enjoy writing and talking about what I’ve learned because I learn even more along the way. =)
Another strength that I exercised and developed this week was that of connecting. I had a number of deep, thought-provoking, insight-rich conversations with other people, and by that I meant that I had all these wonderful opportunities to ask people questions and learn from their experiences. The conversations weren’t always bright and sunny. In fact, some of the best conversations were where in addition to asking questions, I also found myself telling stories about how things could be, how things should be.
Oh, and I finished “Me and My Katamari!” Sense of accomplishment. I rarely finish video games, normally losing interest after a while. Maybe this shows that I’m learning how to do that. It helped that W- was also playing it, and that the game was broken down into 5-minute chunks. And it’s fun finishing things well… That’s something I’d like to get hooked on, just like I’d like to build exercise into my daily habits.
And I got started with homebrew development for the Nintendo DS. I’ve gone through some of the tutorials. =) The first thing I’d like to do is build a personal finance module for DS Organize. Good time to get back into embedded C programming. And it’s the ARM architecture, too, just like when I was programming on the iPaq.
What’s up for next week? Christmas and Boxing Day are holidays over here, and I’ll be working on Monday and for the rest of the week. Aside from the wiki I’m doing for work, I’ll also work on my book, and I’ll spend a little time getting in touch with people. My work goal is to finish all the tool recommendations. My personal goal for next week is to review my contacts and either get back in touch with people or archive old contact information. =)