HACK / MAKE

Batch Capture OmniFocus Tasks with Drafts

I’ve often been asked and been curious myself about a simple and fluid way to get a list of tasks into OmniFocus on iOS. There have been some hacks using Pythonista and I’ve come very close to setting up a system with my Mac mini server to grab a text list, parse it out, and add it to OmniFocus using Applescript. But with a major assist from James Gowans comes a pretty straightforward way using Drafts 3.0’s new “List in Reminders” action.

This new action will list out the lines of your drafts as line items in Reminders and thanks to OmniFocus’s support for importing tasks from Reminders you can go from Drafts to OmniFocus in one tap.

The basic support in Drafts for “List in Reminders” dumps your draft straight into Reminders without even leaving the app. That’s smooth if you want your items to stay in Reminders but we want to trigger OmniFocus to scoop up the tasks so they don’t get left in between.

The trick to this is to “Allow URLs to trigger actions” in the Drafts settings. This means that Drafts can call it’s own actions in addition to the x-success callback function. Once everything is sent to Reminders, OmniFocus will open and grab all the new items.

Once you’ve set Drafts to allow URLs to trigger actions and have turned on Reminders Capture in OmniFocus, add this URL action to Drafts:

drafts://x-callback-url/create?text=[[draft]]&action=List%20in%20Reminders&x-success=omnifocus://

Selecting this action on your draft will send each line to Reminders, then switch to the OmniFocus app which imports each task into the inbox. I can’t find a way to deep-link into the Inbox view so you will be switched to wherever you last were in the app but you can be sure that your tasks were imported. If you know how to link into the OmniFocus inbox, please let me know. Unfortunately, contexts and projects still aren’t supported through the URL scheme but just look at what your amazing pocket computer can do.

My “Stream of Tasks” OmniFocus Perspective

OmniFocus Perspectives can help float relevant tasks out of a deep and complex pool of things you need to do. Unfortunately, Perspectives can also be deep and complex. There is one main perspective I use for tracking ongoing personal tasks. It’s basically a rolling timeline of tasks based on their start date that keeps me on pace with what I should be doing and what I’m behind on. Most of these tasks are routine and repeating, things like reviewing bank statements, swapping out contact lenses, writing rent and utilities checks, and doing laundry. It’s stuff that doesn’t have to be done on the day it starts but stays in view until it is marked as done or deleted. This perspective also lets me forward-date something and be confident that I won’t miss it when it starts up. As long as the task has a context that is a child of my main @Personal context (which is my default selected context) then it will show up in my stream of tasks.

A trusted system is one that holds you accountable to the things you promise yourself you’ll do. I have a “Write something” task that starts again every day. When I notice that it’s still in my stream but from a few days ago I know I need to just sit down and write—the perspective doesn’t let me forget. When there’s a task that’s sitting in a project that keeps getting marked as reviewed but never marked as complete, sometimes it just needs to be “kicked down the field” as David Sparks likes to call it. That’s where you forward date something to take it off your mind for now but don’t just outright delete it. When it starts again, the task will be in my stream—the perspective helps me remember.

This perspective is core to my trusted system as it keeps me accountable by showing me what (and how far) I’m behind on tasks, shows me tasks when they start so I can start-date things and know that they won’t get overlooked, and most importantly, it does both of those things in a simple and seamless way.

Here’s the ““Functional Component”” so you can set up this task stream. It’s is a context-based perspective that restores expansion and selection. The context sidebar filters active tasks, it groups actions by start, and sorts them by project. If you’ve got the setting right, here’s what the Perspectives panel will look like. By the way, those pretty icons are by Icons and Coffee and you can buy them here.

Perspectives are about simplifying and supporting your system and an ongoing stream of time relevant actions helps keep me on top of the things I need to get done.

Workflow is Practice

Speaking of knowing process, an excerpt from Zen Mind, Beginner’s Mind, which I’ve found some intriguing ideas in:

There is no particular way in true practice. You should find your own way, and you should know what kind of practice you have right now. Knowing both the advantages and disadvantages of some special practice, you can practice that special way without danger. But if you have a one-sided attitude, you will ignore the disadvantage of the practice, emphasizing only its good part. Eventually you will discover the worst side of the practice, and become discouraged when it is too late.

“Workflow” is a vague term because it has to be. Like “practice”, it’s more about doing what works for the work at hand rather than what some blog suggests. The hard part about workflow (and why we all go to these blogs to find tips) is because there aren’t right answers. There are good parts and things with advantages and disadvantages. An advantage, like OmniFocus’ Perspectives can be a disadvantage in some places because of the learning curve.

Workflow takes practice and workflow is practice.

The practice starts with being mindful that there are better ways to do your work and improve your life and then choosing a place to begin making progress.

Scripts and Hacks Grab Bag

The origin of the term “Life hacks” was all about engineers who would build tools to help them in their daily life. As I’ve gotten more familiar with languages like Applescript, PHP, and Python, I’ve been creating more of these hacks to help out with things I do on my Mac.

Here’s a grab bag of some of those I’ve created recently. They are all in different states of stability but I use most of them so they’re at least not completely broken.

OmniFocus

Set Start Day for Selected Tasks: OmniFocus has great support for entering dates with quick shortcuts like Mon and 2w. But they don’t have a quick way to get to the start date field from the keyboard.

I’ll often have a series of tasks that have to push back for some reason. The way I work is often based on days, like “I can’t do this now but I should have a chance on Thursday.” This applescript prompts for you to pick from a list of days. You can type in th and hit enter and the selected tasks will be scheduled for a Thursday start date.

This does all the date math on its own, where it will always choose the following occurrence of that day. I’m writing this on Saturday and if I choose Saturday from the list it will set the start day for next Saturday.

It’s a fast and logical way to schedule tasks so you don’t have to think about them until the time comes.

Download Set Start Day Applescript

Using an Applescript .app to trigger tasks from a recurring OmniFocus action: I have repeating tasks in OmniFocus to create things like weekly log files or emails for status reports that I want to automate as much as possible. Automating it is not only faster but maintains consistant naming schemes if you’re particular about that like I am.

It’s simple to create something in applescript to make a file:

set today to do shell script "date +%Y-%m-%d"
set filepath to "/Users/nickwynja/Desktop/"
set filename to "Test " & today & ".txt"

do shell script "touch " & (quoted form of (filepath & filename))
do shell script "open -a BBEdit " & (quoted form of (filepath & filename))

That will create and open a file named Test 2012-11-10.txt on my desktop in the app I specified in the open -a command. Most of that is actually shell because it’s easier to do one-liners and often more compatible between different apps.

If you save this as an application in Applescript Editor, you’ll be able to attach the .app to a OmniFocus task, and with one click, it will create and open the file you need.

Keyboard Controls

Media Control Keys with Rdio and iTunes: Most of the time I use iTunes set today to do shell script “date +%Y-%m-%d” which is well bound to to the Since getting a [clicky keyboard](http://wwstandard Previous, Play/Pause, set filepath to “/Users/nickwynja/Desktop/” If yoript Editor, you’ll be able to attach the .app to a set filename to “Test ” & today & set filename to “Test ” & today & “.txt”That will create and open a file named Test 2012-11-10.txt on my desktop in the app I specified in the open -a command. Most of that is actually shell because it’s easier to do one-liners and often more do shell script “touch "” & filepath & filename & “"”compatible between different apps.”.txt”OmniFocus task, and with one click, it will create and open the file you need.Next controls on a Mac. Keyboard Maestro’s built in macros for these controls behave the same way as a do shell script “open -a BBEdit "” & filepath & filename & “"”standard Apple keyboard. Sometimes when I’m feeling frisky, I’ll open Rdio to listen to some new tunes. This means I have both Rdio and iTunes open and all of a sudden these media controls become a mess. I needed something that would Play/Pause the right app when it was playing.

Since I only sometimes have Rdio open, this script would check for that first. If Rdio is running, the script sends the specified control to Rdio, or else it sends it to iTunes. This logic only fails when I have Rdio open but not playing and iTunes (which is always open) playing a song. So I just get in the habit of quitting Rdio when I’m not listening to it. This will probably work with other apps too as long as it has a similar Applescript dictionary.

This is such a great solution and has gotten my using Rdio way more. Before I’d have both open and instinctively hit the Play/Pause key and then iTunes would start. It would be a train wreck of two songs playing over each other. Connect these scripts to Keyboard Maestro and enjoy seamless control over your audio apps.

Download Rdio/iTunes Media Control Applescripts

Open and Clear Notification Center: Notification Center is a really nice way to get an overview of what you need to know so you can process it or get back to work. Apple gives a way to open Notification Center using the keyboard by setting a shortcut in System Preferences > Keyboard > Keyboard Shortcuts > Mission Control. The most often action I have in Notification Center is to open it, check the preview of new emails that have come in, and then clear out the notifications so I can ignore and come back to them later. There’s no keyboard binding for this but you can set something up in Keyboard Maestro to imitate clicking on the little x. The “Move or Click Mouse” macro is perfect and gives you options to click at a certain location on the screen and then restore the mouse location to where it was. This is what my macro command looks like.

I have F12 set up to open up Notification Center, glance at what’s in there, then hit control+F12. This imitates a click for the topmost x button. If there’s notifications from different apps, you’ll have to clear a few times. When I’ve sufficiently ignored everything, I hit F12 again to close it.

That’s efficient first-level processing without ever leaving my keyboard.

BBEdit

BBEdit is so wonderfully scriptable and that makes me happy inside.

Autosave Scratchpad Files: I love my scratchpads. I dump random strings of text in there, list to-dos, and leave notes to myself. I’ve always wanted to be able to pipe text into it from scripts and Alfred extensions but the problem was the file wouldn’t autosave like it would if I was using nvALT. If I would try to append text to the scratchpad and it wasn’t saved I would have conflicts.

I found this gist that ties into a hook when you switch focus away from BBEdit and saves open documents. I didn’t want it to save all open documents though, just my scratchpad.

All I needed to do was change this line which gets all open documents:

set docList to every text document in theApp

To this which matches the document name of my open scratchpad:

set docList to every text document in theApp where name of it contains "Scratchpad_"

Follow the documentation in the script to set it up. If you bought BBEdit in the Mac App Store, you’ll also have to install a script to get around sandboxing and authenticate this save for you. You can find instructions to do that here.

Now I can assume that in most use cases my scratchpad is saved and I can append text without conflicts. I use F2 as a keyboard shortcut triggering the script that opens my scratchpad and now have ⌘-F2 to append my clipboard to the end of the saved scratchpad using a hacky keyboard maestro macro.

Text Filters: I’ve discovered that you can run scripts on text selections and if you only intend to do that action inside of BBEdit, it runs faster than using Services.

I previously created a service that would mark may plain-text todos as completed. This worked but wasn’t as fast as Text Filters are. The service was written in python so all I had to do was take it and add it into /Text Filters in BBEdit’s Application Support directory. All it is is a simple find-and-replace for the [ ] Task string I use for a to-do and replace it with [X] Task. But this helped me figure out that I could manipulate other strings with more powerful scripts.

I haven’t gotten too deep in this yet but one that I did write helps me format markdown headers. Often I’ll just write and then go back and format. BBEdit’s clippings can work well for markdown formatting but you can’t put much logic in them.

What I wanted to do was select a string and wrap it with a # to make a heading like this:

# Heading 1 #

The problem with clippings is that since I wanted the spaces, wrapping a selection with a clipping and then repeating would add extra spaces in between the # like this:

# # Heading 2 # #

That’s neither attractive or valid markdown. This python script (which probably could be simplified) does the job perfectly and works for multiple lines too.

import sys
import re

for a in sys.stdin:
  b = re.sub(r'^(.*?)$', r'# \1 #', a)
  c = b.strip("\n")
  d = c.replace('# #', '##')
  print d 

With this, I can select a heading or several lines of headings and it will wrap them in #s. Tap the keystroke again and it will add another one before and after without the space. It’s the little things that make me happy.

Download Markdown Heading Text Filter

Copy Slug to Clipboard: The way Second Crack (the blogging engine I use) works is it takes the file name of the post as the URL slug. I usually have the title of the post decided and written at the top before actually saving the file. This service which Brett Terpstra original shared with me will take the selected text—in this case my title—and turn it into a slug-ready string on your clipboard.

I’ll copy my title “Scripts and Hacks Grab Bag” and run the service on it. Hit Save and the save prompt will open then paste and in goes the slug scripts-and-hacks-grab-bag. Boom. Off it syncs with Dropbox and is ready to publish.

Download Copy Slug to Clipboard Service


That’s it for now but I’ll probably do another one of these grab bags when I’ve built up a bunch more interesting hacks to share. I hope that these are useful or at least inspire you to find ways to improve the efficiency of your work.

Update: Cleaned up the Applescript to make and open a file. Thanks to reader Jan-Yves for the quoted form of tip.

Plain Text To-Dos from OmniFocus

I spend a lot of time in OmniFocus, and that’s where I set up both work and personal projects. Sometimes it’s nice, when getting work done, to move a few tasks I’ve got lined up in OmniFocus into a plain text file.

I created an Applescript that copies your selected actions in OmniFocus along with a little unicode square at the front. Setting up the script to a hotkey with Fastscripts makes it easy to turn a list in OmniFocus to something like this:

☐ Placeholder task 1  
☐ Next placeholder task  
☐ Once more, just for fun  

I even made them Markdown safe with two spaces at the end.

And to mark those tasks as done, I created a service that, when you select the line (⌘ + L in BBEdit) and hit the hotkey you set in System Preferences > Keyboard > Keyboard Shortcuts > Services, it replaces the little box with an x:

☐ Placeholder task 1
x Next placeholder task
☐ Once more, just for fun

Quick and easy to-do lists when OmniFocus is a little more than you need.

Download

20,000 Feet

Managing Your Areas of Goals and Responsibilities

Areas of Responsibility are the places, things, people, and projects you care about enough to do and where others rely on you for something. They’re different for each of us depending on the kind of work we do and the shapes of our families and friendships. These areas define who we are since they are how we spend our time and attention.

Understanding these areas gives you a high-level look at what you need to be good at, efficient at, better at, and what you can let slip or cannot drop. You might have five or twenty areas, and they won’t all be equally as important to you. By gaining this view at 20,000 feet, as David Allen puts it, you’re able make better decisions about what you need to be getting done:

Listing and reviewing these responsibilities gives a more comprehensive framework for evaluating your inventory of projects.

Defining What’s Important

We usually have a general idea of what we’re responsible for or want to make a focus, but listing them out—as with defining anything—helps set a clarity of vision for how you should be spending your attention.

Where you can really gain is by adjusting your areas of responsibility, to more appropriate life areas based on what you want to be doing with your attention, not just what you are currently responsible for. Travel may not be a current responsibility of yours, but you’ve been dreaming about it and want to be putting more time into that. Shouldn’t this be given a reasonable ranking in the areas you spend your time?

I defined this list in order of importance of what matters to me and how I want to be spending my time in both my personal and work life:

  • Life
    • Boyfriend/Brother/Friend/Son
    • Adventure
    • Writing
    • Teaching/Sharing/Learning
    • Technical/Systems
    • Finances
    • Household
  • Work
    • Execution
    • Project Planning
    • System Administration

What’s Important to You?

Make a list like this for yourself. Don’t just put what you currently spend your time doing but use this list to shape how you want your life to look. It’ll take some time, and it’s worth considering if the areas that are part of your life now are something you want to keep, or if you can remove things and simplify. What have you been dreaming of but haven’t made a priority? What falls through the cracks but shouldn’t any longer?

We’re going to connect this list into your system to better track progress and be prompted to create and do projects that will help you improve in each of these areas.

Your Areas Should be “Actionable”

You’ve got this fancy list of projects and actions listed out, but what helps you decide what to do next? Contexts are great for filtering out tasks you physically can’t do based on limitations—“you can’t mow the lawn from your iPhone”, as Sven Fechner says. I’ve created a folder structure in OmniFocus with a hierarchy matching the the list above to organize my projects based on what matters. Shaping your list of actions based on the areas in your life helps outline what’s most important to you and as a result, what actions should be on the top of your stack. In Project view, OmniFocus can sort the list of actions based on your folder structure, so that the actions at the top of your folder structure—what’s most important to you—are always at the top of the list and the tasks that matter less to you are given their appropriate positioning. Whatever system you’re using, consider shaping the order of how you add and complete tasks around the areas you defined and what’s you value most. When you sit down to catch up on some emails, if you’ve defined that your relationships take priority, as I have at the top of my stack, then that email to your Mom should happen before work stuff.

Keep Working Towards What Matters to You

I’ve read about people who suggest avoiding empty folders in OmniFocus; that they’re clutter. To me, once I’ve defined something as being important and created a folder to represents a section of life I want to be focusing on, it being empty is a problem. It means that I’m not working towards something in that area. If my Adventure folder is empty, I’m not planning a trip. Reviewing and seeing that I don’t have plans to improve my life somewhere I’ve chosen to focus on gives me a kick and prompts me to start doing something there. Maybe it’s just adding a few single actions or the nudge I needed to start researching that big trip I want to do, keeping these areas in view and in a reviewable system means that I don’t lose focus on what I set out to improve on.

Functional Component

The systems in our life are meant to help automate much of what we do so we can think about something once and more easily make ongoing decisions about what we want to be doing. By defining what areas are important to you and shaping your to-do list around that, you make it easier on yourself every time you look at the list. You don’t need to choose whether it’s more important to go pick up something at the hardware store you have on your Household list or go get that thing you’re wife asked of you. You’ve made the decision that your relationship is most important and will take trump on other tasks every time and the list of things you should be doing reflects this. You also have a way of reviewing the things you want to be doing from a high-level and can push yourself in the right direction when you notice that you’re not working on a certain area like you should.

Put what’s important to you first so the things that matter get your attention.

Building Email Templates into OmniFocus Tasks

I have a few recurring tasks in OmniFocus that are like “Email weekly update” or “Email change log”. Here’s an easy way to build email templetes right into OmniFocus task notes so that you are one click away from sending that recurring email.

The basis of this little hack is our old friend mailto:. This standard can handle much more than just a single address. In one link, you can include a list of to: addresses, cc: addresses, bcc: addresses, a subject, and a body.

The format that works with Mail.app1 looks like this:

mailto:name@email.com, anothername@email.com?cc=thatguy@email.com&subject=Weekly Recap&body=Here's a recap of what happened this week: 

All you need to do to set this up in a recurring task is to go to the notes field and add in a short note like “Weekly Recap Email Template” then select the text and go Format > Text > Add Link and paste in the mailto: link you created.

Now whenever you need to send out that email, you have a template built right into the OmniFocus task.


  1. Unfortunately, these template links don’t survive the sync to iPhone or iPad. 

Automating the Basic Things

Automate the basic things in your daily life. By doing this, you free up some attention to focus on something that matters more.

Automate paying bills and transferring money to your savings account. Use Amazon subscriptions to deliver household items you often need. Make use of recurring, scheduled tasks in OmniFocus. Form habits around doing these things so it becomes automatic that you do laundry on Thursday and pick up groceries on Mondays. Use Due for iPhone to nudge you to do things you want to become habitual.

Be OK with running some things on auto-pilot. You might be a bit obsessive, like me, and want to do everything with our fullest attention. The truth is you can’t, and no one at the grocery store cares if you’re on cruise control through the aisles.1 By automating these menial things, you keep more attention in reserve for the things that matter.

Create structures so you not only won’t forget, because it’s in your system, but you remember to do it because it’s just a thing you always do.


  1. As long as you remember to keep moving and get out of the way

Favorite Things: Summer 2012

First, recapping “Favorite New Things of 2011”:

  • Field Notes
  • Raw denim jeans
  • 5by5
  • Traditional wet shaving
  • Merlin Mann
  • GORUCK GR1

Now onto the new stuff.

Aeropress

Up until recently, I bragged about getting through college without a dependency on coffee. I’ve since found out that I was a sucker because coffee is awesome. I realized it wasn’t that I hated coffee, it was that I hated bad coffee, which apparently is abundant. I got started at a local coffee shop that I’d go to write at. It smelled so good and I had to try. Since then, I’ve set myself up with some gear, mainly an Aeropress coffee making dingus. You can see how it works—and the resulting effect—in this video by lonelysandwich. The Aeropress makes some of the most delicious coffee and is only about $20. It’s simple and fun to use, is really fast, and there’s practically no cleanup. I probably don’t need to explain the benefits of caffeine in the morning, so here’s why it’s now important to me, beyond the jolt: it gives me something to look forward to in the morning, which helps pull me out of bed. This leads me to my next favorite thing.

Waking up early

OK, so, I’m still learning to love mornings but they are becoming an important part of my life. I’m not up at 5AM—the ass crack of dawn—like some zen minimalist monk dudes, but 7AM has been giving me enough time to get my day started the way I want it to before getting into work around 10AM. Here’s why I pull myself out of bed early (most of the time1) when my body doesn’t want to: I get to set the tone for each day. I get quiet time every morning where I can do what I want, before I check email and twitter and get into work. My day doesn’t begin with someone else’s beckon. The way I define my mornings sets what’s important to me. I start my days writing, reading, preparing, planning, reflecting, meditating—and drinking coffee. What they aren’t: rushed, commanded by other people, complex. I start my day with my projects and what’s important to me. I’m defining how my day is shaped by putting those things first.

Roderick on the Line

Hosted by Merlin Mann and John Roderick from the band The Long Winters. Roderick on the Line is a collection of stories from touring the world as a rock musician, philosophies about life, and exploring John’s perspectives about everything, usually shaped in the form of “Well, here’s the thing about ______.” I love it because it’s hilarious, while pseudo-philosophical, and slightly make-believe. John’s road stories have a grandeur about them that tempers my wanderlust. His insight, wrapped in cynical tinfoil, will have you wanting for the next episode.

OmniFocus

This tool for Mac, iPhone, and iPad is a powerhouse. That’s not news for many people but after switching to OmniFocus after using Things for years, I know this now. You can read here for the full why but the gist of it is this: your brain sucks at remember things, and you need an outboard brain to keep track of all the things your brain can’t. You need to be able to trust this outboard brain enough to commit to it and to capture into it. I trust OmniFocus. If you’re serious about getting your work done, get OmniFocus.

Launch Center Pro

This is a new tool in the App Store and I like it a lot. I’ve written about Launch Center Pro and the cool things you can do with it a few times. It uses URL schemes to quickly launch actions within apps so you don’t have to flip through home screens and folders, then open apps and dig around the interface to do a thing. It has great support for OmniFocus and other productive apps like Due, 1Password, and Wikipanion. This app brings a novelty to my iPhone once again and has made capturing to my inbox and writing into text files a dream.

Noise

I work in a pretty loud office. Sometimes it’s so loud that, even with good closed-back headphones, music doesn’t cut it. I’ve been using a track of pink noise to help mask the sound of voices which helps me concentrate. Pink noise is similar to white noise in that it’s… noisy—that hiss you think of when the radio station goes out of range—but pink noise registers more in the 2 - 4 KHz range, which is in the range of human voice. Thus, it does a better job covering it up without needing higher volume. It takes a minute or two each time to get over the fact that the noise is a little annoying but once I stop thinking about it, it helps me to really focus in on what I’m doing—like really focus. It’s kind of like the drug that guy takes in the movie Limitless. I don’t know if it’ll work for everyone but it’s worth a try if your in a coffee shop or somewhere with audible distractions and need to get things done. Here’s the 10 second audio file I listen to on loop.

I like writing these posts because it makes me think about things that I really care about, use a lot, and that contribute to making my days a bit, or a lot better.


  1. I struggle here often. It’s too easy, and has very little consequence for me, to turn over and go back to bed. I’ve done a few tricks to help me get out of bed but nothing works like just plain determination, which I need more often here. 

OmniFocus Contexts, Folders, Perspectives, and Tasks in Launch Center Pro

Tight integration between OmniFocus and Launch Center Pro is continuing to unfold. Michael Schechter posted about some really fast ways to capture tasks using using the [prompt], [clipboard], and canned text in the action URL. Genius. I rushed to set this up and am really loving it.

But it gets better. I saw Justin Lancy link to this series of tweets from Ken Case, CEO of Omni Group, talking about URLs for contexts, folders, perspectives, and tasks to deep link into the app.

If you’ve played around with Launch Center at all, you’ll recognize omnifocus:///add, which allows you to add a new task. Ken mentions URLs to open a /context, /folder, /task, and /perspective, and all of these work with Launch Center Pro.

Here’s the man himself explaining how to get these URLs:

Context, folder, and task URLs can be generated from the Mac client by selecting something and using Edit->Copy As Link.

When you copy the link from OmniFocus on your Mac, you’ll end up with a URL that looks something like this for a context:

omnifocus:///context/ivk7b-f4OSH

And this for a single-action list:

omnifocus:///task/ffnCm4uVOEm

Perspective URLs use the perspective name rather than an internal id: “omnifocus:///perspective/PerspectiveName

A note here: you’ll have to encode the spaces in a perspective names with a %20. The URL for my Next Actions perspective looks like this:

omnifocus:///perspective/Next%20Actions

I set up some @contexts that make sense to be quickly accessible on iPhone, like @errands, @phone, and perspectives I’ve set up like Next and Daily.

Seeing this type of workflow ninja stuff (finally) on iPhone really excites me.

Why I Switched From Things to OmniFocus

It’s about trust.

The core of GTD is about capturing things into a trusted system. It has nothing to do with the software, it’s interface, or who endorses that app. If a paper list is what you trust the most, that’s what you should use.

Trust is why I switched to OmniFocus.

A few weeks ago, I jumped into a pretty big GTD system overhaul. The time had come. I wasn’t using my system to it’s full strength and my output was suffering because of it. It began with trying a different approach to how I used Things. I set up some more effective contexts and tried to streamline my capture and process methods. I wrote Applescripts to help with this and made a pact with myself to capture open loops better. None of this helped.

A few times in the past, I had considered switching from Things but ultimately decided that was counterproductive. I just stuck with it because Things was what I knew—it was what I was comfortable with. But it wasn’t what I trusted.

As I thought about investing the time into a major change, I realized part of what had kept me from truly trusting Things. I had doubts about it. I had doubts about it’s development. I had doubts about it scaling. In the racket of GTD, the people I trusted trusted OmniFocus so I was always wondering what I was missing out on. Some of the features they talked about sounded pretty cool but what really intrigued me was how much they believed in it as their outboard brain. For me, Things was a great tool but I didn’t believe in it enough to make it as deeply connected to my life as it should be. Every time the thought came to mind about giving OmniFocus a try, I was subconsciously sabotaging my commitment—not to Things, but to trusting my system.

After less than a week using OmniFocus, I truly trust it. It’s interface can be complex to a newcomer and implementing Perspectives can be overwhelming. It’s power, though a learning curve it surely has, is what means it can grow with you. Projects and Contexts are just dumb buckets you put stuff in but Perspectives are what builds trust. I know that whatever dumb tasks I put in some dumb buckets, I’ll be able to mold my Perspectives, over time, over career changes, and in pursuing different projects, to give me the outlook I need on the things I have to do. OmniFocus will be able to evolve as the things I need to get done evolve.

And that’s a trusted system.

Quick Text and Fast Learning with Launch Center Pro

Launch Center Pro was released in the App Store last week. It has a smart interface that focuses on launching actions rather than apps. By using URL schemes that are built into third-party apps, it quickly launches actions like searching on Yelp or posting a tweet in Tweetbot and has a text input area so you can pass text into these other apps. It really feels like Alfred but on the iPhone.

It can do basic things like create tasks in Things or OmniFocus, make new reminders in Due, or tweet using the built in tweet sheet. It can also do some much cooler things. Here are some of the great actions that I find really useful.

Search with Wikipanion

As often as I can, I wiki things. Wikipanion is my favorite Wikipedia app and it has a URL scheme so you can quickly submit searches. If you already have Wikipanion installed, it should be listed in the Installed list or you can use the URL wikipanion:///[prompt]. Pop open Launch Center Pro, hit Wiki, type your query, and Go. Boom. Before you know it you’ll be wiki’ing everything.

Look Up Words with Terminology

Words are great. Terminology is great. Too often I fake knowing what a word means when I really should look it up. Launch Center and terminology://x-callback-url/lookup?text=[prompt] is by far the fastest way to look up a definition on the iPhone.

Quick Text Files

As soon as Launch Center Pro shipped, I started digging for text apps that had URL schemes so I could make new notes really fast. Simplenote has a URL scheme but it wasn’t exactly what I wanted, so I built a script instead. I have Dropbox running on my server to move around files for Secondcrack, so being able to send a query string to my server meant I could write a file to Dropbox.

What the script does is take basic parameters you pass into a URL that’s set up in Launch Center Pro and makes a new text file or appends to an existing one. You can pass in [prompt] just like in the other actions and the script will GET that and use it for your text file.

Here’s the basics of it. You set an action with the URL that points to your script, set the param you want for t and set n to [prompt].

http://domain.com/scripts/text.php?t=book-list&n=[prompt]

So now the script will GET what you pass along, in this case book-list.

$type = trim($_GET['t']);
$note = trim($_GET['n']);

You can then create conditions for the $type of note you sent with your Launch Center Pro action. Here, if I hit my Add to Book List action, $type will be book-list and go to this condition.

if ($type == 'book-list') {

    $file_name = 'Books to Read.txt';
    $file_path = '/home/user/Dropbox/Notes/';
    $file = $file_path . $file_name;
    $text = "\n" . $note;
}

This will set the file I want to write to and the text I want to append. Lastly, the file is actually written. If $file exists, $text will just be appended.

file_put_contents($file, $text, FILE_APPEND);

With this I can really quickly add something to a running log file. You could easily append your note with a date stamp or create a new date stamped file. Here’s what my Text section looks like in Launch Center. Again here, the possibilities are as endless as what you can do with text files.

You can find the entirety of this script on Github.

A couple downsides with this is that since you are hitting your server, it requires a network connection. The other is that it pops over to Safari to make the request. Sometimes if you close Safari for a while, then come back, it will reload that page, resending the query, and duplicating your note. I think a great feature in Launch Center Pro would be to optionally have action URLs open in an in-app web view. This way you wouldn’t have to wait for the switch to Safari, and you could easily close the window and be back in your Launch Pad without that window lingering around.

Launch Center Pro has really pushed boundaries of both interface and workflow on iOS and is only getting started. As more apps realize the benefits of URL schemes, I think we’re going to see some very cool things happen. But don’t leave it up to somebody else. Make Launch Center Pro do something awesome yourself and share it with the rest of us nerds.