When a team is collaborating to create software, there are inevitably issues that come up in “big picture” areas like architecture and process. There are two ways to deal with these:
- Take some time out from the daily grind and discuss the issue until consensus is reached and a decision is made (and hopefully documented!) for how to handle stuff going forward.
- Don’t take the time to think (“We don’t have the luxury of time for thinking!”) and continually have mini-discussions about it (sometimes with other people; sometimes internally within people’s minds) every time it comes up again forever and ever…
I know which one I prefer. How about you…?
There is no reason ever to have the same thought twice,
unless you like having that thoughtâ€ â€“ David Allen
I whipped up a quick little extension for Alfred that lets me very quickly jot down time-stamped text. The hope is that if I make it ridiculously easy to log what I’m doing and when, then maybe I can have better records of what I’m doing and it will be easier for me to switch back to task after interruptions. I can also look at where I’m spending my time.
I have this extension mapped to the keyword “nj” (for “nvALT Journal”). I activate Alfred and type “nj <text>” and the extension automatically opens up nvALT and makes sure that there’s a note with the current date in the form “YYYY-mm-dd” and then appends my text to the end of the note with a 24 hour timestamp in front of it. It then switches back to the application that I was previously in so I can go immediately back to whatever I was doing.
While playing with some OmniFocus AppleScripts last night, I realized that OmniFocus on the Mac uses a sqlite database (in addition to the zipped .xml files that it uses for synching). This is pretty interesting, because it could be a very convenient way to write tools that interact with OmniFocus (and use something like Python instead of AppleScript).
$ sqlite3 ~/Library/Caches/com.omnigroup.OmniFocus/OmniFocusDatabase2
SQLite version 3.7.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT task.name AS task, context.name AS context
...> FROM task JOIN context ON task.context = context.persistentIdentifier
...> WHERE context.name LIKE '%email%' AND task.dateCompleted IS NULL;
Send Amanda new color photo via Cloud website Email
Pretty cool. With a little Python and SQLAlchemy, I could probably create a nice little Python module for dealing with OmniFocus data.
I rely on OmniFocus (both the Mac and iPhone versions) to maintain some semblance of order in my life.
I occasionally think of ideas for scripts to make OmniFocus for Mac fit better with my workflow, but I seldom have the time to actually sit down and write them, especially since I’m not particularly strong with AppleScript. I have a few OmniFocus AppleScripts installed (the main one I use is “Complete and Await Reply”), but I often think that I’m just scratching the surface of what’s possible.
So I was very glad tonight to stumble upon Sven Fechner’s excellent post, Top 5 OmniFocus Applescripts, which covers 5 particularly helpful AppleScripts. The only one that I’ve tried so far is the one that Sven calls “Quickly find a project” (the script itself is called
FindProject07.scpt if you download it), but that alone was an awesome find for me as navigating quickly to a project with the keyboard is so much faster than mousing and scrolling for me.
He mentions several other scripts which look really useful and I hope to take a look at those soon. I have of course added a project to OmniFocus for that 🙂