TECHNOLOGY NOTES

Find Me

Search

Categories: productivity

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.

IOS

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:

(@+\bcritical*)|(@+\btoday*)|(@+\bdue*)

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. 

Sometimes You Only Need One Hammer — Text Editors on the Mac

The problem is one of too many hammers and not enough nails.

I would love to know how much time I have spent over the last few years wrangling multiple tools that could be used for the same purpose. Text editors, task managers, simple todo list apps, reminders apps, podcasting apps, email apps, beer apps, pinboard apps, calendar apps, photography apps… the list goes on and on.

Having multiple tools to do nearly the same job adds friction just like having to root around in your toolbag to find the hammer you need amongst a pile of twenty hammers. Generally, the first hammer that comes to hand would suit the task perfectly fine.

Don’t get me wrong — there is value to looking at a few solutions for solving a problem. I am sure the first text editor I ever downloaded wouldn’t have provided me with as much flexibility as what I am typing into now but I think it is worth begging the question – “Could I do what all of my text editors do with just one text editor?”

The goal of this series is to get me down to one hammer on each platform for the tasks I do most often. Today I am going to tackle one of the areas I tend to waste a lot of time and money on — text editors on the Mac.

How Many Text Editors Does a Person Need?

I currently use the following text editors on my Macbook Air over the course of a typical week.

FoldingText is the tool I live in most of my work week. I start a document on Monday that contains all of the meeting notes throughout the entire week. Having all of my notes compiled in one document makes searching easy, provides me with a time-based grounding for meetings that helps me reconstruct events and keeps the number of open documents to a minimum. FoldingText’s ability to condense the information on the screen to just the section I am interested in is invaluable when I just want to take notes on a single meeting and not see the clutter of the rest of my document.

nvALT is where a lot of text documents start. I have various Alfred workflows that generate documents through nvAlt and search nvALT for things all the time. It is an amazing and eminently-useful tool.

Byword is the text editor I have written the most words in for the last three or four years. All of my writing starts here in one way or another, mainly because I love the presentation of markdown within the editor. The fading of the markdown tagging and the flow of the text is really conducive to how I think.

Textastic is something I mainly used for coding and viewing code. While Coda has a great coding interface in a pinch, I liked having a dedicated app and I was being stubborn about Sublime Text’s steep learning curve so Textastic fit the niche really well. All code-like documents have opened in Textastic on my Macs for a number of years.

Sublime Text is a recent addition. Various attempts to be beguiled by its nerdy charms have occurred and I have downloaded it multiple times over the last few years 1. Every once in a while something a friend will say or an article I chance upon will entice me to give it a shot. Each time I read up on it, usually starting with a guide, and try to make it useful to me but each time I delete it, frustrated by its settings files, bewildered by its hundreds of package add-ons and confused by its dozens of new keyboard shortcuts.

Each one of those applications are great in their own right and each is well-suited to its particular task. But, with each one, comes its own spot of friction. The more I thought about it, the best case would be to use a single text editor on my Mac. No more deciding which app to use when deciding to write a blog post. No more overlapping piles of windows cluttering up my desktop.

One hammer. And Sublime Text is it.

Hammer Replacement

In order to replace a tool, you need to know what it is and isn’t doing for you.

Byword is a competent editor with good document statistics, nice markdown preview and a great markdown syntax highlighting. Textastic is a nice editor that works well with fixed width fonts and has stellar formatting and syntax highlighting. FoldingText gives me a great way to guide and hold context while typing in a huge document of meeting notes and provides excellent outlining editing capabilities for moving nodes in and out of document structures.

Each has strengths that would need to be replaced by a single app. That’s a pretty tall order.

I couldn’t think of a text editor besides Sublime Text that would even come close so I started digging into how I could replace each one of the features listed above. Given my history with the Sublime, I was pretty sure this was a non-starter but the idea of consolidating tools was gaining a lot of traction in my mind and felt I needed to give it a fair shot.

Gabe has done a much better job explaining Sublime and its charms than I ever could but I’ll attempt it anyway. Needless to say, you will need to know how to install custom packages in Sublime to make this all work so, if you are still interested, read on. I will cover some of the beginner stuff in my Quick Tips section at the end of the article.

Building a Better Hammer

To make Sublime Text more useful in general I installed:

Package Control allows you to install packages seamlessly within the Sublime Text interface. This should be your second step, right after installing [Sublime Text][sublime.

I also like using the Solarized theme when writing so I made it my default and set my default font to InputMono. I use Theme Scheduler to change my themes from light to dark based on the time of day, like every nerd should. Since there’s no good way to toggle theme changes for markdown files, I created a pair of Keyboard Maestro macros that do it for me. It’s not perfect system but there is a point where too much fiddling is just too much. it’s ugly but it works2.

To replace Byword and FoldingText, I installed:

This combination does highlighting for markdown syntax as well as gives me a nice fullscreen distraction free mode when I’m in meetings. Typewriter keeps the current line locked to the center of the screen which cuts down on that feeling of not having a sense of context within the document. Marked integration is obviously a big help. Having a second virtual desktop with a fully formatted document for preview is damn handy.

To replace Textastic and nvAlt, I installed:

Since Sublime Text already has support for most programming languages (including syntax highlighting and code completion) I plan on using it for those tasks. One of the things I used nvALT for was creating my new weekly “meetings” files with a TextExpander macro. It was so easy just to open the nvAlt window, type the command which expanded to a properly formatted file name and hit “enter” to create the file. Now, with the Advanced New File package, I have the same functionality but all within Sublime Text.

I’ll cover BetterFindBuffer in a future post where I tackle my “task management” bag of hammers.3

Quick Tips for a Using Your New Hammer

  1. First go here and do what it says.
  2. To quickly do most of the things I have outlined above, remember that the key combination ⌘-shift-P is your friend. This will bring up the Sublime Text Command Palette. From there, typing “Install Package” will bring up the Package Installer and you can add any of the items listed above in seconds.
  3. Always edit the “-User” settings files in the preferences. They will override anything in the Default file. They are usually located at “Sublime Text > Preferences > Package Settings”. If you’re not sure what settings you can edit, take a peek at their Default file.
  4. ⌘-P will find anything in open files or folders in your current Project. I created a default project that has my default Dropbox text file directory and a few others. It will find the text you are searching for at least as fast as nvALT. Most searches are as simple as hitting a few letters and “enter” to open your target file.
  5. ⌘-R will open a document map, or outline. Depending on the structure of the document, it may give you some great info. For this article, it gives me a list of every header that I can jump to instantly.
  6. I can never remember hot keys. Command Palette to the rescue! Again, the combo ⌘-shift-p will bring up a text box which will quickly search all commands and hitting “enter” will execute it. If you want to keep your hands on the keyboard, this is a lifesaver.
  7. ⌘-option-left/right arrow will shuffle through your open documents.

After using Sublime Text for a little while now, I can see the potential is great. I have passed the fiddling stage and I am just working in it. Minimal app switching, easily-focused attention and lots of nice perks that keep things flowing. At $70, Sublime isn’t something you just run out and buy, even with what I just wrote. Luckily, their purchasing model supports trying it out for a while, kicking the tires and getting to know the thing.

It has been interesting researching and writing this article. What started as an exploration of ways to reduce the number of text editors I employ ended up as a paean to Sublime Text. I had no idea I’d be able to do so much with this app given my previous frustrations with it but, with a little persistence, I have gotten some huge rewards.


  1. It is free to try out and $70 to purchase. 

  2. I have gotten a few questions about what this Keyboard Maestro shortcut is doing. Here’s the gist: I created two copies of my settings file and renamed them with a prefix of “light” and “dark”. In each of these files, I edited the theme to be the Solarized Light or Solarized Dark theme. The Keyboard Maestro macro deletes the current user package settings file and replaces it with either the light or dark depending on the time of day or a typed hotkey. Sublime detects the change and immediately refreshes all of the files that the package is associated with (in this case, all of the file types I have associated the Markdown syntax type). Sometimes the computer hibernates and forgets to change the theme based on the time so typing the hotkey will force the change. 

  3. Hoo boy, that’ll be a doozy. 

Tech Note: OmniFocus 2 for iPhone

Last week, OmniGroup released a new version of OmniFocus 2 for the iPhone1. The newly-redesigned app brings it more in line with the look and feel of iOS7 and that’s both a good and bad thing. This won’t be a review; just a few impressions after a week of fairly heavy use. Others have written more thorough reviews and I direct you to them instead.

omnifocus2

I was happy when I first opened the app and saw the cheery, slightly muted, colors. It seemed to fit the iOS7 aesthetic well and it was pleasant to look at. As I started messing around with the app, however, the difficulties began to reveal themselves.

When I added my custom perspectives to the main screen, they faded away in a very low contrast teal. I’m not one of the folks who feel the need to make fonts bigger or bolder in the majority of my iPhone app use, but damn they were hard to see. Since the designers decided I didn’t need my custom icons on the home screen (I assume they didn’t want my choices cluttering up the clean design), making my custom perspectives harder to see doubled my annoyance.

The real estate on the main screen also competed with my needs. The great thing about OmniFocus was that I could tweak it to fit my needs. It became a customized haven where I could craft and then manage a workflow. I used it that way for years. That said, I’m not averse to change. If something changes for the better, I’m not one to cling to my old weather-beaten way. Point me to the new stuff. The problem is that the new version of OmniFocus wants me to work in a very different way. My attempts to customize are curtailed2 and I find myself having to change how I work to meet the design of the app. This is the opposite of what we’ve grown accustomed to and runs counter to what led me to love the previous version so much in the first place.

My workflow has come to rely on the Forecast, a custom “Today” perspective, my “Work” and “Home” perspectives and a “Next Stuff for Work” perspective. They took center stage in the previous app but now I have to scroll to see them. It’s awkward. In the previous app, the fact that the perspectives were front and center reminded me to check them. Now, tucked away behind the bottom of my iPhone screen, I’ve found they get checked far less often. Perspectives are the most powerful feature in OmniFocus and minimizing their relevance in your flagship app is going to cause powerusers some major headaches.

I find the way the nicely-colored large “buttons” or tap areas are situated very awkward as well. The double-sized Inbox and the four other “buttons” arranged below it made me wonder why the Inbox tap area was bigger and why the others were in a static grid. Again, awkward. I would love to remove “Nearby” and move all of my custom contexts up to a more useful postion but I can’t and that’s frustrating.

Generally after a major update, you expect more of what you had before – more customizability, more choices, more features, more options. It’s what you’re paying the $20 for (again). I’m not going to gripe about the price. I know a major factor is because Apple won’t allow upgrade pricing. Couple this with the fact that I love OmniGroup products and want them to keep making great apps and the sting of paying again fades. But my main problem is that this feels like I lost some critical functionality and what I got in return was some thin fonts and the need to do a lot more scrolling.

I’m not going to fully agree with what others have voiced to me privately – that this is a $20 re-skin. It’s not. It seems like an iterative reimagining of a well-loved, much-used product. The problem is that it is starting over on iteration #1. I wish the iteration started from where the previous version left off.

It may sound like I’m extremely negative about the app but its not all terrible news. The only reason I’m being so critical is because I love OmniFocus so much. I want Omnigroup to succeed, improve, move forward, keep iterating. There are some nice touches for a 1.0 and, for now, I’ll look to these as a bellweather of better things to come.

Bonus Pro Tip: To back out of deeply-nested Projects or Contexts, press and holding the top left corner. It will drop you back on the main screen.3


  1. Affiliate link. 

  2. By virtue of being impossible. 

  3. I was quite happy to find this one (accidentally).