« Back to home

Slack as a User Interface

Posted on

My previous experiences with Slack have been spotty at best - I have tried using it as a forum for this site, the company I worked for previously tried using it as team communication tool but apart from organising lunch destinations it didn't gain much traction.

Slack Logo

If you haven't heard of Slack before it is a communication platform oriented around teams of people - they describe their platform as team communication for the 21st century. What it looks like in practice is Internet Relay Chat (IRC) updated for the web. Many of the existing IRC concepts are there - channels, slash commands (including /kick) and the @ symbol to prefix user names.

Join The Chat

Where Slack really shines is large, collaborative teams. The company I am working for now has over 700 separate channels and a range of custom bots that provide access to many of the systems we use internally - CI build servers, deployment systems and issue trackers. As well as getting regular updates from these systems we can also use Slack to trigger new builds or run a set of tests on particular code branch.

Over the past week I've realised there is another excellent use case for Slack - a common user interface to personal services for a single user. There is already a large directory of existing apps and integrations available so you can connect Slack to many existing services you probably already use such as Trello, GitHub and Digg.

On top of that Slack has some very nice client applications - the web interface of course but there are also mobile and desktop applications. This allows you to use a single application to interact with all the services you use from a range of devices.

IFTTT Slack Integration

Adding information from unsupported applications is relatively easy as well - both IFTTT (If This Then That) and Zapier support Slack as an integration (IFTTT only allows you to send messages into Slack, Zapier allows you to trigger events from Slack as well). Integrating your own systems is relatively easy as well - Slack has a very powerful API which is relatively simple to use. Tools like Api.ai make it easy to set up your own bot and adding custom slash commands is as simple as implementing a webhook.

One downside is that a free account on Slack has a limit on how many integrations you can have - if you want more than 10 you have to subscribe at $US 8/mo per user ($US 6.67/mo if you pay yearly). For a single user this isn't that onerous (and you get $US 50 credit when you create your team so the first few months will be free anyway).

For the moment I'm keeping it fairly simple and staying below the 10 extension limit - I can manage my Trello tasks from Slack, send curated RSS feeds into a #news channel and get various events (like comments on this blog) as well. I have also been playing with PingPad - a Wiki system integrated into Slack that can be managed through a web interface as well as through Slack.

Slack Android UI

So far this has been working well - I can quickly add notes, open and close tasks and see interesting news from a single application. Being able to do all of this from a single app on my phone or tablet has been a lot easier than juggling between multiple applications.

Eventually I plan to build a simple Slack to MQTT gateway so messages on Slack get pushed to my MQTT server and can be responded to by any service I have running on my home network. In the reverse I can map part of the MQTT topic tree to Slack channels so a service can simply publish a message to the appropriate endpoint and it will automatically appear in Slack.

If you are looking for an easy way to interface to your home automation network from outside your home network I recommend looking at Slack as a means to do it.