Most people automate parts of their job because they find it boring. I did it because I have four kids.
One of the best ways I’ve found to have a good work-life balance is to start the day early – really early. Automattic has no set hours or expectation that you’re online from 9 to 5. So when I first started here, I decided to start my day at 6 am, before the kids got up. That way, I could finish work early and be with them when they got home from school.
But getting up at 6 am has some downsides, and I needed something besides large amounts of caffeine to get my day started. That something was automation!
I recently decided to update and revamp my workflow automation, and document it here in case others find it useful.
Please share your own automation hacks in the comments! I’d love to hear what you are doing to make your work easier.
Part I: Alfred
Alfred for Mac is a great tool to help automate your day. It lets you use hotkeys, keywords, and text expansion to improve your productivity.
But where it really shines is in terms of automation. Alfred Powerpack (a paid upgrade) includes Workflows. Workflows let you automate repetitive tasks, and link them together in unique ways.
At Automattic, a number of teams use shared Alfred workflows to automate their tasks.
My most-used workflow is a personal one – my start-of-day workflow. With a single input, I can set up my computer when I start in the morning.
This workflow opens all the tabs I need in my browser, and opens all my apps. At the same time, the workflow runs some commands including one that updates Homebrew, a package manager for macOS, one that updates node, npm and all my node gems, and one that updates Oh My Zsh, a framework for managing the Z shell (zsh) configuration. At the end it sends me a “hello!” notification on my computer, then a second notification in Slack via an incoming webhook. All of this happens while I make coffee. Priorities!
How does this work?
I use an external trigger to get this workflow started (more on that later), but this could also be a keyboard shortcut or an Alfred prompt.
This opens up all the tabs I need on a daily basis (my mail, my team’s shared P2 workspace, etc.) in the browser. I also get my project management tools in the browser. This is currently a GitHub project board, but it could just as easily be Asana, Jira or Trello.
I also get a set of apps to open. I change these up fairly often, but for right now I’ve added Slack, iTerm2, Things, Craft, Bear, Spotify and my Apple calendar to the workflow. Adding apps is a drag-and-drop operation, so it’s easy to change which apps are opened.
I usually start this automation from the top floor of my house and then go make coffee, one floor down. So I’ve programmed a webhook to send me a cheerful message on Slack as a direct message. I get a notification on my phone while I’m in the kitchen making coffee.
If you want, you can even use Alfred Remote (paid) and create a button on your phone to start your workflows. If you have a Mac with a touchbar, you can use an app like BetterTouchTool (paid) and create a global touch bar button to do the same thing.
If you want to integrate a Slack notification, you’ll need to do this as a Slack app. You used to be able to create an incoming webhook in Slack, grab the needed url, and put it in the last action inside of a curl payload. There’s a tutorial here. But the Slack app method is a newer way to do something similar.
As the last step in this workflow, I get a notification on my computer. This could include an audio alert sound or even Spotify playlist, but I like peace and quiet, so my notifications are silent.
My end-of-day workflow is the simplest – it just closes every app, no customization required. That means that it also closes every tab in my browser. You could add a System Command to shut down your computer for you as well. I like this workflow because when my work day is over, it’s done! I’m not tempted to check that open pull request one last time.
I have a third workflow that sets things up specifically for development work.
This one starts again with an external trigger. Next, it opens up a number of development tools. In this case, I’m opening up Docker Desktop, IntelliJ IDEA, DataGrip, etc. It also opens up my project management tools, my GitHub repos, a couple of important Looker pages, and a series of internal company tools. This might include something like Hue or TeamCity, depending on what I’m working on. At the end, I get a notification – but again, this could include sound or music.
Part II: Apple Shortcuts
I’m a huge fan of automation, so I added even more using the Apple Shortcuts app. This tool comes with some built-in shortcuts. Third-party apps (like Evernote and Bear App) also have some pre-built shortcuts that you can add.
I use the shortcuts that Bear app provides and I organized a couple to use with Craft app. I’ve also built/customized my own. I use these shortcuts to do things like automate my standups, and meeting notes.
The advantage of using Apple shortcuts is that whatever shortcuts you create can be triggered using AppleScript or a keyboard shortcut.
If you want to make this even easier, you can use something like Shortery. Shortery makes building shortcuts a little easier, but it also lets you execute them automatically, instead of manually.
Part III: Stream Deck
As a third step, I bought myself the Elgato Stream Deck.
This is basically a multi-function keyboard. It’s a great tool for folks doing podcasts and Twitch streaming, two things I do not do. It’s also great for automation.
The goldilocks of Stream Decks – not too large, not too small, but just the right size.
I have the Stream Deck MK.2 which has 15 keys, but you can add profiles, pages, and folders to extend this out into 132 possible different functions.
There is also a Stream Deck XL with 32 buttons, a Stream Deck Mini with just six buttons, and a Stream Deck+ which has eight buttons, plus a touch bar and some dials. These all look great, but I am very happy with the Stream Deck MK.2. It’s small enough to be unobtrusive, but not so small that I find I’m limited in terms of what I can do with it.
My basic setup includes some general buttons. I’ve used cute icons for these but you can use very serious business-like ones, or make your own. The button icons can also be animated gifs.
I use these buttons to run my Alfred workflows and my Apple Shortcuts. That means that instead of using a keyboard shortcut to trigger my start-of-day workflow I can just push a button.
Even without Alfred, the Stream Deck allows you to chain multiple actions together – but I find Alfred gives you a lot more flexibility.
I’ve integrated a Slack app into my setup that lets me update my Slack status with a button. I can use this if I’m in a meeting, for example, or if there are noisy kids nearby.
I also use Stream Deck profiles that are triggered when you use specific apps.
I have a Stream Deck profile that lets me manage Zoom calls. This lets me do things in Zoom like mute myself, stop my video, or exit the call in a single click. I’ve also added the “In a meeting” Slack status update here. And finally, I have links to the Google Docs meeting agendas I use most often.
If you prefer a different tool for conferencing this is also an option. I prefer Around, but it’s a bit more limited in what is possible to automate. Still, anything that has a URL, or a key combo, or that can be put in a Shortcut, can be added to the Stream Deck.
I’m currently working on a third profile that lets me use the Stream Deck with GitHub to monitor things like GitHub notifications and pull requests. But let’s call that a work in progress!
The Stream Deck lets you add additional automations including home automation, various sound and image editing automations, and gaming automation. You can also add a pedal or the Stream Deck mobile app and keep your hands even more free.
I was able to do what I wanted using just the tools mentioned here. But if you need more power, you can use Shortery or Keyboard Maestro to add capabilities that Shortcuts and Alfred might not be able to. Raycast is another option, similar to Alfred, that turns complex operations into keyboard shortcuts. Or, hey, you can also just program something.
Different teams at Automattic employ Raycast, Alfred, and custom Python programming to build shared automation tools that anyone at the company can use.
I’m curious about any of the automation you might be using! Are you using any of these same tools? Let me know in the comments.
- Shortcuts for Mac: 27 of Our Favorite Third-Party Integrations
- Getting Started with Shortcuts for Mac and the Stream Deck
- Using Streamdeck with Zoom
- Elgato Stream Deck review: A Mac accessory you didn’t realize you needed
- Using iOS Shortcuts with Craft App
- Automate your notes with Shortcuts and Bear
- Using Apple Shortcuts with Things app