One of the projects that I had decided I wanted to take on during my break was to review the web application called Remember the Milk (RTM), and see how it would integrate with my existing GTD (Gettings Things Done) workflow. I am being far from original by writing about GTD and RTM at this stage in the game, but what I can provide is a narrative that may help you in getting yourself more organized, and provide some insight into how you may be able to migrate your own tasks or current system into something similar to this.
My GTD system at home has evolved organically, and partially through my love of aesthetics. There, I said it – I like things that look pretty. That’s fine, as long as it doesn’t hinder any of the more important things. Although my system looked nice and was functional, it felt like it was limited in scope and what I could accomplish with it. If I wanted to quickly get a view of what tasks I needed to do based on some new arbitrary criteria that I hadn’t thought of before, I would either need to manually search through all of my lists, or create a new list to redundantly store all of the items that fit this new criteria (and in doing so, manually search through all my lists in the process of creating this new one). Although I liked the way the system worked, I always had this nagging feeling in the back of my head that I could do so much more with a system that was designed from the ground up with GTD in mind, rather than what I was currently using.
Since converting everything over to RTM and making a go of it for one week, I am sold. The application is very efficient, and integrates perfectly with my GTD workflow. In fact, it synergizes with it, providing me with many new ways to use my database of TODO items much more effectively than I ever did before.
Remember the Milk has a couple of things going for it. First of all, it is a web application, which means that my lists and tasks can go with me wherever I am. I don’t need to check in before leaving the house and copy anything I may need onto paper in order to reference when I’m out. If I’m working on a computer other than my own and an idea pops into my head, I can put in all of the work up front, adding an item to one of my lists and filling out the relevant details.
In addition to this benefit, RTM is simply a much more comprehensive tool for the job than using an ad hoc system like the stickies. What I mean is that RTM has been built with the concept of creating lists of tasks and TODOs in mind, so it provides many options for capturing the pertinent details relevant to things you need to get done. As an example, instead of simply entering in the name of a task, I can enter the name, add any relevant tags (@errand, @home, etc.), provide an estimate for the amount of time required (more on this later), and assign an item a due date.
I can also add any number of notes for a given item, which are then displayed sequentially in a separate view. This is especially handy for capturing any ideas or stray thoughts related to a particular task, and allow for a very organic workflow that can include mini brainstorming sessions related to a given task. With my previous ad hoc system, I would simply add any notes underneath the main item’s name by indenting and adding more text. That attempt would quickly grow out of hand for any item that had more than a few notes, as it would scroll the rest of my items off the screen.
Once I’d made the decision to try out RTM, the first step was to get an account and convert all of my existing stickies over to this new system. For now, I left everything in the sticky system as it was, simply copying across. This way, if things didn’t work out, I could just shut down my RTM account and pick up where I left off, albeit with the necessity of migrating a few new items back. Still, not too much hassle.
RTM’s system of employing lists that hold a set of items translated pretty nicely to my existing groups of tasks and lists, so it was especially simple to copy these notes across. For example, my previous sticky that held a list of gift ideas for Bay was moved across by:
- Create a new list called Gift ideas for Bay
- For each item in my previous list, create a new item in this new list
Okay, so that’s a pretty trite example, but we’re easing in here, so lay off.
Transferring most of my lists was the easiest task, as this had a one-to-one correlation with RTM’s native state. Once I started working on converting my TODO and project lists, I ran into a few snags.
The biggest catch was related to contexts and the division of lists. As of late, I have started to capture contexts for all of the items on my TODO list. The concept behind a context is that it is a quick reference to determine who, what, and where you have to be in order to accomplish a task. If I have a task that is Blog about RTM and GTD, I will assign that task the context @web (GTD uses @ as a shorthand to indicate a context). The reason for this is that I need web access in order to fully public a blog entry. In truth, I could break this task up into two parts: Write Blog Entry (for which the context would possibly be @laptop, or really just @computer), and Publish Blog Entry (for which the context would be @web). In this example, I have them together, as I usually accomplish the two parts in the same sitting.
I will explain more on how contexts can enable you to be more effective within RTM shortly, but for now, the main point is that moving these over into RTM presented my first speed bump. The real hurdle was simply that I actually needed to sit down and think about what contexts and tags I needed to capture in my system. Nothing is worse for functionality and searching than having a bunch of similar but different tags or metadata in your system, as you then end up searching for something like “All tasks that have tag:@web”, but end up missing the tasks that have the tag:@internet. Although it required a little extra time on my part, one of the steps of my migration process (in fact, one of the first tasks I entered into RTM) was sitting down and planning out what contexts and tags I would actually need.
The other item that I wanted to be able to move across was my status
tags. With the sticky system, I created places on my TODO list to hold
items for which I was waiting on something else (typically another
person). Whenever a TODO item was no longer in my control, I would
move it down into the Waiting For section, and go from there. But, how
did I make sense of this concept in the new system? Did I move an existing item into a new list whenever it left my control and passed to someone else? This was certainly one option, but I decided that I wanted to interact with lists as minimally as possible (ideally only having to work with this part of RTM/GTD when initially entering a task) and instead mainly interact with my tasks by changing the tags and other types of metadata associated with them.
One of the first things I did was look online for some ideas as to how to effectively order all of my tasks into lists. As you can tell from above, I was having a hard time getting a feel for where the distinction between tasks and tags lay, and how I could make good on my goal to work minimally with lists, and maximally with tasks. The first blog entry I came across was this one here, featured on the RTM Blog. In this entry, the author recommends creating lists for every project you have, dividing them up into personal, work, and school by prefacing each list with the tags ps, wk, and sc, respectively.
This approach is nice because it allows you to maintain but keep separate multiple sets of lists for different pursuits. I don’t have to look at ps lists when I’m under the gun at work or school, and can solely focus on items within those lists.
The author also recommends creating a na to assign to any task that is immediately actionable. This tag indicates that there is nothing that you need to accomplish before you can start work on this task – an important part of GTD, as we want to capture as many steps of a project as possible, but when it’s time to work, we want to focus solely on the next steps. It is a pointless exercise to focus on something that is currently bottle-necked waiting for something else to finish – we should be focusing on the task that is bottle-necking things!
My first iteration ended up following a lot of this author’s advice. I created the appropriate lists, and assigned the ns tag to all of my actionable items (I prefer ns for “next step”, rather than na for “next action” – simply a matter of preference). For any project, you should have a minimum of one actionable item. If not, you should be asking yourself why you do not have an item you can act upon. If it’s a lack of motivation, you should either delete this project, or move it into the Someday/Maybe list (see below).
I also really liked the author’s recommendation that you assign a “goal task” for each of your project lists. Create your project, and make the first task you enter take the following format:
.. [Goal of Project]
This will, in theory, do two things: This task will sort to the top (when sorting by name) due to its preceding two periods, and will provide you with an immediate idea of the aim of this project when you are performing your weekly review. Having this information readily available will make your life easier when you are reviewing your lists, and thinking about the underlying goal of a given project is a great way to ensure that you are on track (and stay on it) when you initially start entering a project.
It will also get your brain engaged in the process of brainstorming tasks when you initially enter a project. Sometimes you may be surprised simply by the process of writing down the goal for a given project (“Okay, so I want to have the TV on the wall. … Hmm, why do I want that? It won’t actually look prettier.. Am I only doing this for the coolness factor?”).
I also made it a point to assign a priority of “1” (the highest priority) to all of my Goal tasks so that these sort straight to the top of my list no matter what.
What are you waiting for?
We still haven’t covered something I mentioned earlier: items we’re waiting on. The author of the above blog recommended creating a list for all items that you are waiting on, and moving those items into the list. However, I didn’t like this idea for a couple of reasons. First off, this approach would require interacting with lists more than I want to. More of an issue though, is that, currently, the lists are the way that I can identify the project for which a given task pertains to. If I move a task called Crop Photos from the list ps – Wedding Photos to Waiting For, I lose the information that that specific is a step in the Wedding Photos project. How do I know which list I move it back to when I am no longer waiting for something?
No, this wouldn’t do. I made a mental note that I would need to find a better approach to accommodating these items, and moved on.
The last step of the process was creating a Someday/Maybe list for each of my personal, work, and school tasks. The Someday/Maybe lists contain items that may be cool to take on someday, but don’t really fit in with your current objectives, goals, or time-commitments. This is the place for any task like Go Skydiving or Learn Spanish. If you intend to complete these projects now, then they should be in their own list. However, if these items are currently just passing fancies, then they go in the Someday/Maybe list, and you capture only the general idea (for these items, it is not yet valuable enough to brainstorm tasks and steps to achieve them).
After completing the initial set up based on the blog entry mentioned above, I was still not satisfied. The items I had that I was waiting for were still nagging at me, and I felt like I could put tags to a more effective use. I searched further and found this excellent blog entry at SheenOnline. This author’s approach differed from the previous in that tags were used exclusively to denote that a given task belonged to a given project, as well as indicating that I was waiting on something.
This seemed a more practical approach to me, as I could have a task that was both part of a proejct, and marked as waiting for something. I went through all of my tasks and this time reclassified them using the system outlined in the blog entry. Specifically, you use the following special tags:
- Tags preceded with a @ are for context: @Home, @Downtown, etc.
- Tags preceded with a – are for status: -NS, -WF
- Tags preceded with a . are for project names: .FixSink, .FrameWeddingPhotos, .RedesignBlogLayout, etc.
In addition to these special tags, you can apply any other tags that you like to your projects. Once you have completed this process, you will have a large number of tasks that have specific contexts, some that will have a status (those that don’t will typically be tasks in a project that need something else to happen first), and lastly, a set of tasks without a project name tag (daily or ad hoc tasks) and those that do belong to a project.
The contexts that I am using are: @Web, @Laptop, @Home, @Downtown, @Phone, and @Errand. In RTM, you will want to assign any physical context (a specific location) as a location rather than a tag (these behave almost the same way, except that locations integrate with Google Maps, allowing you to quickly search for everything you can accomplish within 10km of your current location).
The statuses I use are: -NS, and -WF.&nbs
p; A task is either an actionable item (-NS) or not (in which case it does not have an -NS tag. Additionally, a task can be waiting for someone or something before I can complete it (-WF). Avoid the temptation to assign -WF to every task that is not an actionable item. -WF should be reserved for those tasks that have been delegated out to someone else.
The projects I have.. are too numerous to bother mentioning, and will not coincide with your own anyhow, so we can leave that one as is.
Smartlists and Handy Searches
Now that you’ve got everything tagged, you can begin creating smartlists. Smartlists are simply saved searches. One of the strengths of RTM is its comprehensive searching functionality, allowing you to search for any number of criteria and combining them to create effective lists. For each project tag that I created in the step above, I also created a smartlist to display all tasks with that tag. This gives me a way to quickly determine what steps are left on a given project (important for the weekly review).
Whenever you add a new task within the context of a smartlist, RTM will automatically assign that task with the appropriate tags, provided that the search saved for the smartlist is unambiguous. What this means is that any task created within the context of a smartlist with a search like this: tag:.becomeNinja AND tag:@Home will have both the .becomeNinja tag and the @Home location assigned to it. However, a task created in the context of a smartlist with a search like this: tag:.becomeNinja OR tag:.becomePirate will have neither tag assigned to it, as it is ambiguous which tag should be assigned.
What about the more interesting searches though? Some of the searches I have saved as smartlists are:
- Errands – “tag:@errand AND status:incomplete AND tag:-ns AND NOT tag:-wf”
This list displays all errands that I’m currently able to run. I define an errand as any task that I need to accomplish when I’m out of the house. Groceries, picking up drycleaning, buying a new set of squash shoes, all qualify as errands.
- Waiting – “tag:-wf AND status:incomplete”
Nothing complex here, but this is an important part of the weekly review. With this list, I can quickly assess who and what I am waiting on, and determine if I need to follow up with anything. This helps ensure that nothing slips through the cracks.
- Quickies – “timeEstimate:”< 1 hour” AND tag:-ns AND NOT tag:wf”
This is a very handy list to have. If you’ve created time estimates for your tasks as you’ve entered them (and you should get in the habit of doing this, as you won’t bother after you initially enter them), you can use a list like this to determine what you can accomplish quickly when you find yourself with a desire to get something done and only 30 minutes before you need to go and do something else. I often find myself referencing this list before I go play squash and before bedtime.
- No Due Date – “status:incomplete AND tag:-ns AND due:never”
This list allows me to assess all of the next steps for which I have not yet assigned a due date. These are items that are likely to slip through the cracks, as they will not show up in my main TODO list (see below). The items in this list may or may not be legitimate. Legitimate cases are the ones where I have planned out the tasks for a project and identified what the next steps are, but have not yet made the decision to actually commit to working on the project. If an item stays in this state for too long, I will eventually move the project into the Sometime/Maybe list (or just delete it if I no longer want to do it). This list is always checked as part of my weekly review in order to determine if I’m ready to commit to a new project, and to make sure I have no tasks that I have accidentally neglected to assign a due date.
- Completed Today – “completed:today”
I created this list when Bay came home one day and asked me what I’d done. I couldn’t tell her immediately, but quickly typed in this search and was able to show her everything that I’d accomplished (seriously, my marriage is more exciting than this makes it sound). Being able to quickly assess what you’ve accomplished in a given day is good for your psyche and will help you on those days when you feel like you haven’t been able to get anything finished. Don’t underestimate the value of this list.
- Todo Next – “status:incomplete AND tag:-ns AND (dueWithin: “1 week of today” OR dueBefore:today)”
This is the main list that I work from on a daily basis. It contains all items that are not yet completed, are next steps (ie, actionable), and that are either due within 1 week of today, or are overdue. The list is ordered based on due date, so that I can work through from top to bottom, closing out tasks on my plate, and getting a feel for what the coming week looks like at any moment. This list currently contains items that I have tagged as waiting for something and I am not yet sure if this is a good thing or a bad thing. As this list essentially acts as a daily tickler file, it isn’t necessarily a bad thing being reminded that a given task is approaching a due date but that I am still waiting for something before it can be completed. If this becomes bothersome, I will simply update the search to remove all tasks that are waiting for something, and rely on my weekly review in order to ensure that they don’t slip through the cracks.
In addition to everything mentioned above, I use RTM to manage and maintain any lists that exist outside of my GTD system. By this I simply mean lists that are just.. lists. Gift ideas, ideas for dates, ideas to blog about, etc. None of the items in these lists are specific tasks that I need to act upon, and the beauty of the above set up is that nothing in these lists will show up.
Trick out my RTM
One thing I noticed is that RTM’s interface is a little spartan, and at times, cluttered. It becomes especially cluttered when you are running a large number of lists, as you will have the tendency to do if you are using it for GTD in this manner (every project ends up being its own smartlist, adding to the smart and regular lists I’ve just mentioned above). I went searching for ways to alleviate and improve the look and feel of this interface within Firefox. I’m using Firefox because Safari is my main browser, and I needed a application to remain persistent on my machine and allow for as much customization as I wanted. Firefox is a bit of a memory hog, though I haven’t noticed any real problems.
In order to make this a persistent part of my system, I ended up doing the following:
- Set Firefox to open and sit in, by default, my first virtual desktop.
I use six virtual desktops – one contains my GTD system, one contains my browser, one my mail, one my music, etc. This simply provides an easy way to mentally and visually separate my windows, and is functionality that is supported by default on Mac and UNix/Linux machines. Windows users can download third-party applications to support this (though I don’t know offhand what they are).
- Set the home page of Firefox to be three tabs: My RTM home page, A page showing the list of keyboard shortcuts for RTM, and a page showing a list of search criteria that can be used in RTM.
This gives me a quick s
et of reference pages to jump to whenever I can’t quite remember how to search for a specific thing, or if I am trying to learn a new keyboard shortcut
In order to improve the layout of RTM, I followed a number of the suggestions in this lifehacker article. The significant changes are:
- Show keyboard shortcuts next to each item
This removes the guesswork for keyboard shortcuts, and will help you learn the appropriate shortcuts much faster. Using keyboard shortcuts is a must if you want to get the most out of your system, as I find mousing around horribly inefficient when you can click on key and jump straight to the appropriate spot on screen, ready to enter your text.
- Longer search box
Nothing is more annoying than trying to review the search you just created to ensure that it’s correct, and having to arrow-key through 15 characters of text. This improvement simply makes the search input box larger so you can see most (if not all) of what you’ve entered.
- Widescreen layout
This simply optimizes the RTM interface for a wider screen, allowing you to view more at once.
- RTM Greasemonkey Script
Greasemonkey is an add-on for Firefox allowing you to add custom user-scripts to the application. These scripts can be applied globally, or specifically for a given site (in this case, for RTM). This tweak is the most important one, as it moves all of your lists from tabs to a much cleaner look on the left side of the screen. It also creates some much needed shortcuts (Control-Shift-J and -K to move up and down the lists on the left side, Control-G to jump to a given list, and Control-M to move the currently selected task(s) to a given list).
I also installed the Quicksilver plug-in for RTM, which allows you to rapidly add a task to your set of lists from anywhere using the familiar Quicksilver interface. As much as I love Quicksilver, I haven’t actually found the need to use this plugin, as my process for adding a task is typically: Control-1 (switch to virtual desktop #1, which contains RTM, and only RTM), hit T to create a new task, fill out pertinent details). I also like to have the context of the RTM system when I’m entering new tasks, which you lose when you enter a task right from the Quicksilver interface.
So that’s about it. This project has been a significant success, and I’m excited for the opportunity to put the next evolution of my system to the test in two weeks when school starts.
Lastly, most of my purpose in blogging is as a way of tracking and documenting my own personal growth. However, it is also my own manner of publishing and establishing my credibility as an expert in certain fields, such as productivity, and project management. I won’t ask this often, but from time to time will mention that if you find any of these articles helpful, please do me a small favour and share them in Facebook, Google Reader, Twitter, pass them along to people you know that may derive benefit from them, or whatever else you deem appropriate.
That’s all for now – if you have any questions or feedback, please leave a comment and I will address.