Michael McDonald's Blog

kGTD Auto-Save

I currently use kGTD (which is basically OmniOutliner Pro + an AppleScript) as my 'trusted and complete' GTD system. But even though it is complete (I easily have over half a million actions listed in kGTD) it is far from trusted.

OmniOutliner Pro, despite being beautiful and easy to use, crashes constantly. It crashes while saving. It crashes as it reopens. It crashes while I am cooking dinner. I hate it, and I don't trust it. And what I hate most is that it's still the best solution out there. I have been adding layers and layers of hacks to prevent losing hours or even a day's worth of work. I've recently pieced together the fact that it's auto-save feature doesn't even work. The ".OABK" file, which is supposed to be the auto-save, is always empty. (Perhaps auto-save doesn't work for documents in 'wrapper' mode, when attachments are present.)

For those of you in the same, or a similar, situation, here is my solution: an hourly cronjob which executes a manual save via AppleScript, uploads a tarball, and checks in any contents.xml savings into a Subversion repository. (Yes, I really, REALLY am trying to preserve this data.)

#! /usr/bin/env ruby

# this probably fails when OmniOutliner is closed
system 'osascript -e \'tell app "OmniOutliner Professional" to save document 1\'' or raise

Dir::chdir('/Users/kelek/Desktop/GTD')
source = 'GTD.oo3'
File::exist?(source) or raise "not found: "+source

copyTar = source + ".tar.gz"
newCopyTar = copyTar + ".new"
File::exist?(newCopyTar) and raise "already exists: "+newCopyTar

system "tar -czf #{newCopyTar} #{source}" or raise "tar failed"
system "mv -f #{newCopyTar} #{copyTar}" or raise "mv failed"
system "rsync --quiet -a --rsh=ssh #{copyTar} kelek@kelek.com:" or raise "scp failed"

# to restore this backup:
# cd /Users/kelek/Desktop/GTD; tar -xf GTD.oo3.tar

# also back up contents.xml to Subversion
destination = '/Users/kelek/workspace/zen_notes'
system "rsync --quiet -a #{source}/contents.xml #{destination}/GTD.xml" or raise
Dir::chdir(destination)
system 'svn --quiet commit -m "" GTD.xml' or raise

This situation is one of the reasons I am skeptical of the soon-to-be-released OmniFocus. Not only do I not trust Omni Group applications to scale for huge documents, I just don't trust a GTD system that is oriented around a 'document'.

For a GTD system to be trusted and be able to scale to millions of items requires a database. And remote access. Hence my plans to create my own GTD webapp, ZenGTD, because I've tried everything out there, including the OmniFocus alpha, and nothing is even close to good enough.

link  |   |  11/22/07 10:00am
 
home  |  acting  |  blog  |  consulting  |  noel  |  contact
© 2013 Michael McDonald, . All rights reserved.