Recent Posts


Published: 04 Sep 2016

Hello folks! Do you use omniboard, my sparkling-fresh ruby-only program that pushes your Omnifocus database to an HTML-styled Kanban board? If so, and if you keep it up-to-date, you may have noticed some hiccups recently.

In with the new

OmniGroup recently announced that they would be encrypting server-side documents held on their Omni Sync Server, which is awesome! Stuff should be encrypted! Encryption is good. Of course, for the hobbyist programmer with people using their tools, encryption means yet another layer between their program and usefulness, and a lot more spots where things can get wrong.

Omniboard 1.0

Published: 09 Aug 2016

Over the past couple of weeks I’ve been chipping away at bugs, feature requests,1 and other miscellanea for what is officially (as much as that means anything) Omniboard V1.0.

What’s Omniboard?

Omniboard is a small ruby library that does one thing: it turns your normal OmniFocus library into a Kanban-style board of projects, each sorted according to the criteria you provide. It does this by reading the database files produced by OmniFocus, which means that you do not need a Pro account (or even to have OmniFocus running) in order to run Omniboard. That’s kinda cool - you can find out more about this on the project page.

Minimum viable guard

Published: 08 Aug 2016

Guard is a cool ruby library for automatically performing tasks every time a file changes. But if you’re not sure what to expect, it can be hard to set up. Here’s the quickest possible setup for Guard.

Use case

In this case, I’m making a quick website prototype in haml. I want to make sure that, whenever I modify one of my haml files, ruby immediately produces the equivalent html file for me in the same directory.

Urban World - Chases

Published: 31 May 2016

Radio silence while I figure out a number of side-projects. However, in the meantime I’ve been working on some optional rules/moves for Dungeon World. Our last Dungeon World game took place in a pretty urban environment1, and one thing I found was that the regular moves don’t really account for the city as environment, setting, or community.

Well, that needs a bit of a caveat: Dungeon World is totally cool with the idea of cities, mechanically speaking, but they mainly exist as locations for resupply, or places to be defended from great evil. The sprawling metropolis of sword and sorcery fame, on the other hand, is less of a thing to be protected and more of an environment in its own right, existing above and apart from nations and rulers: you can invade such a city, beseige it, afflict it with plague; people die, empires crumble, powers fade, but the city lives on. The city is, in essence, its own front in the same way that Apocalypse World’s Landscapes or Dungeon World’s Dungeons are fronts: a place with its own impulse and moves.

MailMate bundles for fun and profit

Published: 27 Feb 2016

I usually think of MailMate like the A-10 Warthog of OS X email programs: it’s not as sleek and sexy as the average new email app you see coming out of indie devs’ doors, but it makes up for that in sheer power and efficiency when it comes to dealing with your email.1

One part of MailMate that seems pretty opaque to newbies is MailMate’s ability to run Commands on messages. If you’ve used MailMate in the past, you’ll probably have noticed the “Commands” menu item nestling on the top of your screen, but you may not have investigated it. Or maybe you use one or two of the default command bundles available for download, but have never thought about the fact that you can make your own custom commands.

Omniboard tutorial: dates and filters

Published: 12 Feb 2016

I see the official Omnifocus twitter account linked to my Omniboard post recently, with the normal spike in visitors. Hello, everyone! I’m glad to see you like these things I make.

Reader Sean asks:

OmniFocus + Kanban: the next generation

Published: 31 Jan 2016

Everyone loved that little gem I made to convert OmniFocus projects into a kanban, right? Scarily enough, I made that post almost three years ago, so I figure it’s time for an update.

I recently posted about rubyfocus, my pure-ruby OmniFocus bridge. Since then I’ve been working to revamp kanban-fetch, my old kanban board application, to use rubyfocus. I’ve also taken the opportunity to add a couple of other features to the application, including a major change: rather than running on top of sinatra, my new version generates a static website. This is great news if you can’t be bothered running a pow instance on your machine or otherwise don’t want to serve up a whole webserver program for a one-page application. Column configuration is also much improved, and you can now change all sorts of variables to make your columns and projects look exactly how you like them.

Automating VoodooPad with scripts

Published: 18 Jan 2016

Say what you want about Microsoft, OneNote is a pretty good notebook tool. Well, let’s clarify: OneNote for Windows is pretty good. I tried OneNote for OS X recently, and it leaves a lot to be desired. My go-to equivalent on OS X for the moment is Flying Meat/Plausible Labs’ VoodooPad1: it’s not quite as nice (in my opinion) as OneNote is on Windows, and some of the UI decisions could benefit from an update, but it does the job OK. I used to use it for a bunch of my literature notes during my Ph.D., and now I’m making a return to it for some of my other projects around home.

Every program has its benefits and its drawbacks, but some things just aren’t worth not having. When you’re writing notes, being able to quickly add headings or format lines is super-handy: something OneNote does really well, but something that’s still missing in VoodooPad. After about five minutes of playing around with VoodooPad I decided I needed to fix this problem, somehow. The obvious answer would be to take advantage of VoodooPad’s ability to run plugins, as long as I could work out how to actually do this.

Constraints breed creativity

Published: 15 Nov 2015

I tend to find that too much choice is bad for me. When faced with the giant wide-open possibility space of unconstrained choice, two things tend to happen:

  1. I spend considerable time and effort trying to narrow down my options and pick the best choice, resulting in a form of analysis paralysis that I’ve come to think of as candy overload.
  2. Unless I am explicitly aware of it, and make an effort to avoid it, I’ll end up making a comfortable (and therefore typically boring) choice.

Here’s a quotidian example: the age-old question, “What shall we make for dinner?” Without further guidance, I will probably end up suggesting one of maybe fifteen meals that I’m familiar with. It’s much more exciting to face the question, “What shall I make for dinner from this magazine?”, or “What shall I make for dinner given that I need to use up this polenta and these tomatoes?” because I’m immediately narrowing the possibility space with constraints. These constraints are also likely to shift me out of the ruts of the everyday list of tried-and-true dishes, forcing me to cook outside my comfort zone, and making dinner an overall more interesting occasion.

Rubyfocus beta

Published: 12 Oct 2015

Rubyfocus is a pure ruby bridge to OmniFocus. It’s something I’ve been working on for a while, and I’m finally able to release a version that, at the very least, functions without crashing (as far as I can tell) anywhere along the way.

Rubyfocus started as a natural offshoot of a previous project, JROFBridge. JROFBridge is an objective-C/Cocoa library that accesses OmniFocus through ScriptingBridge, collects data on projects, tasks and folders, and outputs it to an SQLite database. It’s a handy way of collecting everything you need to know about an OmniFocus document, working through OmniFocus itself. I used it for a web-based Kanban frontend to OmniFocus, which let me view all my projects (and my current workload) at a glance.

1 of 10