My name is Jan-Yves Ruzicka and I’m a recent Chemistry Ph.D. graduate from the University of Canterbury, New Zealand. In my spare time I’m somewhat enthusiastically involved in roleplaying and story-gaming, as well as keeping up a hobby of coding in ruby and Cocoa/Objective-C (which I document on my blog.) I got interested in Getting Things Done during my Honours year (2008), and I haven’t looked back.

My OmniFocus activity revolves around three activities: capture, organisation, and doing.

Capture is the most boring step. When I’m at the computer, I use Quick Entry to capture random thoughts. Away from it, I either write them down or put them into OmniFocus on my iPhone. I have a recurring task to ensure that I regularly transfer tasks from my notebook to OmniFocus so these tasks don’t fall between the cracks.

Organisation is something that I still struggle to get exactly right. Most projects ended up being classified as either Home or Work, with each area further broken down depending on the area of responsibility. The number of projects and folders I have in OmniFocus (especially counting maintenance projects and recurring tasks) is generally a good deal longer than my screen height, so I’m slowly developing a script that will move projects and task groups from the Inbox to any point in my project hierarchy.

The process of doing happens in the context view. My main work environments are modelled by perspectives, which limit visible contexts. I’ve recently found that I get distracted and off-task even if I have only one or two tasks visible in OmniFocus that I can’t do. To combat this I’ve been ruthlessly narrowing my perspectives, only allowing in those contexts that I can definitely act on. Rather than clutter my OmniFocus toolbar or try to remember everything, I have a palette in KeyboardMaestro devoted to my OF perspectives: hitting F1 reveals every perspective I use, along with appropriate keyboard shortcuts.

OmniFocus Perspectives in KeyboardMaestro

My OmniFocus Perspectives palette in Keyboard Maestro. On the right, a typical perspective setup.

A big motivator for me comes from Leo Babuta’s Zen To Done. At the start of the day I’ll review all my active projects and, based on current goals, flag a series of tasks (usually no more than 3-4). By switching to a “flagged-and-due” perspective I can narrow my focus down to a series of well-defined tasks for the day, which again removes all of that extraneous cruft from around the edges of my task list. The main trick here is to make sure that I don’t flag too many items every day: it’s easy to overestimate exactly how much I can get accomplished in an afternoon, finish one of the four assigned tasks by 5pm, and feel terrible for the evening.

I end up using a couple of AppleScripts and associated tools to automate segments of my workflow. I’ve already described my File Tasks script, but a number of repeating tasks (especially more complex projects with shifting start and due dates) rely on Chris Sauve’s incredible Templates.scpt, which you should definitely check out.

I also have a couple of Objective-C/Cocoa scripts that run periodically on my computer to pull data out of OmniFocus for display in other environments.


While OF is a great tool, I feel its list-based view falls short at the “big picture” level. Over the last year or so I’ve become interested in personal kanban for project organisation, especially at this big-picture level. A simple kanban board consists of projects organized into columns such as “To do”, “Doing”, and “Done”. These “sticky notes” can be further subdivided by area or responsibility, to make the whole system as complex or simple as required.

Sample Kanban Board

OmniFocus’ Scripting Bridge support makes it very easy to export data. I categorize my projects based on their current status (on hold/active/completed/dropped) as well as their tasks. Using this data I can pretty easily divide my projects into the above to do/doing/done categories. Active projects are further sub-divided: for example, projects whose first available task has the context “Waiting for” are greyed out, since I can’t do anything about them right now. I can immediately see where I should be focusing my energy, and it gives me a good idea of how many ways I’m splitting myself right now. I respond much better when this sort of data is represented in a visual format than in the list-centric perspective OmniFocus gives me.

My current kanban setup

I also use the kanban view of my OmniFocus database as a weekly review tool. Over the course of the week I’ll find myself adding more and more little projects to OmniFocus, but every weekend I’ll make sure to check my projects in the kanban view to see if I’m getting “project creep”. When this does happen (and it inevitably will), I can put selected projects on hold and cut back my project intake.


My latest product has been a program to export data from OmniFocus to SQLite. This goal is to build up an external database of tasks and projects for later analysis by whatever means I find handy. For example, below you can see when I complete tasks throughout the week - categorized both by day of the week and time of the day. It’s immediately apparent that I have a productive streak on Wednesday nights, while the weekends are usually quieter. I’ve only got a few months’ data here: you can imagine that once this script has been running for a year (or more!) you can really start to explore when and how you complete tasks. Hopefully I can use this data to examine and improve my workflow.

Work done by day and time, using of-store

Behind the Scenes

Most of the things I’ve talked about here are pretty simple to implement: they’re just a way of sorting tasks, or perhaps a simple applescript (which I put in the toolbar for easy access). The most complex system I have attached to OmniFocus is easily the Kanban setup I’ve described here. I’ll quickly outline how I implemented this on my computer.

You will need:

My kanban setup is made up of two parts:

  1. A background process that fetches OmniFocus data and outputs it to a sqlite database every hour, and
  2. a Sinatra-based webapp running locally via pow.

All of the appropriate setup instructions and code can be found at the project’s page.

If you have OmniFocus open, you should be able to download the binary linked above and run it from the command line. It’ll output all your projects as a sqlite binary: while that’s pretty boring right now, it’s the basis of the webapp.

You can download the webapp’s source from the link above. The readme gives you a rundown of the installation procedure, but basically you need to run bundle install and alter a line or two so it knows where to look for the database. Once you have that set up, though, you’re good to go.

I keep my kanban webapp primed using pow, which means it’s always available on my local machine at By running the backend binary every hour (courtesty of launchd/lingon) I can make sure I’m always on top of my current projects.

Jan-Yves blogs over at 1klb and stores his coding projects on github for everyone to check out.

❮ More Workflows