GTD


5
Jan 12

New York Minute Task System

The Escapers (makers of Flux, Stuf and more) have an interesting new task management service called Instruktion. Or maybe it’s called “New York Minute”, it’s not clear to me. It is cross platform and the apps are free. It requires a $20/year membership which sounds like a good price.

It looks very nice on all of the application platforms and works offline too. I’m an OmniFocus user but I’ll keep an eye on how this evolves.


22
Nov 11

DaVinci ToDo List [Link]

This post at NPR is interesting on so many different levels. It’s about Leonardo da Vinci’s todo list. It has left me a sense of being normal. Here’s a few thoughts I had during and after reading this.

  1. Many Todo’s are to learn something new from an expert
  2. Text and doodles are always better than just one alone
  3. He didn’t segregate subjects. He just kept a list of how he wanted to get better or things to make
  4. Amazingly, he was successful without strict adherence to GTD1
  5. Given enough time and research money a standardized test can be created to measure creativity2

By way of Kottke


  1. Sorry. I’m not a fan of strict adherence to productivity suggestions. I guess I’m trolling a bit. I get it. He was Leonardo da Vinci
  2. I am also not a fan of standardized tests nor schools of thought that they are valuable or meaningful. 

24
Oct 11

Omnifocus and GTD [Link]

Interesting deep-dive on an OmniFocus use case by Andrew Miner


30
Jun 11

Some OmniFocus Macros

In light of my previous post about controlling my work environment with Keyboard Maestro, I thought I would share a few more handy macros for OmniFocus.

Clean and Sync

This is a pretty simple macro. Most of the work is done by two lines of AppleScript. The macro tells OmniFocus to clean-up the front window and then perform a sync. It’s simple but handy.

OF Sync Macro

Get to the tasks

This one I use whenever I sit down at my Mac to clear some tasks out of OmniFocus. I have a OF Perspective that is for when I am at my Mac. The perspective has a hot key set for triggering it. This KM macro does a few things. It brings OmniFocus to the front and then executes the Clean and Sync macro shown above and then simulates the key combination to activate the perspective. Finally, it moves the window to take up the left half of my primary monitor.

OF Mac Macro

Todo Files

I posted previously about my Mail rule that can automatically create an OmniFocus task for an attachment and share the file with a link through Dropbox. It’s pretty handy, but at the end of the week I need to process those tasks and files. I do it often enough that I created a simple macro that just opens the finder to the folder in Dropbox. That’s it. I said it was simple.

Todo File Macro

 


12
Jun 11

Hyperbole and Bad Advice

I think Seth Godin writes some thought provoking pieces. I worry that he is following the recent trend of embracing hyperbole to fill a blog with fluff. Typically, hyperbole is just a waste of the reader’s time. Sometimes it is actually bad advice.

It’s great to try to encourage people to push themselves to do new and difficult things. The reality is that some success is from hard work and some is from good luck. Most is from a combination of both. Unfortunately Seth’s latest post has statements like:

“Work for a coal mine and make minimum wage. Discover a coal mine and never need to work again”.

Coal mines are not discovered. They are built… on land rights and enormous sums of money. Go ahead, start digging in the ground today. Work very, very hard and let me know when you have a coal mine.

I think I know what Seth was trying to do, but this approach is a not the right way. It’s also starting to feel like a trend a number of tech, GTD, and tips sites are starting to push. A simple idea is turned into a quick infomercial with quotable lines that have no basis in reality.

 


9
Jun 11

OmniFocus and Spootnik

I agree with Eddie’s recent post about using a Windows machine as just another tool or context. However, as a registered Spootnik user, I can tell you that web access to my tasks in OmniFocus is very convenient. And to Eddie’s point that installing OmniFocus on every computer I work on would be a drag, Spootnik means that I don’t have to. Web access means that I can use OF on any device I feel is appropriate at the time.


7
Jun 11

The Joy of Over-Engineering

I really loved the OmniFocus CLI posted over on dirtdon.com. I loved it so much that I decided to build my own, but instead of a shell script, I wanted to explore a solution in Python. I solve quite a bit of my own little problems using Python. I’m no expert, but I like this scripting language for small solutions. I also wanted an excuse to learn more about Python’s Natural Language Processing (NLP).

That’s where the fun is. Solve your own problems with unique solutions. You don’t have to be a computer science geek. Start by copying other people’s work. Customize it, change it, make it yours (but add the proper attribution in the code). I use whatever language suits the task or that I want to learn more about. I make stuff in Python, AppleScript, Objective C, Java, shell commands, and Perl. I still want to make something in Ruby but have not found the right project. Make no mistake, I’m a hack and an amateur. But we all have to start somewhere.

NLP

In this case, I did quite a bit of research into the Python NLP libraries. NLP is some impressive stuff. If you’ve never thought you had a need for it, just think about how apps like OmniFocus or Fantastical parse natural language dates like “next Tuesday at 10am” into a date-time like 06/08/2011 10:00:00. That’s Natural Language Processing. I’m guessing that both example apps rely on Apple’s NSDate in Cocoa since it directly supports plain language dates and times. However, I wanted to try to parse dates from anywhere, not just in a Cocoa application.

Inspired by the OmniFocus CLI from dirtdon.com, my test case was to parse a task with a date into OmniFocus from Launchbar.

The parsedatetime Library

The library that seemed the easiest to use and also worked amazingly well was the parsedatetime library. After picking the library, the rest was relatively straight forward. Parsedatetime has some handy tricks. For example, “eod” for end of day. Strings like “next thursday at noon” are also easily converted to dates. There’s not much to using the module.

Sidetrack: Installing new python library “eggs”

Python has a couple very simple ways to install new libraries. If you want the simplest way to install an up-to-date version of the library, just use the “Easy Install” route. But first you need to install the setuptools library.

  1. Download the version of setuptools for your Python install (my python is version 2.6).
  2. Change the extension of the download to “egg” from “sh”
  3. From the Terminal change directory to where the egg file is located
  4. Type the following command to install: sudo sh setuptools-0.6c11-py2.6.egg

Notice this egg needs to be installed with admin rights.

To install a new “egg” file like parsedatetime you use the easy_install command you just finished with. Type the following from the Terminal:

easy_install parsedatetime

That’s it. You’ve installed two great tools for use with Python.

The Pay Off

So, after all of that, we have some pretty nice technology for parsing dates. I wrote a python script as an example. It accepts a command line argument that is in the OmniFocus task format. For example running this from the Terminal:

python BetterTaskProcessor.py "Lunch next monday with John @work >networking"

Prints this:

Start Date: 2011-06-06 09:00:00
Context: work
Project: networking
Lunch next monday with John

The script not only parses the date of the task but also gets the context and project. Finally, it removes the context and project from the task string. Pretty neat, and it’s all done in Python. I learned a bunch, but in the end I’ll choose practicality over cleverness.

An Easier Way

This is where we come full circle. Sometimes over-engineering a solution can be frustrating. But most of the time it is at least educational. After tinkering with this script for a couple of days, I decided that the best solution is to use the AppleScript hooks provided by the OmniGroup.

These 5 lines of AppleScript does the same thing that my entire Python script does.

tell application "OmniFocus"
        tell default document
            parse tasks with transport text theText as single task singleTask
        end tell
end tell

That’s really all you need to create a task from a natural language date. The context and project tags will be obeyed as well. You can’t get much more simple than that, and that’s one example of why the OmniGroup is so awesome. Even their AppleScript support is something to marvel at.


Note, if you would like a list of all the references I used for this little project, visit my public Pinboard feed.


30
May 11

OmniFocusCLI

You can bet I will be hacking around with this awesome work. Some clever little tricks. I love when people make awesome tools to solve their own problems.

By way of Simplicity Is Bliss


10
May 11

Due Is The Enemy Of Done

After listening to David Sparks’ OmniFocus video series, I’ve been rethinking how I use due dates for tasks. Well, actually, I’ve been rethinking it for quite sometime. Usually when I’m postponing due dates.

Forecast

I love the OmniFocus for iPad’s Forecast mode. It’s a custom view into tasks, that presents them in a timeline with past due tasks colored red and near term tasks colored orange. This is a great way to see what you are up against for the coming week or check out what slipped through the cracks.

The problem is that Forecast view is dependent on due dates. If a task does not have a due date then it is not presented in this view. That makes sense. How else would you define a timeline for tasks without a date for each task.

Due Dates

I’m not a strict follower of GTD but I do implement several of the primary principles. For example, I’m a big fan of dumping every task, project or plan into an inbox for processing. I also relentlessly use contexts for tasks so that I never end up staring at a list of tasks that I can do nothing about. Finally, the GTD review is the real strength of the entire system and I review my lists regularly.

Unfortunately, GTD also recommends assigning start and due dates to tasks. That’s where I think the system breaks down for me. I assign wishful due dates to tasks and projects that really had no hard deadlines. Then, during reviews, I would fiddle with all of the due dates again. Finally, the task would come due and I would just reassign the due date to the following week. Let’s face it, if there’s no hard deadline on something, then the due date is just a con to trick yourself into finishing tasks. In the end, you really just trick yourself into feeling like you have everything under control. You are just Sisyphus pushing your schedule up a hill.

Start Dates

Start Dates in OmniFocus have a functional impact on your task list. If your task Perspectives only show available tasks, then start dates prevent tasks from appearing before you can do anything about them. For example of I have a task to renew my car registration, it doesn’t make a lot of sense for that task to be visible for six months before my current registration tag is ready to expire. Setting a start date keeps my task list focused.

The Experiment

Several weeks ago, I cleaned up my tasks and removed due dates from almost everything. The only tasks that I retained due dates for were tasks that had solid immutable due dates. For example, car registration has a due date. Web hosting renewal has a due date. However much I would like my garage to be clean, there is no real due date. There’s just a date that I wish it would be done by.

Instead of focusing on due dates, I have set start dates for all tasks. That keeps my Perspective views tidy but does not set arbitrary end dates. Unfortunately, this new system drastically reduces the utility of the Forecast view on the iPad. I’m ok with that for now.


7
Feb 11

Simplenote everywhere (including Dropbox)

I bought into the Simplenote world from the moment I read John Gruber rave about it. Since then I have relied heavily on the Simplenote platform for both personal and professional note taking and list making. The beauty of Simplenote lies in its unique restriction to plain text. I have been tempted by the luxuriousness that is Evernote. However, after a brief project to extract all of my notes from Evernote into a file structure that would outlive the hosted service, I realized that there was safety in simplicity. The extracted Evernote items lose most of there text indexing and formatting. So by relying screen captures as notes in Evernote, I was losing the exactness that typing an explicit note provides.

By keeping my notes as simple text files I could have access to them indefinitely. That is exactly what Simplenote provides. There are also several ways to incorporate Simplnote text files into Dropbox to make my plaintext notes available to a variety of iPad text editors as well.

Dropbox

While Simplenote has recently provided a mechanism to sync with Dropbox, it is still early days and there are some serious shortcomings. The native Simplenote sync is excruciatingly slow. My first sync was a 90 minute process for <200 notes. Subsequent syncs are note instantaneous and often take 30 minutes before the note shows up in Dropbox. Second, deletions do not sync between the two services. Finally, renaming or editing a note creates duplicate notes in Dropbox.

After considerable experimentation and emails to Simplenote support, I have given up (for now) on the native sync. I am returning to my home grown Simplenote-Dropbox sync. If you would like to build your own sync service, you will need a Mac running Notational Velocity or one of the many excellent forks. The Mac will also need to be active and connected to the internet 24/7.

Caution

There are also two serious cautions for this sync service.

1) Do not setup this sync mechanism on more than one machine. If you do, you may end up with infinitely duplicated notes as each computer fights over which one modified the note last.

2) Turn off the Simplenote native Dropbox syncing.

Procedure

The setup is rather simple. Create a folder in your Dropbox directory for your notes. I named mine “Notational Data.” Next, configure Notational Velocity to use this new Dropbox folder.

NV_Dropbox_pref

Now configure Notational Velocity to also sync with Simplenote

NV_Simplenote

Finally, the notes need to be stored as Plain Text Files for there to be any value in this setup. You should also confirm that note encryption is disabled so that other text editors can read and write to the Dropbox folder.

NV_pref_Files

Now Notational Velocity will do all of the work of syncing with Dropbox. Here are a few advantages and uses of this system.

The syncing between Simplnote and Dropbox is nearly instantaneous. It the minimum time can be set in the Notational Velocity preference for Simplenote syncing. I personally think 5 minutes is enough.

  • Deleting a note from Simplenote also deletes the note from Dropbox.
  • Renaming a note in Simplenote also renames the note in Dropbox.
  • Deletions and changes in Dropbox are synced with Simplenote

There are still some technical gaps. Simplenote tags are not synced with Dropbox or Notational Velocity. This is a known technical limitation. Simperium is investigating a solution. I also noticed a few notes were duplicated initially. After cleaning a few of these errors I have not had a problem since.

I am very happy with this solution. I am still looking forward to an integrated solution from Simperium that would not require Notational Velocity to be running. However, for now this gives me ubiquitous access to my note taking system. I can access notes through a variety of iPad apps, Simplenote, Notational Velocity on the Mac, as well as directly from the find.


2
Feb 11

Emailing files to Dropbox

Dropbox (referral link) is the service that Mobile Me should have been. Apple really missed the mark with MobileMe especially in the file syncing arena. Innovation does not tolerate a vacuum or even a partial suck. Dropbox filled that void nicely and the ubiquitous integration with iOS apps has made it indispensable. That’s one reason I am a happy paying customer.

If I pay for a service, it’s usually because I am deriving significant value from it. There are many tools I develop myself but some are so well done that I don’t want to waste my time trying to make a pale reflection. Dropbox is one of those services.

I do, however, build my own tools around Dropbox. One of those tools is my send to Dropbox email rule. Since I am already running a Mac 24 hours a day, why not make the most of it. With Apple’s Mail always on and filtering messages, I get fewer spam message and my incoming messages get sorted into their appropriate folders automatically. I don’t need to see things like iTunes and Amazon receipts unless I want to. Another tool My Dropbox Mail rule is fairly simple. In Mail.app I set up a rule that processes messages sent to my task email address I talked about here.

Mail_Rule_Dropbox

 

If the message subject begins with “Dropbox:OF” (for Dropbox OmniFocus) then the attachment is processed by an Applescript that moves it to Dropbox.

using terms from application “Mail”

on perform mail action with messages theMessages for rule theRule

tell application “Mail”

repeat with oneMessage in theMessages

set {mail attachment:theAttachments} to oneMessage

repeat with oneAttachment in mail attachments of oneMessage

save oneAttachment in (“Macintosh HD 2:Dropbox:Todo Files:”) & (name of oneAttachment)

end repeat

end repeat

end tell

end perform mail action with messages

end using terms from

 

That’s all there is to it. Any file I can email will be added to Dropbox. My work machine is locked down to prevent application installation. That means no Dropbox on Windows for me. That was my primary motivation for developing this little tool. It works so well, I also use it from my iPhone. It is a modest and simple version of Evernote. Take a quick picture of a whiteboard from a meeting and email it to my inbox on Dropbox. Boom! Seamless workflow from meeting to Inbox.

 

 


1
Feb 11

Bridging the Windows gap with OmniFocus

OmniFocus from Windows

There’s no doubt that OmniFocus by the Omni Group is the quintessential mac app. It’s elegant, easy to use and simply makes work easier. It has nearly solved the digital ubiquitous capture problem. It’s an iPhone app, it’s an iPad app, it’s desktop app, it’s a whipped topping. Unfortunately it is not a windows app (yet).I spend most of my work hours on a Windows machine. I have developed a couple of rountines that allow me to integrate OmniFocus with my workflow on Windows. An easy way to add tasks to OmniFocus is by way of email. I’ll briefly describe the hack and subsequently tell you that it is no longer needed.

Tasks by email
This is really just a modification of the excellent workflow described by Shawn Blanc. I’ve made some changes that make it a little more accurate and contemporaneous. All of this requires a mac at home running full time. That’s not a problem for me since I already had my mac running as a server for several reasons. Maybe I’ll write some posts about those other users. In OmniFocus for Mac, turn on the mail rule in the preferences

OF_Prefs

Head over to Apple’s Mail.app and look at the newly added mail rule. I added an extra trigger that looks for mail to a special gmail address.I actually signed up for another email account that was prefixed with “qqq” so that it’s easy to remember and type and is likely to be unique in my address book. Gmail also allows you to place a dot in the middle of your gmail address and still receive the mail. For example, “myemailaddress@gmail.com” also works as “my.email.adress@gmail.com” for receiving messages. Give it a try. I use the “qqq” prefix because it’s easy to type to get an auto-suggestion in Outlook. I also added a rule that only accepts tasks from my preferred list of email addresses (Note that you can set that in the OmniFocus settings as well). Namely, my personal and work email accounts. This helps, in case the spammers get smart enough to start sending OmniFocus enabled emails. How aweful would it be to get spam tasks. The horror!

OF_Mail_Rule.png

 

Adding a task from Outlook on Windows is simple. Fire up Outlook and send an email to your special address like this:

OF_Outlook

Now we have a precise rule that adds tasks to OmniFocus, except we have to wait for OmniFocus Mac to sync to the cloud before that task is available everywhere else. I wasn’t happy with waiting. I decided to modify the Applescript that the Mail.app rule uses. I added a couple of lines to force OmniFocus to initiate a sync everytime it receives a taks from Mail.app.

tell application “OmniFocus”

synchronize default document

end tell

Everything is working well. So why did I abandon this workflow? Spootnik!

Spootnik Sync
I first discovered Spootnik when I was looking for sync server for OmniFocus on iOS. This was before Omni Group offered their terrific and free sync service. Spootnik is much more than a sync server though. The primary reason I continue to pay the $3 per month for Spootnik is for the fantastic web interface. I can now access my task list from any browser. Specifically IE and Firefox from my work computer. I can review, check-off and add tasks from the web interface. It’s a pretty full featured product. The only things you can not do is add due times to tasks or move tasks to another project. It is primarily intended as a simple web front end to your tasks in OmniFocus. It accomplishes that very well.Spootnik also offers integration with Bascamp from 37Signals. I’m not a Basecamp user so I can not describe the integration or the quality of the results. Based on the sync and web services from Spootnik, I’d bet it is a good implementation of Basecamp.