William Denton <wtd@pobox.com>
How I use Emacs for Getting Things Done
I use the Getting Things Done system to keep track of what I'm doing. It works very well for me. My personal stuff I keep track of in paper in a Filofax, but I have a lot more detail to track at work at York University, so I use text files. Here's my system.
The files
I have three files to manage what I'm doing, plus a monthly work diary:
-
next-actions.outline.txt -
waiting-for.outline.txt -
projects.outline.txt -
work-diary-200904.outline.txt, in which I jot down notes about what I did that day and what's on my mind.
(I'll explain about Emacs and outline mode below.)
git to manage the files
I use the distributed version control system git to manage these files. First, I set up a basic repository on a Unix host where I do my personal e-mail.
$ mkdir -p york/gtd $ cd york/gtd $ git init Initialized empty Git repository in /home/buff/york/gtd/.git/
Here I edited next-actions.outline.txt. More on its format below. Right now it only matters that the file exists.
$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add..." to include in what will be committed) # # next-actions.outline.txt nothing added to commit but untracked files present (use "git add" to track) $ git add next-actions.outline.txt $ git commit -m 'getting started' [master (root-commit)]: created e98f811: "getting started" 1 files changed, 4 insertions(+), 0 deletions(-) create mode 100644 next-actions.outline.txt $ git log commit e98f811b6b67ffd354ff33ef5df3da872a8e7059 Author: William Denton Date: Tue Apr 21 21:12:44 2009 -0400 getting started
Now I have a git repository with one file sitting on a Unix server I can get to from anywhere: work, home, anywhere with an Internet connection. I make a copy of it on my home machine:
$ cd york $ git clone picketfence:york/gtd/ Initialized empty Git repository in /home/buff/york/gtd/.git/ remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), 268 bytes, done.
I already had a york directory where I kept stuff. I was able to specify the server and file path with just picketfence:york/gtd because I already have ssh set up to save me time in ~/.ssh/config:
Host picketfence Hostname picketfence.server.com User buff
This lets me just say ssh picketfence and I connect. I've
got my keys set up so no password is required, either.
Back to cloning a local copy of the repository.
$ cd gtd $ ls -l total 2 -rw-r--r-- 1 buff wheel 44 21 Apr 21:13 next-actions.outline.txt
Here I can edit next-actions.outline.txt again and add a task. When I'm done, I do this:
$ git commit -m 'update' next-actions.outline.txt [master]: created 15f2969: "update" 1 files changed, 1 insertions(+), 0 deletions(-) $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean) $ git push Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 326 bytes, done. Total 3 (delta 0), reused 0 (delta 0) warning: updating the currently checked out branch; this may cause confusion, as the index and working tree do not reflect changes that are now in HEAD. To picketfence:york/gtd e98f811..15f2969 master -> master
The next day at work I did the same thing and made a local copy of the repository there. I made my lists and so on, and at the end of the day I committed all of the files. At home in the evening, I ran git pull and it downloaded all of the changes. I could edit them, do a git push, and then the next day do another git pull first thing at work.
Now I have an easy way of keeping my GTD files in synch across various machines. They're not in the cloud so I can work on them without Internet access.
Emacs and outline mode
I'm a Unix-loving geek, so of course I keep my text in text files. To manage the GTD files I settled on outline mode, which is built into Emacs.
That page explains what an outline mode is. Here's an example of mine:
* E-mail ** Catherine: accurate collection stats for Wikipedia entry ** LCC: will be away for next meeting ** Peter R: is Joomla in use anywhere at York? If so, could I get a test account to see what it's like?
To prevent having to run M-x outline-mode every time I open one of these files, I added this to .emacs:
;; outline-mode
(add-to-list 'auto-mode-alist '("\\.outline\\.txt\\'" . outline-mode))
(add-hook 'outline-mode-hook 'hide-body)
Now when I open next-actions.outline.txt Emacs automatically goes into outline mode and hides the bodies of all the entries so I just see the tasks.
It works for me
This system works really well for me. When I'm jotting down notes on what I did that day, if I remember I need to do something (e-mail someone, read something, fix something, whatever) I can switch buffers to the next actions list and put it down there. If I have a new project on the go, and I copy notes to the projects lists. If I have a next action of e-mailing someone, when I've e-mailed them I just copy the line to the waiting for list and add the date I sent the e-mail.
Plain text, Emacs to edit it, outline mode to give it some structure, and git so I always have a current copy of the files I need. I'm really happy with this.
Main menu
"Legendo autem et scribendo vitam procudito." — Marcus Terentius Varro (116 - 27 B.C.)
Links
identi.ca
Recent comments
- Quite right. I also consider
3 weeks 4 days ago - Don't forget Doom, Octopus,
3 weeks 4 days ago - Harnum finished reading the
4 weeks 1 day ago - Very excellent. Finishing up
8 weeks 1 day ago - Shouldn't this require an
8 weeks 1 day ago - This is very very
8 weeks 4 days ago - Back when I wrote using troff
8 weeks 6 days ago - These prices seem very low
12 weeks 1 day ago - Summon, abt 40.000$/yr in
13 weeks 10 min ago - There can be legitimate
13 weeks 1 day ago


Comments
I think I did look at Dropbox when I started this. It looks pretty good, but there wasn't a Linux client at the time, IIRC. If there was, I guess there was something about keeping this "in the cloud" that bugged me.
rsync would work but wouldn't handle merges. git does, and it's just fun to use. I'm not denying there are simpler solutions, but I have fun with this.
I found out about org-mode after I'd been using outline mode for GTD for quite a while. It looks really impressive, very powerful — in fact more powerful than I need. I read things like How I use Emacs and Org-mode to implement GTD and thought about how I might switch over ... but then I decided outline mode does everything I need and I was happy as I was. If I need more than outline mode can do I'd probably go to org-mode, though.
Post new comment