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.