Being the computer geek that I am, the temptation to tweak my GTD system is often irresistible. Over the past several months, I have been evangelising plain text files for a number of purposes, including at least once on this forum. I decided that I should eat my own dog food and at least try using plain text files for my GTD setup. It's an ongoing process but I wanted to share it with you because I believe something simple and beautiful has emerged.
The philosophy behind text files is that they are readable on any computer with a text editor (i.e. all of them) and I can write scripts to automate anything I want. This can be simple stuff like searches right up to complicated stuff like web servers and graphical interfaces. In short, I'm not constrained by someone else's ideas of a list manager. It can be as simple or as complicated as I need with exactly the features I want (no more and no less).
Getting Started
My old system was on Toodledo. They offer a CSV download so I grabbed that and had one large flat file with everything in: Actions, projects, ticklers, somedays. I wanted each line to make sense out of context so I reformatted the file to look a bit like this:
@Work Water desk #plant (Started 2015-02-23) (Due 2015-03-02) (Repeat weekly)
The fields like "Started" and "Due" were all optional. I didn't like this format but it was just a quick way of getting started that was readable for me and parsable for scripts. Hashtags have no special meaning other than to help me with text searches and the list name (@Work) could be anywhere in the line, not just the start.
Everything was in one big text file. I put it on Dropbox et voila: a fully functional text file GTD setup I could access from anywhere.
Optimising Workflow with Scripts
Working off one big file was a bit unwieldy, especially since actions, projects, ticklers, etc were all together. I started writing some scripts to:
* Tabulate all list names with their number of items.
* create a temp file for a list for editing.
* merge the edited temp file back in.
* filter out actions that had not started yet.
* sort items
* truncate output to fit the screen.
This was working really well. I could tap a few keys and jump straight to a context list. The hashtags were really useful. I could use the same mechanism to pull out all the entries for a particular hashtag (which were usually the same project)
Ditching the Scripts
I was really pleased with my scripts and excited about the direction of this project. However, In one weekly review, I realised most of the scripts I was planning to add only existed to get around the problems associated with using one big file. I decided to separate things into four files: someday.txt, ticklers.txt, projects.txt and actions.txt
When I did this, it became apparent that "Start date" and "Repeat" were only useful for ticklers, and that actions that had them were serving a dual purpose. I copied these actions to the tickler file and removed these fields from elsewhere in my system.
I now see the conceptual difference between ticklers and actions. They are "reminders of stuff" and "the very next thing to do" respectively. The "Water plant tickler" may spawn a similarly-named action each week but I want to get into the good habit of treating these concepts differently (at least for the time being).
Another thing emerged: all the scripts I had written were now obsolete. I was a bit sad at this but deleted them anyway.
I had originally planned to split my action list further, into a file for each context. The current arrangement was just supposed to be a point along the way. However, my action file only had about 150 lines and it was easy to scroll up and down to see different contexts, perhaps easier than opening a different file.
Simple and Beautiful
My software setup is Dropbox and Sublime Text. But it could be any cloud service and any text editor. There are no scripts or automations. The action file is sorted by context (i.e. alphabetically with the context as the first word.)
Using my system is this simple:
To add an action, I type it in.
When a task is done, I delete it.
To change an action's context, I edit the first word and press F9 to resort.
To see the actions for a context, I scroll up or down the file.
There are some features that I used to like that I don't have any more: item counts for each of my lists; linking between projects and actions; notes field in my actions; start dates everywhere; The star field for temporarily highlighting; saved searches; a checkbox for done.
I don't miss any of them, and I say that knowing that within an hour I could implement each in any way I could imagine.
I thought I was clever when I used all the bells and whistles I had before. However, by giving myself permission to program my own system, I have settled on something that is very similar to the recommendations David Allen set out in his original book. I find this embarrassing and reassuring in equal measure.
Looking to the Future
Nothing is ever perfect. It's not easy for me to see my lists on my (android) phone, despite Dropbox syncing the file. It looks like there are apps that can display text files as widgets. I hope one works well enough with my layout. If not, I can always fall back on my original philosophy and write an app myself.
Universal capture is a separate issue but I would like to use my phone as a capture tool to write straight into a text file. I haven't begun to look for solutions yet.
My project support material needs some attention. I have been toying with the idea of linking folder names via hashtags. I could do it with a simple script but I'm worried I might be reintroducing unnecessary complexity.
If you got this far then thanks for reading. I feel the path I took was quite enlightening for me and I hope you enjoyed reading about it.
The philosophy behind text files is that they are readable on any computer with a text editor (i.e. all of them) and I can write scripts to automate anything I want. This can be simple stuff like searches right up to complicated stuff like web servers and graphical interfaces. In short, I'm not constrained by someone else's ideas of a list manager. It can be as simple or as complicated as I need with exactly the features I want (no more and no less).
Getting Started
My old system was on Toodledo. They offer a CSV download so I grabbed that and had one large flat file with everything in: Actions, projects, ticklers, somedays. I wanted each line to make sense out of context so I reformatted the file to look a bit like this:
@Work Water desk #plant (Started 2015-02-23) (Due 2015-03-02) (Repeat weekly)
The fields like "Started" and "Due" were all optional. I didn't like this format but it was just a quick way of getting started that was readable for me and parsable for scripts. Hashtags have no special meaning other than to help me with text searches and the list name (@Work) could be anywhere in the line, not just the start.
Everything was in one big text file. I put it on Dropbox et voila: a fully functional text file GTD setup I could access from anywhere.
Optimising Workflow with Scripts
Working off one big file was a bit unwieldy, especially since actions, projects, ticklers, etc were all together. I started writing some scripts to:
* Tabulate all list names with their number of items.
* create a temp file for a list for editing.
* merge the edited temp file back in.
* filter out actions that had not started yet.
* sort items
* truncate output to fit the screen.
This was working really well. I could tap a few keys and jump straight to a context list. The hashtags were really useful. I could use the same mechanism to pull out all the entries for a particular hashtag (which were usually the same project)
Ditching the Scripts
I was really pleased with my scripts and excited about the direction of this project. However, In one weekly review, I realised most of the scripts I was planning to add only existed to get around the problems associated with using one big file. I decided to separate things into four files: someday.txt, ticklers.txt, projects.txt and actions.txt
When I did this, it became apparent that "Start date" and "Repeat" were only useful for ticklers, and that actions that had them were serving a dual purpose. I copied these actions to the tickler file and removed these fields from elsewhere in my system.
I now see the conceptual difference between ticklers and actions. They are "reminders of stuff" and "the very next thing to do" respectively. The "Water plant tickler" may spawn a similarly-named action each week but I want to get into the good habit of treating these concepts differently (at least for the time being).
Another thing emerged: all the scripts I had written were now obsolete. I was a bit sad at this but deleted them anyway.
I had originally planned to split my action list further, into a file for each context. The current arrangement was just supposed to be a point along the way. However, my action file only had about 150 lines and it was easy to scroll up and down to see different contexts, perhaps easier than opening a different file.
Simple and Beautiful
My software setup is Dropbox and Sublime Text. But it could be any cloud service and any text editor. There are no scripts or automations. The action file is sorted by context (i.e. alphabetically with the context as the first word.)
Using my system is this simple:
To add an action, I type it in.
When a task is done, I delete it.
To change an action's context, I edit the first word and press F9 to resort.
To see the actions for a context, I scroll up or down the file.
There are some features that I used to like that I don't have any more: item counts for each of my lists; linking between projects and actions; notes field in my actions; start dates everywhere; The star field for temporarily highlighting; saved searches; a checkbox for done.
I don't miss any of them, and I say that knowing that within an hour I could implement each in any way I could imagine.
I thought I was clever when I used all the bells and whistles I had before. However, by giving myself permission to program my own system, I have settled on something that is very similar to the recommendations David Allen set out in his original book. I find this embarrassing and reassuring in equal measure.
Looking to the Future
Nothing is ever perfect. It's not easy for me to see my lists on my (android) phone, despite Dropbox syncing the file. It looks like there are apps that can display text files as widgets. I hope one works well enough with my layout. If not, I can always fall back on my original philosophy and write an app myself.
Universal capture is a separate issue but I would like to use my phone as a capture tool to write straight into a text file. I haven't begun to look for solutions yet.
My project support material needs some attention. I have been toying with the idea of linking folder names via hashtags. I could do it with a simple script but I'm worried I might be reintroducing unnecessary complexity.
If you got this far then thanks for reading. I feel the path I took was quite enlightening for me and I hope you enjoyed reading about it.