eater.org

Copyright © 2006 Eater, All Rights Reserved.
Not affiliated with my employer. [Feed Eater]

Add to Google

2008-01-31

Ninja-like productivity with GMail


All humility aside, my usage of labels and filters in GMail is way better than yours.

Like many people with keyboard jobs, I find myself inundated with email (I get hundreds a day.) After being overwhelmed for a while, I discovered some GMail tips that helped a great deal with my conceptual understanding and practical usage of labels and filters. Then, I discovered Getting Things Done, and that put the final touches on my philosophy of using GMail as a productivity tool.

First, a strict rule that's not up for debate: do not create a separate label for every mailing-list or sender you care about. Use search instead ("to:foo-list", "from:bossman"). Most GMailers realize this, but a lot of people either don't realize it, or they just fall into the old folder-paradigm habit. Do you have a crapload of labels that correspond almost 1-to-1 for mailing lists? If so, you're forsaking one of the central tenets that makes GMail really useful.

Second, you'll need to have a basic understanding of GTD. It is near-blasphemy to sum it up in a nutshell, since the GTD system is so packed with useful techniques for streamlining your work process... but I'll do it anyway.


  • Everything you need to look at goes into a "stuff" bucket. You look into this bucket when you're ready to work on stuff.

  • For each item in "stuff", decide what the very next tangible action required is.

  • If you can do it in 120 seconds or less, do it now.

  • If you can't do it in 120 seconds or less, you put it in a "next" bucket to process later.

  • If you're waiting on something, put it in a "waiting" bucket.

  • Items that take more than one tangible action to complete are "projects". Keep them in a "projects" bucket.

  • Projects you're not sure about doing in the near-term go into a "maybe" bucket


Again, this is a very high-level glance at GTD, and there are many subtleties, but that's the gist for the context of the current discussion.

I use GMail labels as buckets. Here are my buckets. (My buckets. Let me show you them.)


  • _maybe

  • _next

  • _projects

  • _stuff

  • _waiting


Also, certain items in my buckets may have another (optional) label/tag, which infers a physical context for the task. Remember, you may have multiple labels apply to a single item in GMail.


  • @agenda (Items to be brought up with people in the context of a discussion / meeting.)

  • @errand (Things I can only do when I'm out and about.)

  • @home (Things around the house, like "take out the trash fortheloveofgod it is starting to smell".)

  • @large (Things I need a long interrupted block of time to do effectively, like a non-trivial chunk of code.)

  • @phone (Tasks requiring phone-talking. I hate these, but it's nice to drill down on them all at once when I have the opportunity.)


These are prefixed with _ and @ so they are listed first (and grouped) in my Labels list. Other "non-bucket" labels follow below them.

After distinct bucket-labels and context-labels are defined, you can add some Filter action to the mix. Here's a generic version of my current filter list:


# Filters for applying the _stuff label. These are all items I need
# to at least look at once in order to decide if they are worthy of
# a _next label.

Matches: (to:eater OR cc:eater) -{subject:"chat with" OR to:(eater+next) OR to:(eater+waiting) OR to:(eater+projects)}
Do this: Skip Inbox, Apply label "_stuff"

Matches: listid:myteam
Do this: Skip Inbox, Apply label "_stuff"

Matches: listid:myproject
Do this: Skip Inbox, Apply label "_stuff"

Matches: to:(other-important-list)
Do this: Apply label "_stuff"

# Bigshots also get a Star (in addition to the _stuff lable) just to
# be sure I don't miss their emails.

Matches: from:(myboss OR mydirector OR otherbigshot)
Do this: Skip Inbox, Star it, Apply label "_stuff"

# Things I really like to read get a _review label. They don't
# belong in _stuff since it's not critical I act on any of it.

Matches: to:(yiff-discuss)
Do this: Apply label "_review"

Matches: to:(right-wing-fascism-discuss)
Do this: Apply label "_review"

# I send notes to myself via command line, like "gtd.sh -n
# 'do foo'"... this just sends an empty email to me with
# "do foo" in the Subject. Depending on the item, I want to
# apply an appropriate label. I use GMail's "plus syntax":
# anything addressed to eater+next@gmail.com is delivered to
# eater@gmail.com, but I may filter "to:eater+next" uniquely.

Matches: to:(eater+next)
Do this: Skip Inbox, Apply label "_next"

Matches: to:(eater+projects)
Do this: Skip Inbox, Apply label "_projects"

Matches: to:(eater+waiting)
Do this: Skip Inbox, Apply label "_waiting"

# Some super-spammy lists shouldn't even go into my Inbox, but I still
# want them available for searching.

Matches: to:(spammy-list)
Do this: Skip Inbox, Apply label "lame_notify"

Matches: to:(other-spammy-list)
Do this: Skip Inbox, Apply label "lame_notify"


To summarize, anything that I need to explicitly deal with (or at least look at to determine if it needs dealing with) gets a _stuff label automatically. Since I always have a terminal window open, I can use a little bit of ugly shell-script to add items, which get the appropriate label automatically. This is almost always just for adding next actions, like: gtd -n 'schedule meeting with whatshisface re widgets'. This generates an email to eater+next@gmail.com, which goes to eater@gmail.com, which the to:eater+next filter tags with a _next label.

Got it? Okay, so here's my typical daily work cycle:

  • Item arrives in _stuff label, which I check reguarly throughout the day.

  • Many things I handle right away, like reply to some simple question, or delegate a task to somewhere more appropriate. (Remove label _stuff.)

  • If it requires more than 2 minutes to work the very next action, I Apply Label _next, and remove label _stuff.

  • If it requires action from someone else, I apply label _waiting and remove label _stuff.

  • If I'm in a specific context, like near a phone and have some free time, I search for items labelled _next with context label @phone.

  • Similarly, I have a Calendar reminder set to text-msg me at 9PM nightly. This is my cue to search _next + @home. ("Oh yeah! The trash needs to be taken out!")



Once a week, I do a weekly review. It looks like this:

  • Review _waiting items. If somebody has let a task go stale in their court, I bump the thread and remind them.

  • Review _projects items. Do I have a new next action (_next) for any of them?

  • Review _maybe items. Should any of these become actual _project items yet?


I've been working this system for the better part of a year. I rarely, if ever, miss an email I should deal with. When I defer something to someone else, I know exactly who it's defered to, and the last time there was action on it. I know exactly who to follow up with. For any given context (at home, near a phone, running errands) I know exactly what I should be doing (reviewing errands I know "Oh right, I need to pick up some Scotch.", or near the phone,
I know "Oh, need to call my insurance company about my address change".) This maps nicely to an email-driven job.

I'm more productive. I know exactly what's on my plate at any given time. I can evaluate potential new comittments without fear of over-comitting. I don't let people down by not responding to their e-mail. I don't defer things and let them go stale. I am a corporate ninja.

This is only a cursory overview of GTD; I recommend you read David Allen's book, Getting Things Done.

Further caveats and suggestions.


It takes four or five big tries to really implement GTD effectively. I'm on my fifth, and I'm just now really getting the hang of it.

There are lots of little utilities to implement GTD workflows via software--even a Firefox extension that works directly with GMail. Avoid them, they all suck. (I don't want to hear your personal story about foobar's software util that works really great. Good for you. It still sucks.) Try it with only filters and labels for a while... it's really easy enough. Sometimes those add-on efficiency tools just get in the way, making you less efficient. Simpler is better here.

To complete the corporate-chic-trendy persona, I carry a Moleskine notebook in my back pocket to jot notes in, along with a short stack of index cards in a binder clip for writing down next actions (one per card.) This is for when I'm not in front of my laptop or workstation. When I get back to my desk, I quickly transcribe my paper notes into my GMail-bucket system. You can use your Crackberry for this, but I find the Luddite method to be quicker and less prone to dangerous gadget-creep.

I still clear out my Inbox regularly, but it's something I do quickly--once every day or two--and entirely at my own leisure. I know that nothing critical (that is, personally actionable) is in there, so it's all just information I can either read or ignore without ill effect on my personal obligations. (For critical things, my _stuff label view is my real inbox.)

Use Calendar text-message reminders to assist. I mentioned my weekday 9PM @home context reminder, but it's also useful for blocking out your weekly-review time, and other things you might otherwise use a tickler file ("43 folders" system) to implement.

8 comments:

Brett W. Thompson said...

So awesome. Thank you for sharing this! :) The simplicity is really appealing, and you explain it really well! And having seen how on top of things you are, it seems to work quite well :D

Wildhair said...

Cool. I see you don't employ the 43 folder method. I enjoyed your talk in Greenville,SC. I will clear out my gmail box and give it a go. I've been trying to use 'Thinking Rock', but it sucks even though it is about the best of them. The only problem I have with attempting to do everything with gmail, is that it isn't available all the time to me. So while it does work well with you, I will still need to find another alternative.

phxx said...

Thanks for your post. It has inspired me to redesign my current daily workflow.

I've not so experienced with sending automatic emails, though could you please post your gtd.sh script? That would be great. Thanks.

Eater said...

Sure:

"""

#!/bin/sh -e

op="$1"
shift
thing="$@"

case "$op" in
"-n")
if [ -z "$thing" ];then
echo -n "next action: "
read thing
fi
echo '' |mail ${USER}+next -s "$thing"
test $? || echo 'err :('
;;
*)
echo "Usage: $(basename $0) -n}"
exit 1
;;
esac

exit 0

"""

I wrote this in five minutes and it's ugly. I originally meant to use it for create new "_project" and "_waiting" type items too, but I really just use it to add next actions, like:

gtd -n schedule vet appointment

This is, of course, for Linux geeks who tend to have a terminal window open along side their browser window, so it may not work for you if you're not one of those weird people :)

You'll also need the 'mail' program installed -- mailx(1) -- for this to work.

phxx said...

Yes i'm one of that kind. At least i have yakuake running (a quake-like terminal, which opens on keypress).

But i think people who doesn't like to use the console could integrate simple dialog boxes with kdialog like that:

kdialog --textinputbox "Enter your next action:"

Eater said...

Ah, gotcha. As long as you have 'mailx' installed (a common package on most/all distributions) and a way to run the following command:

mail you+next@gmail.com -s $the_next_action

... then you should be good to go. Filter on to:"you+next" to apply your _next label, and voila :)

phxx said...

Again: Thankyou for your inspiration. I wrote me a litte python script since i don't know much about bash.

Here is the code if someone is interessted: http://ubuntuusers.de/paste/390507/

And i had problems sending mails with ubuntu. I had to do a reconfiguration of exim with the command:

dpkg-reconfigure exim4-config

Eater said...

Nice!

Blog Archive