An update on how I’m using my private Slack team.

Almost a year ago, I began using Slack by myself, having created a private team with a bunch of purpose-based channels. If you want to know more about how that experiment started, check out that post.

People ask me from time to time if I’m still using it, and the answer is a resounding “yes”. In fact, Slack continues to improve and offer great integrations with lots of other services, and it’s even easier than before to send information into a Slack channel from almost anywhere. It’s blossomed into an indispensable organizational tool that I spend a great deal of my day in, browsing, working, and pushing information into and out of the team.

The addition of Safari View Controller to the app has made a lot of these things I’m pulling in faster to access, and provided a more centered experience. I’ve refined my channels a little bit since I started, and added some new ones, centered around other topics of interest.

Here’s my current roster.

#alerts – high priority notifications, Google alerts I’ve set up for various things,1 and I watch a specific Dropbox folder for collaboration alerts, since they usually show up a few days late or not at all.

#blogposts – each time I post something, the link to that post is dropped into this channel. Mostly just a quick reference if someone asks for one.

#clipboard – multi-device snippets and pasteboard sync. Still love it and use it constantly.

#daily – this is a new thing I’m trying. I’ll explain in a minute.

#deliveries – I mostly just buy things on Amazon, so I don’t use this all that much, but I will occasionally throw a tracking number/link in here if I need to refer to it, eliminating the need for a dedicated app.

#ebay – if I’m searching for something, it pops up in here as it appears on eBay.

#edc – RSS entries on cool gadgets from everydaycarry.com. I have a problem with small tools, and this is how I indulge myself.

#home – I have some shared lists in Wunderlist with my wife, and I get the update notifications sent here.

#photo – I have a few different RSS feeds pointed here, with the simple goal of seeing nice things on a semi-regular basis. Currently, NASA’s photo of the day (via IFTTT), and Unsplash (love this site.)2

#pricedrops – alerts on app sales from MacStoriesDeals and AppShopper.3

#reading – this is my “read later” channel. I toss random links I plan to read here and come back to them whenever.

#rss – I keep a small collection of low-volume feeds that I want to ensure I read each day, so they don’t get lost in the din of other news and the RSS combing I do for work. Blogs by friends, and a few other sites I enjoy.

#snippets – a channel that just holds blocks of text, links, images, etc. I may use frequently or not so frequently. I don’t use this channel all that much, but I like that it’s here.

#starwars – a channel devoted to Star Wars news, articles, and general nerdery.

#town – alerts from the local police department about events, hazards, etc. Supremely–and surprisingly–useful.

#twitter – since effectively abandoning the network on which I used to set fire to piles of my personal time, I created a channel for a handful of accounts that I’d still like to see updates from, without subjecting myself to the misery funnel that Twitter’s become in many ways.4 I also get notified here if someone mentions me, or if certain search terms hit a match.

#video – think “read later” but for stuff you’d watch. YouTube links, etc.

#weather – forecasts and severe weather alerts.

#workflow – a channel devoted to iOS automation, piping in new items from r/workflow and the Drafts Action Directory as they appear. I think I might have a few other things pointed here as well too.

#yankees – news and info on the baseball team I grew up with.

So that’s the current run, and I’m still thinking of new ones.

Which brings me to the idea behind #daily. I have a pretty standard routine (I’d imagine many of us do at this point) of waking up, grabbing for my iPhone, and beginning the Early Morning Badge Clear Game. What often ends up happening however, is that I get into my work inbox, or start reading something I don’t have time to finish in the news, or whatever. You get the idea. The #daily channel was supposed to be an experiment to collect things that I would definitely want to see first thing in the morning, all in one place, give me a jump on my day, and get me mentally prepared for what I need to do–quickly.

The first thing I did was move the morning weather forecast from #weather into this channel, since I always want to see the forecast for the day first thing in the morning. Then since I’m old and can’t always stay up late anymore because kids are soul vampires being a parent of small children can often leave one very tired, I sent the RSS feed for Meh in there, so I can see what stupid thing they decided to sell overnight. This doesn’t work so great for when they have those freakout sales on Fukubukuro boxes of nonsense, but since they’re tweaking the way they do things, may prove more useful to me as time goes on.

But what’s really useful is seeing what I need to focus on that day. My tasks, calendar, etc. all shoved into a nice little summary. A daily brief. That’s where my mad scientist friend Tim comes in.

We’ve been going back and forth on this idea, and we’re in the middle of creating a Workflow5 that will take a whole bunch of personal information (calendar, tasks), add a field for impromptu notes, and throw the weather forecast in for the day, format it in a decent way, and send it directly to Slack. I do this before bed, and the next day, I just scroll up and read through the brief I sent, and then anything else that wound up in the channel overnight. I’m thinking about maybe using Workflow to insert some news headlines6 and other things that can get my brain going while I’m laying in bed, wishing I was still asleep.

Tim has done a lot of work tweaking this idea and building functionality into it, so check out his post. He’s got a bunch of explanation and links to multiple variations on the Workflows.

I’m really into this daily briefing idea. It’s new, and I think it has some legs. I plan on exploring it a lot more.

There’s a theme throughout my use of Slack, and my ideas for what I can do with it, and it’s similar to how I think about Workflow. I’m most interested in using these tools to either a) pull information to me in some useful way so I don’t have to look for it, or b) replace a single-use app of some kind with a similar and (hopefully) comparable set of functionality. Those two use cases continue to drive my experimentation with both apps, but primarily with Slack. Using dedicated channels in an app I already have installed, I can replicate the primary functionality of a handful of small apps that I would have otherwise installed. Will it do everything those apps do? No, not by a long shot. But for the major use case(s), it’s almost always good enough, and that continues to drive me to think of other ways to extend it. The more I use it, the more I want to use it, and find new ways to do so.

The other thing I’ve come to enjoy is the separation of topics of my interest (or functionality) by channel. Instead of an RSS app with a bunch of feeds in folders, I can send different feeds to different channels, and mix that content with other notifications and integrations to create a new experience. This level of flexibility is what gets me really excited about continuing to explore the tool and talk to other people who are thinking along similar lines.

Slack has become an integral part of my day, and continues to deliver a ton of value for me on a personal level well outside of its intended business-based use cases. Having a team all to myself is really fun, and gives me a great outlet to fiddle with iOS automation and web services without too much fussing. I’ve seen other people exploring this kind of thing too, and they’re doing some great things as well.

If you’re doing something cool with Slack outside of work, I’d love to hear about it.


  1. You can create an RSS feed for a Google alert and then use Slack’s RSS integration to get it into a channel. 
  2. If you have any other suggestions for things that send nice pictures, please do let me know. I love this channel and want more of it. 
  3. IFTTT has a channel that does this too, for AppZapp, but I found it to be too high volume (even with my tweaking) and not relevant to my general interests. YMMV. 
  4. I’m still way happier not being there, in case you’re wondering. 
  5. I had the idea, Tim is actually doing all the heavy lifting, because he’s like, WAY better at Workflow than I am. 
  6. But if I’m being honest, this almost sounds like a terrible idea, because it’s usually just more misery, and I can do without that first thing when I get up. 

Clipboard automation with Slack, Automator, and AppleScript.

Several weeks ago I wrote about using a personal Slack team for notifications and other personal info. Since then, I’ve continued to experiment with adding channels and connecting services, trying to find the right mix of utility and centralized information gathering for me.

One of the things I really love is using a #clipboard channel, which allows me to instantly synchronize anything between my Mac and iOS devices. Some people use Slackbot for this, and yes, you could also use AirDrop or any of the myriad clipboard syncing apps, but I’ve tried almost all of them, and they all disappoint in some way. Nothing beats Slack for sheer speed and reliability in this arena, believe it or not.

Given that I’m always looking for ways to waste time streamline workflows for maximum productivity power ups, I was curious to know if I could make the copying of text (my main use case) faster within this process. I asked the following question:

and was met with a chasm of silence. And a few people who wanted me to let them know if I figured out a way to do it.

Slack’s Mac app is essentially a web wrapper for the site itself. Which isn’t a horrible thing, but does make for some less-than-stellar integration points. It’s actually easier to automate this kind of thing on iOS, believe it or not, due to the extension system provided to developers beginning with iOS 8. But I had a little time this weekend and was determined to figure it out, so I decided to get my hands dirty with Automator like any other rational person. I was able to get highlighted input text copied to the clipboard and sent to the right channel on the web easily, but that meant I needed to open a web page every time and wait for it to load… like an animal. So I began thinking about UI scripting and decided to try it with the Mac app using AppleScript.

I will admit this right now: I’ve never really used AppleScript before, and I’ve used Automator only peripherally over the years, so the result of this little experiment is a bit of a dumpster fire. But it actually does what I want it to, which is kind of cool.

First, I needed to understand at least basic AS stuff. I did a little reading and managed to get a handle on it fairly quickly. It’s quite a bit of fun, and I’m actually sorry I waited this long to play with it. Once I felt comfortable, I put together as much as I could in Automator to get the app focused and ready. Then I began assembling the script. In order to really win, once Automator launched the app, it needed to do the following:

  • from whatever team I last left the app in, switch to my personal team (Cmd-1)
  • activate the quick launch dialogue (Cmd-K)
  • enter “cl” to highlight my #clipboard channel
  • simulate a press of the return/enter key
  • paste the text into the field (Cmd-V)
  • simulate another press of the return/enter key
  • switch back to the app I was working in (Cmd-Tab)

All of this is totally possible, and not even that hard in AS. I found this awesome app that displays the key codes and other info for keys as you press them, so I was able to keep the script a little bit tidier. The tricky part–the part that drove me nuts and took me the longest to figure out because it wasn’t instantly apparent–was that I needed to build tiny delays into the script to allow the Slack app to catch up to the simulated inputs. I added a few tenths of a second between the steps in the script, and the result was that the app looked like I was just typing super fast, pasting, and tabbing back to the previous app, as opposed to just farting out the failed alert sound your computer makes when you do a thing it doesn’t want you to (which happened a lot as I was tripping through figuring this out). The finished result looks like this (seasoned AS users, avert your gaze; don’t look upon this atrocity):

tell application "System Events"
key code 18 using command down
delay 0.3
key code 40 using command down
delay 0.5
keystroke "cl"
delay 0.3
key code 36
delay 0.3
key code 9 using command down
delay 0.3
key code 36
end tell

Like I said, not the prettiest piece of work. A second smaller AS block just handles the Cmd-Tab after this is done. But it works, and I’m pleased as punch that it does. I mapped a keyboard shortcut to the Services menu entry in System Preferences, so now I can highlight text with my right hand, and with my left, hit a key combo and instantly run the action, returning to the current app in about 3 seconds. And the pasted snippet is available on all my devices, instantly.

So yeah. There you go. Waste of time? Probably. Useful? Actually, yeah, very. And I learned a little something. So let’s just move on.

Person-based OmniFocus context triggers with Launch Center Pro.

During a discussion with some fellow OmniFocus friends in a Slack channel, we talked about how great it would be if contexts that we assigned to people could trigger when we’re with them automatically. While there isn’t a good way to do this yet, I thought about it a bit and made what I would call a halfway decent substitute, all things considered. It combines connecting some hidden OF features on the Mac with Launch Center Pro and OF on iOS. And while it isn’t quite automatic, it’s pretty close, as long as you build a habit around it.

I remembered seeing a post about using OF’s URL scheme support to trigger actions a while back. Some of OF’s features have obvious URL scheme support, but some are a little more hidden. In order to get an actionable URL for a context, you need to have the Mac app open and right-click on the context you want to use. An option called ‘Copy As Link’ will appear. That’s what you want. Unfortunately, there’s no way to do this on iOS, so unless you’re using OF on all platforms, you may be out of luck. But if you’re like me, and you have that beautiful purple icon everywhere, proceed to step two.

With that URL on the clipboard, get it over to your iOS device any way you want. I used Notes.app, because it’s probably the easiest way to do this, as it syncs fairly quickly. With the URL on the iOS clipboard, go ahead and open up Launch Center Pro.

Now you can drop this URL in as a single action, sure, but if you want to really light your world on fire, collect URLs for all the contexts you have that pertain to people. For me, it was about a half-dozen, mostly folks at work, but I also have one for my wife, and one for my parents when I see them. Use LCP’s list format option for your action, adding a label and the appropriate URL for each new item.

When you’re all done, save the action, add an icon, and place it somewhere. You now have a single button that brings up a list of names. If you’re talking to someone for whom you have a context, fire this action off and tap his/her name. OF will open directly to the context and display all the actions associated with that person. Of course, you need to remember to do it. (You could set a notification directly from LCP to fire if you definitely know you’re seeing someone in advance, e.g. for a meeting, to even better safeguard against forgetting to do this.)

Short of having your device know who you’re talking to, as long as you have the sense to pull out your phone and tap that action in the course of the conversation, you’re all set. I have a feeling this is going to help me immensely, especially with people who have very little time and are tough to pin down. Getting all your questions answered or discussion items covered at once is invaluable if time is short. And even if it’s not, you’ve got a nice, quick way to jump to a person’s associated items the next time you sit down together.

Auto-posting to WordPress (and archiving in Dropbox) with Drafts.

Last week at WWDC, I was lucky enough to spend some time with my friend Manton Reece talking about writing. He shared with me that he had a great little setup for posting short content to his WordPress site using IFTTT’s Do Note app and a plugin. He uses a customized version of the “status” format in WP to insert these smaller thoughts and then builds a separate RSS feed that you can optionally subscribe to in addition to the longer articles.

I thought I might like to do something like this, but after looking into it further, didn’t feel like tinkering with the post format, and figured I could probably get by with the standard format. But since every post I write starts as/is stored as Markdown in Dropbox, I was unable to automate the WP integration the way he had and still generate a local copy for myself. So I began thinking through this with one of my favorite apps, Drafts. What I was able to put together was a multi-step action that allows me to do exactly what I want with almost no effort.

Drafts allows you to send email as an action. WordPress allows you to post into the system via email. Using a combination of the action and the Jetpack plugin’s email functionality, I can go from idea to published in seconds, without touching the WP iOS app (which continues to get better, but still isn’t fast) and get my local copy stored away.

Let’s say I have an idea for something longer than a tweet, but shorter than my usual posts, and I want to just throw it up on the site. I open Drafts and write a short post where the first line is the title, and the remainder is the body. I run my “Quick Post” action which does the following:

  • Prompts me to pick 1-2 categories for the post
  • Launches an email sheet to allow me to proofread the post before sending
  • Using syntax provided in Jetpack, the post is published
  • Creates an archival .md file in the directory in Dropbox where my posts are stored

This could be sped up even further if I trust that I wrote everything correctly and skip the “foreground” email option to send in the background. However, the other benefit to having the draft email come up is the ability to edit any of the syntax on the fly if I decide to change something at the last minute. You also have the ability to simply create drafts of posts instead of auto-publishing by changing the post status option from “[status publish]” to [status draft]”. I’ve built this into a separate action so I have the ability to do either one quickly, if I’m not quite ready to put something live.

You’ll need to enable email posts on your WP site first, and generate the incoming email address to use in the Drafts action, so make sure it’s enabled and entered correctly. I also wanted to have the ability to add that second category prompt but back out without canceling the entire operation, so I asked Greg about it and he mentioned that if you turn off the “Include cancel button” option and create a button that just says “Cancel”, you can skip that step without stopping the whole action. This does create a tiny bit of editing that needs to be done, because you then have as category slugs something that looks like “[category apple,cancel]” but it adds a little flexibility and I’m willing to accept that tradeoff in that final step, since I’m proofreading (and potentially editing slightly) anyway before posting. But, since Greg is awesome, he added a scripting step to the action, which obviates the need to do this. Also, I only use categories, so you can add a step for tags if that’s more your flavor (see the Jetpack page for more info).

If you’re interested, I’ve posted the sample action (minus my WordPress-specific details) to the Drafts Action Directory here. After posting, on the web it displays the CC and BCC lines as filled with the same sample email address, but when the action is installed, they should be blank (correctly).

I really like writing in Markdown, and having a copy of all my posts easily accessible that I can return to outside of WordPress. And I’ve been looking for a way to write more frequently without committing to huge ideas. This series of steps achieves that in a quick and easy way, and I’m looking forward to seeing how it works for me.

Things I like this week, volume 1.

As I find things I really enjoy, I’m going to try to share them here. I can go into more detail than I can on Twitter, and it’s nice to have a quick way to look back at these things from the future and see what’s changed (or how I have myself). So here we go: here’s what I’m digging this week.

Lore
A great new podcast by my friend Aaron Mahnke. It focuses on folklore, history, and stories that scare us. He shared the first episode with me shortly before he launched it, and I was immediately hooked. It’s brief, well-produced, and full of rich storytelling and historical detail. Here’s the site for the show.

Blink
A new app by another friend, John Voorhees, that makes searching for media and generating affiliate links from the iTunes stores exceptionally easy. With a nice, clean interface, and iOS 8-friendly extension, it’s a great addition to your device if you find this process tedious on iOS. Blink is out today.

Launcher
This app has a rather storied history, but it’s back now, and I missed it the first time around, so I’m getting into what it can do. Short version: you can pin shortcuts to other apps and actions in a Notification Center widget. Which means all kinds of cool functionality is now only a swipe away. A perfect complement to Launch Center Pro and Workflow, you can pair it up with the other powerful automation apps you might be using and make a crazy Voltron of mobile productivity. Get it here.

Using Drafts as an Alfred replacement on iOS.

Lately I’ve enjoyed working from my iOS devices more than ever, due in large part to the great changes in iOS 8. But every day, I still do a great deal of work from the Mac as well for reasons of control and speed. I use Alfred for a ton of functionality, for everything from launching apps and quick searches to basic calculations and defining words. It is a single point of entry for so much of the data I interact with on a daily basis, and I love both the quickness it employs and the flexibility it affords me. I can extend it in completely new and crazy ways with workflows and create chained events to perform actions in the background. If you’ve never tried it, you simply must, and shortly thereafter upgrade to the Powerpack because it completely changes the way you can use your Mac.

Due to the essential nature of how iOS works, something like Alfred simply can’t exist in the same way. The company has released a companion app called Alfred Remote, which is interesting, and allows you to create a palette of quick buttons to launch actions on your Mac. But it’s far from an analogue to the functionality you’d find on the desktop. iOS silos its data for a variety of reasons, and even with the great strides iOS 8 brought to developers, the idea of an always-running, ubiquitous utility ready to assist you from anywhere you find yourself simply doesn’t exist. Even Apple’s own Spotlight implementation, while providing some of that functionality, doesn’t run everywhere–it needs to be invoked from the Springboard.

With these constraints in mind, I began to think of how I could replicate the tools I enjoy with Alfred in an iOS environment. Since getting the iPad Air 2, I’ve attempted to set it up as closely to my MacBook Pro’s app/service configuration as possible, so that I can truly work from either device. I’m also going through a process of discovering how I can slim down the number of individual apps I have installed by replicating functionality in other apps like Workflow and Launch Center Pro. It’s a fun way to pass some time, and I always like consolidating things. Sometimes it’s a little puzzle I want to solve, and sometimes the answer is to just use a dedicated app because the experience is better. But the process leads me to examine how and why I do things, and you know how I like gratuitous self-reflection. Ahem.

I had to examine what I do with Alfred on the Mac, and distill it down for iOS. There would obviously be sacrifices and redundancy in some cases, so I’d need to account for that. For instance, there’s no way I can toggle Wi-Fi or Bluetooth with a key command or a keyword on iOS as I can on the Mac, and between Spotlight and Launch Center Pro, my app-launching needs are more than taken care of. (Although, now that I think about it, you’d probably be able to build a simple app launcher into an action group if you really wanted to. Maybe I’ll give it a shot to see how it feels.) That left the core of what I do with Alfred.

Drafts is an incredible app that I’ve been using since it arrived on the App Store, and one that I’ve spoken about before. At a glance, it’s a notepad, ready to accept input as soon as you launch it. But anyone who’s used it can tell you it goes way further than that. You can send that note to a variety of places, perform actions on that text, even script additional functionality to interact with it. There is a vibrant community around the app and the Action Directory is evidence of that. I don’t have the capacity to explain how truly interesting and powerful this app is in the course of this piece, so go see it for yourself.

Thanks to its robust handling of text-based information, Drafts became my surrogate for this experiment on iOS. Through its Notification Center widget, it’s actually accessible from anywhere on my device (can’t say that for Spotlight), so I can always pull down and jump directly to it. It would be the single entry point for text, and I would apply as many different actions as I could to it to emulate my flow with Alfred. I took screenshots of Alfred’s preferences on the Mac as well as the individual workflows I had installed on top of that, and built a list of what I needed to do.

(Note: I’m not going to cover every single action in this post, but apart from the obvious things like controlling Wi-Fi, I’ve pretty much covered this list or I’m working on something that will. Or I’ve decided to ignore something and use a separate app. Whatever.)

First, the basics. The stuff I use that’s built into Alfred.

  • App launching
  • Search (internet/file system)
  • Basic calculations ️
  • Tools/functions
  • Definitions ️
  • Direct file system access
  • Contacts
  • Clipboard history/management
  • System commands

Then, my custom workflow additions.

  • Send to Todoist
  • Send to Due
  • Post to Twitter
  • Append/prepend text files
  • Wi-Fi/Bluetooth toggle
  • Basic conversions
  • Down for everyone or just me
  • Whois lookup
  • Force empty Mac trash
  • Forecast.io lookup
  • Giphy search
  • IMDb search
  • iTunes Store search
  • Determine current IP
  • New calendar event
  • New text file
  • Open current Safari tab in Chrome
  • Random password generator
  • Custom search (Box files)
  • Custom search (Dropbox files)
  • Pinboard search
  • Quick access to Transmit favorites
  • VPN toggle on/off

Many of these can be handled deftly in Drafts without much, if any tinkering. Some of this can’t be handled at all. Some of it just takes a little finesse. Here’s how it looks.

I created action groups: “Actions”, “Search”, “Notes”, and “Tools” based on the type of functionality I was looking for. With Alfred, it all kind of ends up in one big pool as you are able to winnow down what you’re doing contextually as you type–it’s one of the things that makes the app so cool. In Drafts, you need to browse a little. Different, but not terrible at all. Hey, it’s still iOS.

So, the actions. Anything dealing with plain text/notes–nailed. You can create, append, prepend, modify, and pretty much anything else you want to do as long as it’s text and your destination is somewhere Drafts supports. So all my Dropbox actions are buttoned up. Drafts can write to iCloud Drive as well, so that’s an option too for quick zaps between iOS and the Mac.

Same for quickly adding to apps like Todoist, Due, and Calendar to create new items. As long as a URL scheme exists or someone’s built an action and posted it, you can probably do it. Drafts has advanced clipboard handling, so that’s in there too, as is posting to Twitter.

In as many cases as I could, I applied URLs to these actions to open in a browser. Obviously, this makes sense for things like searches, especially since a lot of local apps don’t support any kind of URL scheme beyond opening. In some cases, I preferred native app integrations to web actions, though. It’s much better to open the Twitter app to do a search with its new deep integration than have to boot over to the mobile web, which frankly, sucks. I created a Pinboard web action for searching my own archives, since the app I like to use (Pinner) doesn’t support a search from outside currently. It’s a great app, but it just doesn’t do this one thing I want it to. I also repurposed some of my focused Duck Duck Go searches here, creating a master list of all the places I might want to hit, as well as a few app favorites (like 1Password).

Where things get pretty interesting is within Drafts’ advanced tagging system. It allows you to logically interpret certain things like dates, times, and even latitude and longitude–which came in really handy with the Forecast.io action. If I want the lookup for where I am right now, I don’t even need to enter text, since the URL adds the location tags independently. If I want to search a different location, I can type in “Austin, Texas” and run the Google weather search, which will take me straight to a page with a small weather module right at the top. I asked Greg about doing simple calculations right in the app, and he told me that’s supported as long as it doesn’t get too complicated. In addition to the action, there’s a script key add-on that does the math without needing to pull the drawer out. Hot.

Other cool things:

  • Giphy search goes right to the excellent custom UI in Launch Center Pro
  • iTunes Store search uses fnd.io which is fast and covers the entire store in a nice UI
  • Down for everyone and whois lookup use clipboard contents, and current IP is just a text-less action that runs, similar to the Forecast action

The things I can’t do at all? Well, as I said, toggling system states (Wi-Fi, Bluetooth, VPN) is out, as is direct file access and search on iOS. What I discovered in my experimentation, however, was that while the Dropbox iOS app seemingly has no deep URL hooks, the mobile site supports a direct search as part of a URL string! So I’m able to pass a search term from Drafts to the mobile site, and after a few seconds (in my testing, under 15-20), I get a list of results, which I can then link to, or open in the native app. It’s not the real-time file access/search that Alfred provides, but it’s pretty damned cool for an iOS device, since my entire file system is based in Dropbox. Is it quicker to just open the native app and pull down the UI to search right there? Probably. But for the purposes of this experiment, this was a fun discovery.

As an extra bonus, I discovered that my WordPress site supports search in a similar way, so now I have a super fast path into my posts if I want to find something I wrote in the past to share with someone, which is something I do frequently.

Overall, it’s a big change in how I use my devices. I’m not sure if this will stick, but I wanted to try it, and see if I could map my Mac mental model of entry field-data-action to iOS. There are limits, but there are also cool things iOS can do that the Mac doesn’t. It’s interesting to me that on the Mac, my information flow out of my head to an action is so different than on iOS, based on how the environment differs.

It did get me thinking about what could be possible, though. I think that someone could definitely build something like Alfred for iOS and have it be as close to the Mac experience as possible, by which I mean that it would require some serious pre-configuration on the part of the user, and you’d still be limited by the iOS filesystem constraints, but between URL schemes and extensions, something really compelling could exist. I think you could build a UI on iOS that intelligently provided target actions based on what you type. I’m sure it would be a ridiculous power user tool, but I think it could work. I have no idea about what potential market this kind of app would find, but I’d love to see someone try. If it was done well, I see no reason why it couldn’t be sold at a premium to people like me who want to get every bit of power and functionality out of their devices.

In the meantime, this has been a really fun experiment for me and I figured out some cool things both about Drafts and how I can modify basic existing URLs to become more action-oriented. As our iOS devices gain more abilities, I look forward to seeing this process evolve. If you have any questions, you know where to find me.

Workflow: Open tweet URLs in the iOS Twitter app.

Workflow 1.1 is out and it’s a terrific update. I’ve been playing with it since last night and toying around with a few new actions. One that I came up with doesn’t necessarily use the updates to the app but was something I’ve been thinking about for a few days regardless.

I really like the first-party Twitter app a lot and have been using it consistently since last fall. But sometimes when the flood of chatter becomes too much for me and I need to retreat a little, I fall back to Tweetbot or Twitterrific, two other lovely apps. Right now I’m using Tweetbot again because of keyword filtering, which I sorely needed for a few weeks of sanity restoration. But there’s stuff that the native Twitter app does (cards, analytics, archive search, etc.) that simply aren’t available in third-party clients.

Take cards for instance. Twitter has cool media previews embedded in tweets that let you check things out without leaving the app, but you only see a link in a third-party client. I built a little workflow that lets you open the tweet you’re currently viewing in the Twitter app to take advantage of some of those additional features.

In order to to this, I had to figure out how to get the app to recognize the URL being passed to it. Basically, you copy the link to the tweet, which gets formatted as an https:// link, which of course will open in Safari by default. Once there, there’s a tiny button in the web UI to open in the app. I copied that URL and applied it to a workflow step.

So you run the https link through a “Replace Text” step and strip out everything before the status ID, which is a long string of numbers, and append it to a link that opens the Twitter app itself (starting with twitter://). I’ve never used regular expressions before, and I know that while everyone gets all fired up about them, I just never had a reason to. But I tried it today so that you could send any tweet URL to it and it would strip the username and prepare the ID properly. One period and one asterisk later, I’m a regex expert AMA.

Seriously, don’t though, I barely got this to work. If anyone has any beginner regex tips, though, I’m all ears.

Anyway, it looks like this, and you can download it here. As with most of my first draft workflows, it can probably be done better, so have at it. I thank you in advance.

Behold, the majesty of my regex prowess, and despair.

02-17-2015, 7:05 AM
David Chartier linked to a better version with variables and all kinds of whiz-bang stuff that bypasses the copying I was doing and saves a step. Use this one instead (I know I will).

I really have to learn how to do these more complex things to take my game to the next level.

Siri, SMS, IFTTT, and Todoist.

When a lot of us started checking out Todoist after Federico’s comprehensive review, one of the things I noticed I’d be giving up was the Siri integration that I’d come to rely on with OmniFocus. OF has a nice feature where it would watch your Reminders for things you added, presumably using Siri, and pull them into your inbox within the app. Todoist is insanely flexible in so many ways, but there’s not currently a direct parallel for this feature.

I started looking to IFTTT for a solution to this. I noticed some recipes that attempt to do the same thing, as IFTTT can monitor your iOS Reminders as well. But since it needs to occasionally be brought up from the background, if you don’t jump into the app regularly, the reminders may never show up. Which defeats the purpose of capturing this way.

I had forgotten that IFTTT can process incoming SMS data as a trigger as well as use it as an endpoint. So today I looked into pushing text messages to IFTTT and having them then get redirected to Todoist. Since both services talk to one another directly on the web (one of the most interesting parts of Todoist in my opinion), this actually works incredibly well, and way faster than I’d anticipated.

You’ll need to set up a recipe in the following way:

  • Start with the SMS channel, and choose either the plain incoming SMS option or a tagged one if you prefer (my suggestion would be to keep it simple, since we’re relying on Siri to do the work and you want accuracy).
  • Then choose the Todoist channel (activate it if you haven’t already) and have the task sent to whatever project you like. I always use inbox, as it’s just for general capture anyway.
  • Once the recipe is made, you can tap to edit certain parameters of the Todoist action (priority, task content, due date1, and note for premium subscribers).
  • I created a contact simply called “Inbox” on my iPhone, again to keep things simple for Siri.

So now, I just say: “Send a message to Inbox that says remember to follow up with the team” and Siri parses it as you’d expect, and sends the message2 directly to IFTTT. Seconds later (it’s shockingly fast in my experience) the task is in my Todoist inbox. It’s way faster and more reliable than hoping the IFTTT app is running often enough to pull reminders directly, and since sending text messages is one of those easier Siri things that works more often than it doesn’t, it’s pretty solid.

Todoist’s web core makes it an interesting way to funnel things into your task list. I’m so glad I thought to do this, because it makes that instant capture I was missing totally achievable again.


  1. I noticed one weird thing related to applying due dates to Todoist via IFTTT. I have my Todoist account set to add a reminder notification to any task that has a date and time associated with it. However, while tasks with times were added correctly, the reminder notification was not. I reached out to support about this and was told that this connection probably isn’t currently supported via IFTTT. If you’re just collecting inbox items this way and processing them later, it’s a nonissue. If you edit the recipe to add dates/times however, just be aware of this potential limitation. 
  2. You can do this with Siri and email too, using the subject line as the task item and the body as the note (if you’re a premium subscriber). But I found that since I’m usually only doing the name of the task anyway, as it’s the bit I need to think about and SMS is so fast and easy, it’s preferable to email in this case. 

Workflow: Annotate Screenshot and Delete.

One of the things I’m always trying to do is reduce the number of apps I need to use to accomplish certain tasks. In the absence of Yosemite’s Markup feature on iOS, I’m using Skitch, and have for a while. It’s good, but I almost never open it unless I need to draw an arrow in a picture for some reason. And then I send it somewhere, and then I have a screenshot I don’t really want, and a second version with an arrow. Both of which I want out of my Camera Roll.

So I built a workflow to do just that. Here’s what it does:

  • Looks for your most recent screenshot
  • Opens that photo in the editor so you can do whatever you want to it
  • Copies the edited photo to the clipboard
  • Launches the Share sheet
  • Provides the option to immediately delete the original screenshot after sharing is complete

Instant editing, no messy screenshot leftovers. Unfortunately since the image editor can’t currently run as part of an extension, you need to launch it by itself. If that changes, this is going to be awesome.

Get it here:

Annotate & Delete

12-14-2014, 9:24 PM
Phillip Gruneich over at One Tap Less (one of my new favorite places on the internet) took this and improved on it, bypassing the clipboard entirely. I’m still getting the hang of variables, so any time someone can take my initial idea and make it better, I’m all for it. Check out his full post here, which has a few other gems as well.

Oh, and it was brought to my attention that the ampersand in the workflow name causes trouble if you try to use it in Launch Center Pro. Just change it to ‘and’ to avoid that. Didn’t occur to me. I just liked the way it looked.

Quick memes with Workflow.

Something I do a lot (for better or worse) is look for silly images online, and apply text over them, for ostensibly comedic purposes. How effective this is depends on a variety of factors, such as alcohol intake for the evening, who the intended recipient is, etc. Anyway, there’s this amazing new app called Workflow that is bound to make so many things on iOS so much cooler and easier. It’s truly a groundbreaking achievement, and as such, I decided the first noble application of this new power would be to extend my reach as a horse’s ass.

With that, I introduce my first workflow. I’ll probably revise it, and I’m certainly looking for feedback if you’re the kind of person who can make it better. Please get in touch. Anyway, here’s what it does. It’s saved as a shortcut in Launch Center Pro. When I tap it:

  • The Workflow app launches
  • I’m prompted to enter some text
  • I’m sent to Safari for a Google search on that term, where I can pick “images” and find something
  • I find an image and copy it to the clipboard
  • A second workflow that sits as an extension 1 returns me to Workflow (the app is told to wait until I return to continue executing the flow)
  • Upon returning to the foreground, it opens the clipboard contents in the image editor
  • From here I can add text quickly
  • The new image is saved to the Camera Roll
  • Then my Twitter app opens, and I can drop the new asinine image right into a tweet

I know for sure that I can tighten this up, and I plan to keep tweaking it, as well as try to do something legitimately productive with this unbelievable app. But this was a great little exercise to figure everything out and now I have a handle on the basics.

If you want to try it out, you can install the following:

Add Text to Photo

Return to Workflow (action extension)

Have fun and make lots of hilarious pictures!


  1. I reached out to Ari for a hand relaunching the app from the action extension since I couldn’t get the default URL to work. What’s currently saved in that extension will likely change as the team updates the URL scheme(s) for the app, so keep that in mind. For the time being, it functions as expected.