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.

Drafts for Scratchpads

An update for Drafts came out today that supports the file naming convention that I use for scratchpads. By using the predefined naming scheme Scratchpad_[[date|%y-%m-%d]] and the append action, you’ll get a new text document with that name if it doesn’t already exist or the text will be appended if it does.

If you’re on an iOS device with Drafts installed, use this link to import this Dropbox action.

I’m happy with my separate buckets for writing compared to using something like Drafts for everything because of the separate features and context of each app. Extending quick scratchpad functionality to iPhone and iPad using Drafts is handy though.

Dark Sky Alfred Extension

Before New York City went dark last week because of Hurricane Sandy, I was hunkered down prepared for the worst. Dark Sky was open on my phone constantly to see how the weather would be unfolding for me. The combination of the impending storm and being on lock down had me curious of ways to keep busy while I was stuck inside.

That’s when I started playing with the Dark Sky API.

Often on grey days, as I go out for lunch I’ll check Dark Sky to see whether I’ll need a rain coat or not. I wanted the great information from Dark Sky in an easy to check way on my Mac. Alfred is perfect for that.

This extension checks Dark Sky for the weather with the command now, providing you with the current temperature, conditions, and what to expect for the next hour. Using the command today or tomorrow will give you the outlook for the next 24 hours.

Since I think that it’s important for computers to communicate with us in human ways, I spent a lot of time molding the information that the API returns into full grammatical sentences. 1

This is what the weather looks like now as a good ole Nor’easter is rolling in:

It’s 40 degrees and possible light sleet. Expect sleet in 2 minutes.

To configure the extension for your area, look up the coordinates for your address and enter them as LAT and LON in the extension settings. Alfred displays the weather using Notification Center. If out of the box, it’s not showing you anything when you submit the command, check that your Alfred settings have Extension Output selected.

Update [2013-03-23]: I’ve updated this for basic Alfred 2.0 functionality. I hope to update again sometime soon to integrate new workflow features.

Download the Dark Sky Alfred Extension or see it on Github


  1. Please let me know if you see anything wrong with the wording of how the forecast is returned. 

Notesy and Launch Center Pro

Notesy, my favorite iOS plain text note app, updated to version 2.2 today. With it includes support for iPhone 5, improves some Markdown handling, and most notably, adds a URL scheme for controlling the app with Launch Center Pro. Notesy has implemented this scheme in a very intelligent way allowing more than just popping open the app. You can open, create, and append to notes all from Launch Center Pro. Here’s what the basic scheme looks like:

notesy://x-callback-url/[action]?[x-callback parameters]&[action parameters]

Your main options for action are open and append. There are a few other things like restore and render-markdown (which is cool) but I won’t cover them.

This is my main action:

notesy://x-callback-url/append?name=[prompt]&text=[prompt]

That will pop up two prompts. The first is the name of the new file and the second is the body of the note. Notice that the action is append even though you are making a new note. If the name that you enter matches an existing file it will append the entered text on a new line at the end of the file. If the name is unique, it will create a new file.

To append text to a currently existing file, the URL would look like this:

notesy://x-callback-url/append?name=Things%20to%20Wiki%20%E2%80%94%20runx%20learnx&text=*+[prompt]

That will open my note titled “Things to Wiki — runx learnx” and append to the end of the file the text I entered with an asterisk and a space before it to format it as a Markdown bullet list item. If you’ve got some weird characters in your titles, you may want to use this URL encoding tool to easily get the encoded file name you need for Launch Center to find your note. One of my favorite things about the implementation of this URL scheme is that once the note gets passed to Notesy, it is automatically saved. I don’t have to tap Done to save the note.

In a recent update to Launch Center, support for TextExpander was added so you can use snippets to easily created tagged and time stamped notes. I’d love to see Launch Center support expanding snippets within the URL scheme so I could create or append text to a consistently named but date-stamped Scratchpad. I could put something like Scratchpad_$date in as the name within the URL and whenever I tap a button it would expand to open the file named Scratchpad_12-10-12.

All of these little features add up to make iOS increasingly efficient for power users to be productive away from their Macs.

Setting up a Cough Button for Podcasting with Skype

One thing I miss from using professional broadcast gear when I worked in radio is quick control over your sound. As I’m moving back into podcasting more, I want push-button control to mute my Rode Podcaster mic. I found this Applescript, originally written by Dennis Rande, which will toggle the mute status of your current call. I hooked up the script to two Keyboard Maestro macros to emulate a cough button, where my end of the Skype call is is muted while the button is pressed and un-muted when the button is released.

To set this up in Keyboard Maestro, create a new macro tied to when a key of your choice is pressed and have it execute skype-mute.scpt. It’ll look something like this. Create a second macro so when that same key (I use F12) is released, the script is executed again, toggling the mute off. You can also set just a single trigger with “when pressed” and not the second “released” macro to have a standard toggle; hit your key to mute, hit it again to un-mute.1

Whether it’s an actual cough or a belch from drinking Sodastream on-air, you now havce control over whether you want to disgust an over sensitive audience or not.

Download the Applescript


  1. I use this one at work when I’m Skyped into meetings but don’t need to say much. 

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

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. 

Markdown Thumbnail Preview in Mountain Lion

A cool little find in Mountain Lion: when you use this Markdown QuickLook plugin, Finder will render the Markdown into a thumbnail that looks like this. Mountain Lion seems full of nice little visual cues and polish.

New Second Crack Draft from Pinboard Pins

My workflow for writing link posts is rooted in Reeder and Instapaper on iPad. After reading the posts, I want to be able to get them into a draft as easily as possible. What I wanted to avoid was having to copy and paste links and quotes, opening up a text editor, making a new file, and pasting everything in.

I originally set up an IFTTT recipe that took newly pinned items with a specific tag and created a new text file with information that I passed along to it. There were a few downsides to this. I couldn’t make the filename the slug I wanted, so I had to edit it manually after. I often forgot to do this which caused some 404s when I posted shoddy URLs. The other thing with IFTTT was that it only checked my pins and created drafts once every 15 minutes or so. If I wanted to pin something and then quickly switch over to Byword to edit and post, I was out of luck.

So, I made this thing that works much better. It’s a PHP script that runs continuously, checking for new pins on my Pinboard account and creates drafts when new pins with the specified tag are created. The outputted format is perfect, it makes a slug out of the title I give the pin, and best of all, within a second or two, my draft is in Dropbox.

Here’s my flow now:

1) Find a post on Twitter or RSS and send it to Instapaper for further reading. 2) Read the post and look for a pull quote. 3) Select the text I want to quote and in Instapaper, hit Share. 4) Hit Post to Pinboard 5) Clean up the title, add the tag if it’s not already there and, insert a > to block quote the text. 6) Hit Post and within seconds there’s a perfectly formatted draft waiting for me to review and publish.

Reducing The Interface of Email

Processing your email and stopping it from commanding your attention is difficult to do. Depending on your job, maybe it’s nearly impossible. Merlin Mann covers processing the demands of your inbox in the Inbox Zero talk and extensively on 43 Folders.

Merlin talks about systems to process email so that the amount of stuff in your inbox doesn’t eat up your time, distract you, and ultimately stress you out. To sum up his talk, processing each email is about “deciding in the moment what you need to do about it, then moving on.”1 Even if you have a good system for that, the interface of email itself can be stressful. It’s designed with notifications, lists of things, and buttons for every task possible. By reducing this interface you can minimize the distractions caused by everything but the messages themselves.

Luckily, I don’t have to deal with high volumes of email but what I do get needs to be dealt with appropriately so I can get back to work. Over time, I’ve managed to develop a pretty good interface system to work with my processing system which reduces distraction and encourages proper capturing.

I use Mail.app. It’s not fancy, but it’s built-in and gets the job done. The things I go over will reference Mail but the theory could be applied to whatever program you use. The “design” of my system revolved around two things: avoiding unscheduled interruptions and reducing distractions while processing and writing emails.

Removing Unscheduled Interruptions

I finally switched Mail.app to only check for new mail manually. Lots of people have moved to it, and as I’ve slowly been transitioning away from notifications on my iPhone, I realized that I could do it on my Mac too. The lesson I learned from doing it on my iPhone was that email is way less urgent than you think it is.2 You’ll still need to process it when the time comes around for you to check it but at least you’ll have some time, uninterrupted, to get work done before you go back.

All the time, I see people tweeting anxiously with screenshots of their Mail dock badge complaining about how much email they have to deal with. Pro tip: Mail > Preferences > Dock unread count: None. You know you have stuff in your inbox, why add a reminder that will distract you anytime you glance down at the dock? If you’re checking manually, this badge has no use—and never had any benefit. It’s helpful to know what your inbox count is when you’re processing, but when you’re doing other work, it’s irrelevant.

Bonus

Away from my computer, I’ve worked out a system too. Plain and simple, I don’t do work email on my iPad. It’s a place for me to read and write and do fun things. On my iPhone, in Settings > Notifications > Mail, I’ve turned off alerts, turned off the badge icon, but have messages show in Notification Center. Periodically, I’ll pull down Notification Center, check quickly at the subject and preview to see if it’s something that needs my immediate attention. If it is, I deal with it. If it’s not (most of the time), I hit the drastically undersized X to hide the notifications. Without the icon badge, the messages aren’t visually piling up prompting me to do something about them but also are marked as unread so whenever I go to check my inbox for real, they are ready to be processed.

Reducing Distractions

OK. So the time rolls around that you have to—reluctantly—check your email. When you’re in there, you have a job to do. Get in, process, get out. Anything in the interface that doesn’t help with that is unnecessary. So let’s remove it.

In Lion, Mail’s design was partially inspired from the iPad. Besides the standard chrome, it has the Mailbox List on the left, the Favorites Bar at the top, and the message list and panel side-by-side. The mailbox list and favorites bar can be useful, but most of their functionality can be accessed with keyboard shortcuts. This way, you remove the visual distraction but maintain the functional components that the interface prompts. The mailbox list’s main functionality is, well, switching between mailboxes. Simply, you can hide this by going View > Hide Mailbox List. See how much better that feels already? But what if you have a lot of folders and need the sidebar to drag your email into some random folder that you think is helping you stay organized. Well, first off? Stop that. It’s not helping. Create a single folder for each account called Archive and let Mail’s archive button or hotkey do the work. You don’t need the extra decision of where to put each email. Move it to Archive and let search do the work finding it if you ever need it again. If you really need access to the sidebar, it can quickly be revealed with ⇧ + ⌘ + M, or even cooler, dragging an email from the message list to the left edge of the window where the list is hidden will make it slide out, let you put your message away, and then slide back into it’s place. Magical.

But if you hide the Mailbox List how will you quickly switch mailboxes? Luckily, the favorites bar does that too but with one benefit: like Safari’s bookmarks, you can navigate to the mailboxes in your Favorites with the keyboard shortcuts ⌘ + 1 for the first favorite and ⌘ + 2 for the second, etc. Knowing these shortcuts also means that once you’ve set them up, you don’t need to show the favorites bar. Drag the mailboxes you need into the favorites bar in the order you want then hide it. For me, position number one gets a Smart Inbox called NULL, something that Merlin talked about on a recent Back to Work, which collects all emails with the subject that is equal to a whole jumble of characters that will never be a subject. The benefit of this is that no matter how behind I am on processing my inboxes, my NULL inbox, accessible at ⌘ + 1, is like my little oasis—an escape—where no one is asking me for anything and there are no support emails complaining about something that’s user error. #2 is my work inbox and #3 is my personal inbox.

Now What?

All of that interrupting and distracting interface has been replaced by keyboard shortcuts. One for archiving, and one for navigating to each mailbox. All of a sudden your Mail app looks like this. Awesome, right? Like some zen buddhist minimalist monastery. (That’s a thing, right?)

When I check my email, it goes something like this:

  1. Switch from NULL to work inbox with ⌘ + 2.
  2. Get new mail with ⇧ + ⌘ + N.
  3. For each email, read, process, archive with ⇧ + ⌘ + A (I changed this from the default in System Preferences > Keyboard > Application Shortcuts).
  4. Switch back to NULL, my oasis, with ⌘ + 1.

Why You Should Do This

Not only is this system much faster to navigate because that’s what keyboard shortcuts are for, but it reduces the amount of visual inputs and distractions. Once you get over the fear of not knowing exactly what’s in your inbox every second, you’ll be able to better focus on the work you need to get done until the time that email is the work you need to get done. When that time rolls around, you don’t have all of this unnecessary interface in your way so you can more quickly get back to producing something meaningful.

Because that’s what you want to be doing with your time.


  1. If you’re already a pro at this stuff, good for you. Maybe go read this instead. 

  2. This gets covered in the Inbox Zero talk too, but until you actually do it, you don’t fully appreciate it. 

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.

Markdown Language Setting for New BBEdit Documents

Here’s a great defaults write option for setting Markdown as the default language for any newly created BBEdit documents.

defaults write com.barebones.bbedit DefaultLanguageNameForNewDocuments -string "Markdown"

Whether you go File > New > Text Document, or have a scripted hotkey, by setting this you won’t have to change the language manually to get pretty syntax highlighting for you Markdown files.

You can find more of these options in BBEdit by going to Help > BBEdit Help > Expert Preferences.

Text File Notes in Things.app Repeating Task and Projects

Cultured Code’s Things has been my go to to-do app for years. It has the simplicity I want while having a full feature set. Recently, I’ve been working more with repeating scheduled tasks and projects and have found that the notes system for it isn’t as robust as I need.

I’ve created a multi-step project called “QA & Deploy” that repeats on Tuesdays and Thursdays. Throughout the week, we will have git branches that need to be QA’d, merged, and deployed to production and I’ve been keeping track of these in Things project notes. The problem is that if it’s not the day that the project has moved from scheduled into today, any notes I add to the project are actually made in the project template rather than Tuesday’s instance. Ideally, Things would create instances for this weeks recurring projects in Next which are separate from the template, but knowing Cultured Code’s history with updates, I’m not holding my breath.

I created a workaround using flat text files and Alfred. I used a really basic shell script to create a new .txt file in an arbitrary directory (~/Dropbox/Library/Things/documents) with the filename being the query in Alfred.

This makes it simple to pop open Alfred, hit the command to create a new Things document, and type in the filename I want. This document will then open in whatever application you set in the script, for me BBEdit, and you’re ready to add your notes, save, and drag the file thumb from the title bar into the Things project note area. You’ve always been able to add file references to Things tasks but this system makes it simple to create and puts the file in a place that won’t ever get deleted or moved, so the reference is always active.

What you gain from this is being able to have better project templates where you have more control over the notes. Your repeating tasks and projects will always reference this file so you can have consistent notes if you want or if you don’t, still have a better way to manage them. You get to have your notes in your favorite text editor, with all of the advantages that has rather than the simple text field in Things.app. The downside to this method is that you won’t be able to edit your project and task notes directly in Things for iPhone and iPad, but if you put these documents in Dropbox—which you should—you can edit them in a better text editor there too.

I use this script for Things notes, but all the script does is create a file with whatever extension you designate in the script, in a specified directory with the filename you give it in the Alfred query, so you can let your flat-text-file-imagination run wild and use the script for whatever .txt needs you have.

Download the Alfred extension

Bonus: With both this system, and the one I created for scratchpads, I wanted the new text files I created to open with Markdown syntax highlighting. To do this in BBEdit, go Preferences > Languages > Custom Extension Mappings and add a new mapping for .txt to the Markdown language.

Daily Scratchpad Script Hack

I’ve been on a hunt for a reliable way to collect notes throughout the work day. I need a place that I can brain dump and use as an inbox. I use index cards a lot and like them, but they are not searchable or archivable. Text files are great for that but they can be a pain to manage. I like BBEdit’s use of scratchpads in projects and wanted to mold that into a system that’s easy to initiate, manage, and comes along with the benefits of flat text files.

For a while, I used BBEdit’s single Scratchpad.txt file and just set a hotkey in Alfred to open or display the little window. With this method I wouldn’t keep the text, just delete it and have a fresh Scratchpad.txt when I felt like it. I also played around manually creating a new scratchpad text file daily, but the point of a scratchpad is that it’s just always there when you need it, no fuss.

Today, I finally broke down and made an Applescript that is initiated by a hotkey via Alfred. I hope it will solve my problem. It does three things:

  1. Creates a new date-stamped text file for today, if one doesn’t exist
  2. Opens up today’s date-stamped text file, if the file already exists
  3. Sets the window size of your last scratchpad text file1.

This solves for a few issues. It makes management easy because I don’t have to manually create a new file and name it with today’s date stamp, scratchpad files are only created when I need them so I don’t have hundreds of empty text files, and the most important thing: it’s always where I need it to be, one keystroke away.

You can download the script if you’re interested. To use the 12-01-31 date format in the filenames2 you’ll have to change the format in System Preferences > Language & Text > Formats > Customize. The script is set up with my path and filename preference but you can obviously change it to anything you’d like. You’ll also be able to make it work with TextMate, TextEdit, or whatever editor you use by changing which application you tell.

I’d love to know what kind of Applescript/text file hacks you use. Tweet me or email me at the links below.

Update (12-07-30): Mountain Lion made something in this script a little wonky. Here’s an updated version that fixes it.


  1. BBEdit opens up new windows pretty large, especially on a Cinema Display. 

  2. This is the output of short date string of (current date)

Alfred.app Customization and Hacks

Alfred has quickly become a go-to application for me to get stuff done. It started off with great core functionality and over the course of beta and launching as a 1.0 has improved and added many features and customizations. A community has grown around Alfred which has led to an abundance of plugins and extensions to be created and shared only making the tool better. I encourage you to check out Alfred if you haven’t, buy the Powerpack, and then once you’ve played around with it a bit, come back and read about how you can hack Alfred’s endless amount of settings, tools, and customizations to tailor its use for you. Here are some of the hacks I’ve made.

Show Alfred With Selection

In the recently released v1.1, Alfred included the ability, upon triggering a special hotkey, to intake text selected in another application as Alfred’s query text. You can even set automatic keywords and where the cursor is positioned to quickly modify your Alfred query. The perfect use-case for this is selecting a product name that you want to search, hitting the Show Alfred hotkey and adding ‘amazon’ in front of the phrase to quickly be on your way Amazon. Another great use is to select a word, trigger your alternate Show Alfred hotkey and add in your keyword to lookup the word’s definition.

To set this up, open up Alfred preferences then Hotkeys and then Add > General > Show Alfred and configure it as you wish.

Global Scripting

Setting up hotkeys allow you to run scripts and open up files and applications from anywhere. My favorite use of this functionality is running a basic Applescript that will paste my clipboard contents into a new BBEdit document. This lets me quickly jump into editing text or starting a new scratchpad the moment I find text I want to do something with.

Here’s that script if you’d like to use it.

Custom Searches

Alfred has a lot of web searches built in but it’s really simple to add custom searches as well. You can use a keyword and the {query} string to add your inputted text into a URL you specify. You can include your {query} into any GET request for things like search engines (google.com/search?q={query}) or inputting an ID in a RESTful webpage.

Two custom searches that I often use are searching within commit messages of a specified Github repo and opening a specific story via ID in Pivotal Tracker.

To set up a custom search for a specified Github repo, use the following URL: https://github.com/user/branch/search?q={query}&choice=grep

choice can be code to search within code, grep to search commit messages, and author or commiter respectively.

By creating the following search URL with the keyword track I can paste in a Pivotal Tracker story ID from a commit message to easily open it in Pivotal Tracker.

<a href="https://www.pivotaltracker.com/story/show/%7Bquery%7D">https://www.pivotaltracker.com/story/show/{query}</a>

There are endless possibilities for custom URLs so try to roll your own for sites you frequently search.

URL Handlers for Twitter.app

Custom searches also allow you to tie into URL handlers, which are used to make hand-offs between apps by using a URL protocol like appname://. This Tweetie iPhone app resource archive shows the methods that were built into Tweetie as well as Twitter for Mac. The main ones I wanted to use are user and search to be able to use Alfred as an input to open up a search or user page in Twitter.app rather than opening Twitter.com.

Creating a custom search using the following search URL will quickly open up a user’s profile that you’ve entered into Alfred, just as it would if you’re in Twitter.app and go File > Go to User.

twitter://user?screen_name={query}

This custom search would open your query in Twitter.app rather than Twitter.com:

twitter://search?query={query}

I find URL handlers very attractive since they provide the inter-application connectivity of the “open web” with the software experience of well-built native apps.

I would love to hear your Alfred hacks, so please share them on twitter or email me at the link below.

Fastmail Friendly With ifttt

Here’s something that you get with Fastmail that Gmail won’t let you do: forward emails without verification so that they work with services like ifttt.

I’d tried several work arounds between Gmail and ifttt to be able to email an attachment to dropbox@mydomain.com and have it redirected to triggers@ifttt.com. Even though I could set up a dropbox@mydomain.com email, Gmail would force me to verify I was allowed to forward to this address. This process entailed having a message sent to triggers@ifttt.com with a code or link I needed to click. I could set up a ifttt task to process incoming email as text documents, but the email would come from some random Google address that wouldn’t match the address my ifttt account used. I could never authenticate forwarding to triggers@ifttt.com.

With Fastmail, you don’t need to authenticate. Under Options > Define Rules > Forward, you can set up rules to redirect emails to other addresses, such as triggers@ifttt.com. Now, when I send an email with an attachment to dropbox@mydomain.com, the attached file will show up in Dropbox.

Clippings in BBEdit

I’ve been learning new things about BBEdit ever since I started using it but this article pointed out something called Clippings and it is magical. I love TextExpander just as much as BBEdit but it doesn’t work well with text selections.

Here’s a great use-case for Clippings: I’m writing in Markdown (as always) and go back to something that I want to add a link to. In apps like Byword (which I also love) you can easily select the text and hit ⌘ + K. This will wrap the selected text in standard Markdown link syntax and put your cursor right where you need it to be. I wanted to do this just as easily in BBEdit. Sure, BBEdit supports scripting but I want something as easy to create and manage as TextExpander snippets and AppleScript is clunky. With Clippings, you use commands like #SELECTION#, #INSERTION#, #CLIPBOARD#, and whatever snippet text or code you want to build your clippings. The simple one I needed for wrapping text as a Markdown link is:

[#SELECTION#](#INSERTION#)   

My selected text will become the link title and the insertion point will be where I paste in my link. You could also use #CLIPBOARD# in place of #INSERTION# if you regularly copy the link you’re adding first.

To create a clipping, type out your clipping, select it, right-click, and “Save Selection As Clipping…”. Add it to a set and it’s ready to use by choosing it in the Clipping (the big C) in your menu bar. To add a keyboard shortcut to your clipping go Window > Palettes > Clippings, to see a list of your clippings. Select the one you want, and click “Set Key”. Your clippings will live in ~/Library/Application Support/BBEdit/Clippings/[setname] and you can simply add more clippings to this set by saving a new file in that folder.

I’m curious to hear your ideas for Clippings; let me know on Twitter. And if you’d like the clippings I’ve made and use for writing in Markdown, you can download them here.

Hack/Make

As a new year falls upon us people quickly learn the difference between goals and resolutions that are created and goals and resolutions that are attainable. Whether it be getting in better shape or to start saving money, making steps towards these goals can be intimidating and we often fail because of not knowing what we’re getting into or how to approach the problem we’re trying to solve. Knowing tips and tricks can help make small progress and relieve pressure you will feel to get something going but these little hacks aren’t always the best way to get things done. There are big and small things we can do to improve our situation and make life goals happen.

A hack in the technology world is a messy or quick fix for something—a MacGyver. It’s a workaround to fix a bug or implement a new feature quickly 1. A hack tweaks code or changes hardware’s ability, stretching it beyond its intention to fix something or to add functionality. Hacks are rarely elegant but that’s not the goal. Hacks are like duct tape; you can create things out of duct tape and improve things with duct tape but it’s likely that the problem could have been better solved using a couple bolts or a weld.

Every situation we want to improve needs a solution. The solution is something you design and create; you make it. Not only do you make the solution, you make it happen. The concept of lifehacking isn’t new but the hard work it takes to truly make your life better is usually ignored. It’s ignored because it’s hard. Really hard. Hacks are popular because you think that by adding some cool apps to your MacBook, using a Grid-It in your bag, or cooking meals in batches and freezing them in little bags labeled by day will improve your life. They might help a bit but they are only part of the solution.

Using a continuous series of hacks is a bit like quickly iterating in the software industry. You try a hack (and maybe call it a feature) to see how it works and if you or your users thinks it’s an improvement, you keep it. You continue the cycle until you have a set of hacks but not a feature set. Duct tape over duct tape. The problem with this type of iteration is that when you are looking too closely at immediate solutions you lose focus on your direction and can easily iterate yourself down the wrong path. When you ‘make’, your choices are deliberate because you are following a blueprint you already set out. You can focus on your solution while keeping in mind how making it relates to greater aspects of life.

These two approaches aren’t exclusive. Hacks can take away some of the pain of getting started and can help you in the process of making. Making is the heavy lifting that is needed to do things properly. You’ll be in better control of your solutions by using a mix of hacks and makes.


Combining hacks and makes is one of the core concepts that I’ll be exploring and writing about here. The hacks might be something you find on Lifehacker or maybe ‘mind hacks’. Maybe I’ll be making (or compiling) real, tangible things or creating in a similar way restrictions or mindsets that are only cerebral. I don’t totally know where this is going but it’s important to me to grow intellectually, stabilize financially, and explore real things that make every day of my life better.


  1. Hopefully you are planning on going back and fixing it soon.