Find Me


Buy TapCellar on the App Store

Latest articles from Technology Notes

Nerds on Draft — Episode 12 - EDC

Gabe and I talked about “every day carry” stuff on this week’s Nerds on Draft podcast.

The topic wasn’t just about what kind of keychain we hang on our belts but it went into what it means to buy things that last, how we fetishize objects and childhood knife mishaps.

Here’s what I have been carrying around for about a year.

Sublime Text Task Management Follow-up

I love getting feedback and I have received a lot of it lately based on my series about consolidating a plethora of apps down to one, much simpler, set of apps. The text editor piece was fairly straightforward since Sublime Text is a great text editor in its own right but the leap to task management was a bit of a leap since it looks too simple on the surface to work adequately or be too much overhead to use effectively.

The whole Sublime Text 3 thing seems to be working just fine at the moment but one email arrived today that I thought would be good to call out. Kindred spirit Tim Bendt has been using Sublime Text in a very similar way for several months.

The text editor SublimeText is incredible, and it has a vibrant plugin community. I decided to use Sublime Text to write 2 different book projects, and I love it. I found a plugin called PlainTasks which has a setting for taskpaper compatability! It‘s a free crossplatform implementation of taskpaper productivity in plain text files in the same application I already love to use for code and prose!

Great stuff and it is good to see great minds thinking alike. Of course, it probably a good time to mention Gabe’s post about Taskpaper and Sublime Text again too. Gabe and I talked a great deal about taskpaper a while back and it proved a bridge too far for me at the time. Sublime Text was also a learning curve I wasn’t willing to climb either.

I think climbing the Sublime Text hill for text editing before trying to use it for task management was key here. It made using the app for task management seem almost reasonable and, at this point, I’m glad I stuck with it. Don’t tell Gabe though – I hate admitting when he’s right.

One Hammer — Task Management Follow-up

I wrote in my last post about using Sublime Text 3 as my main task management system as well as the satellite apps and scripts that help me manage getting items into the system.

Archiving Tasks

Rarely do things ever have to leave that system which is handy but keeping things tidy is important because searching your document will reveal things you might not want to see in your filtered list views.

For instance, when you mark a task as “done” in PlainTasks, it adds the “@done(date)” tag and grays out the text. From there, PlainTasks provides the hotkey ⌘+shift+A to archive all completed tasks to an archive section at the bottom of the file1.

The issue with having the Archive section at the bottom of the file and using regular expressions to control my views is that @done tasks are included in the search results. This is supposed to be a hassle-free, low-maintenance system, right?

The solution relies on Keyboard Maestro on the Mac. I used Keyboard Maestro to create a macro that takes a text selection and appends it to a special taskpaper file called tpArchive.taskpaper. I tag the entries with the context of the file they were copied from and add a date in case I have to find the completed tasks again. Every morning, or at the end of the day, I select the tasks I completed, hit my hotkey and the tasks are removed from the current file and appended to my task archive.

You can download a copy of my macro here. You will need to fill in the text boxes with the contexts of your choice (it is currently set up for three types) and the name of your archive file before use.


The last item to mention is how I view and edit taskpaper files on iOS. There is only one real choice for me and that is Editorial. It natively supports taskpaper files, syncs with Dropbox and has an extensive python scripting/workflow system. If you are trying this Sublime Text 3/PlainTasks system out and need to view your files on iOS, you owe it to yourself to check out Editorial.

As the system evolves, I’ll continue to update these posts or post follow-ups.

  1. So you can see a general flow here – new items get inserted at the top of the file which serves as my default Inbox area and they flow down to the Archive area as they get completed. 

Sometimes You Only Need One Hammer — Task Management

As I wrote in my last post about hammers and nails and an excess of apps, I really want to reduce the number of apps I use to do similar things. The text editor experiment is going well, with Sublime Text serving a multi-functional role and the consolidation has reduced much friction throughout my workday.

The next step for me was to see if I could consolidate more things into this solution, chief among them being task management.

I have used OmniFocus for years. I have written extensively about it but have been somewhat critical of how their more recent versions. There are a lot of reasons for that, some of which I can barely put into words but I’ve been letting my OmniFocus task lists languish of late. Maybe it was habits changing, changes to the interface that make organizing tasks more difficult (I’m looking at you OmniFocus Inbox) and interface choices that seem more aesthetic than useful.

Whatever the reasons might have been, I was facing a choice. Should I nuke my OmniFocus database and start over with a clean slate or should I look at other choices for managing my projects and tasks? Given my current pet project of consolidation and friction-reduction, I opted for the second choice.

Rather than go through a torturous process of finding a good system to replace all of the good things that OmniFocus does (sync, contexts, iOS apps, among other things), I decided to just go back to something I tried last winter that didn’t work out for me – Taskpaper.

I am not actually using the Taskpaper app however. I am using a plugin for Sublime Text 3 called PlainTasks that emulates much of the functionality that Taskpaper provides.

  • A plain text, portable format
  • Easily readable structure
  • Tagging support
  • Syntax highlighting

And since I am using it in Sublime Text, I get some great features to help with the job of task management too.

  • Powerful regular expression-based filtering
  • Code folding
  • Less hotkeys to learn
  • One app to keep open all day – less friction (in theory)

In theory I thought it was feasible but, in order for this huge switch to work, I needed to make some drastic changes to how I have been thinking about GTD and task management for the last few years.

First Steps

I created three documents with the .taskpaper extension in my main text file directory in Dropbox. The represent three context-like areas of responsibility: Home, Work, and Websites. All of these documents stay open in Sublime Text throughout the day along with the note-taking text file I mentioned in my last post as well as any in-progress blog posts and “scratch” text files. To swap to these files, I use ⌘+P to search for them quickly or ⌘+option+left/right to cycle through them.

Ignoring Context

Contexts have been something I have long considered one of the most useful parts of GTD in general and OmniFocus specifically. The idea that I can get the relevant tasks based on where I am and what I am doing was something I found profoundly helpful when faced with an insurmountable and confusing mountain of tasks. With this new system, however, Contexts in the standard GTD sense are downplayed. Tags have been given the role of Context mediator and instead of providing a context for every task, as I would in OmniFocus, I will only assign Contexts to important tasks or for tasks that involve people or places that cross multiple projects.

For instance, if I have tasks spread across several projects that are all high priority that involve one employee, I will tag them with his or her first name. When running my filtering query for high priority tasks, I’ll make sure to include that tagged name to pull them all into one place.

Here’s an example of some tags and how I use them with the PlainTasks/Sublime Text system.

  • @critical - mission critical, high priority
  • @today - things that need to be done in the next 24 hours.
  • @due - a due date, in the format “@due(2014-12-12)”“
  • @name - an employee or person name associated with the task
  • @place - “place” usually represents a location like “hardware store”.

You can read the PlainTasks readme file if you want specifics around hotkeys and user-tweakable settings1. I have been trying to keep it very simple though so it wouldn’t take too long to replicate what I am doing here.

Replicating My Today View

For years in OmniFocus, I used a perspective I called “Today View” to show me all due and overdue tasks, things that were flagged, due today or critical. In Sublime Text and PlainTasks, I accomplish this by using the FilterLines package for SublimeText and some not-so-tricky regular expressions.

To “fold” a taskpaper file for this “Today View”, I use the “Fold with Regex” command (in the Edit menu) and employ a TextExpander snippet called “tptoday” that contains the following:


It takes a file that contains projects and tasks that looks like this.

And folds it into a condensed version of the file with just the target tasks. It looks like this:

Sometimes, when dealing with a taskpaper file with a lot of projects, you need more context than the folded view provides. For those times, I use “Filter with Regex” (also on the Edit menu or shift+⌘+F)

Which produces a file with project names and tasks around the target tasks for more relational context. It helps sometimes.

I’ll often run this one at the beginning of the day for a short review and make sure that things are properly marked and tagged and then run the folded version to keep the list nice and short throughout the workday. The morning review and periodic checks throughout the day were so ingrained with my OmniFocus workflow, this seemed to fit right in.

Entering Tasks from Anywhere

In order for this system to work for me, I needed two critical things:

  1. The ability to enter tasks quickly and without error from my iOS devices
  2. The ability to enter tasks quickly from Alfred’s command box

For the first of those, I turned to trusty ol’ Drafts. This app has long been my Swiss Army knife for sending text to different places within iOS so I thought it might work well for sending tasks to my taskpaper files too. As it turns out, Drafts works perfectly for this. I created a workflow in Drafts for each of my taskpaper files. These workflows simply take whatever is in the Draft and prepend it to the target taskpaper file (with a tab and hyphen preceding it).

My taskpaper files are set up so that the top of the file is my Inbox. Anything at the top needs filing, just like tasks that ended up in my OmniFocus Inbox. Since the assigning and moving of Inbox tasks got more time-consuming in OmniFocus 2, this method of moving lines of text around felt pretty simple and easy. You can even use the hotkey ⌘+control+up/down to move the current line (or group of lines) up or down in the file.

From the iPhone, whenever I want to add a new todo, I tap the Drafts icon in my iPhone dock, dictate or type in the item and then use the relevant workflow to send the text to Dropbox. It works great and it hasn’t lost a task yet.

With iOS task entry solved, I moved on to entering tasks quickly on my Mac. For years I have used an Alfred workflow that would send a task from the command line straight to my OmniFocus Inbox by typing “todo ”. Muscle memory being what it is, if a task comes to mind I immediately open Alfred and type it in. I wanted to have the same ability for my new system so I created two new Alfred workflows.

Each one is a simple python script that prepends the text following the “htodo” (home file todo) and “wtodo” (work file todo) commands to the relevant taskpaper file. Again, this is dead simple but that is what I wanted – the simple things rarely fail you.

It Seems to Be Working

Gabe didn’t think I would last 72 hours with this method since I gave up so handily the first time I tried to use TaskPaper as a full-fledged task manager. I think the difference between this time and the last time is that I was willing to throw away much of the OmniFocus functionality that I came to rely on over the years. In a sense I felt as if I had thrown much of it away after moving to OmniFocus 2 anyway.

I am also trying to use just as much project and task management as I can get away with and no more. While a more robust system would serve both simple needs and more complex ones, I decided that it was OK if the system I used day-to-day wasn’t able to do absolutely everything at all times. It is likely that this system will need to either be modified if a huge project comes up but it may make more sense at that point to put just that project into OmniFocus 2 and manage it from there. For now, this “light” approach seems to be working just fine.

So Sublime Text is now managing all of my text editing and my task management. Not bad for $70 and some elbow grease.

  1. And there are many.