Creating Project Templates for Things 3 with Shortcuts and Keyboard Maestro

If there’s one thing I’ve missed since moving from OmniFocus to Things, it’s the ability to use project templates. It’s hard to beat Omnifocus’s support for the TaskPaper format. Project templates can be created in a flash and added by simple text expansion tools.

That being said, it’s also hard to beat the design of Things, and for that reason, I set out to learn how to convert my templates.

In migrating to Things, I decided a number of them would be better off just scheduled as repeating projects in Things, which cut my list in half before I even started. Working at a university, most of my work tends to repeat each semester, but the actual dates of semesters tend to fluctuate slightly, so my projects tend to do so as well. I can, however, count on those projects happening roughly around the same weeks each year. With Omnifocus 2, it wasn’t possible to schedule a project to repeat yearly on say the first Monday of November, but it was in Things 3. It’s worth noting that repeats like this were added to Omnifocus 3, so if I were still using it, I’d have moved these templates back into Omnifocus too.

Unlike Omnifocus’s TaskPaper format, templates in Things 3 are possible through a URL scheme. If you’re interested in testing it out, Cultured Code has a really nice Link Builder to help you get started. While this works great for static projects and actions, it doesn’t let me create the variable templates I was trying to create.

Naturally, I turned to the trusty Keyboard Maestro to see if I could pass variables into a Things URL. It turns out Keyboard Maestro’s variable format doesn’t really get along well with Things’ URL scheme though. All those percentage signs make for a confused mess. I even found a post on Keyboard Maestro’s forums asking for Keyboard Maestro to play nicely with Things URLs, which I nervously bumped 8 months later out of desperation.

After hours of frustration trying to get it to work and searching relentlessly for a solution, I stumbled upon a blog post that used Alfred instead. While I was at least able to get this working, entering the variables was nowhere near as user-friendly as having the dialog boxes that I had been used to while using Keyboard Maestro. That being said, if you’re an Alfred fan, this may be just what you’re looking for!

Things Templates Using Shortcuts

At some point, I conceded that Keyboard Maestro wasn’t going to happen and tried my hand at creating them with Apple Shortcuts. Let me just say Shortcuts handled Things URLs beautifully. Having little to show for all my time dabbling with Shortcuts other than my Spotify playlist shortcut, I was surprised, to say the least.

The basic shortcut is only 5 actions (I’ve used my Book Project to help illustrate.):

  1. Ask for Input (e.g. What the’s title of the book?)
  2. Replace text (This finds spaces in whatever you inputted and replaces them with %20)
  3. Set Variable (In this case, to bookTitle) – I’m going to skip forward onto the remainder of the shortcut here for simplicity’s sake, but it’s safe to say you could keep reusing steps 1-3 to prompt for as many variables as you need. You can use them for any field supported by the URL scheme including (Notes, Tags, Deadlines, etc.) so there’s plenty of room for exploration.
  4.  URL (This is where you’d put your URL you got from Cultured Code’s Link Builder unless you’ve got the URL scheme down to which I’ll say Kudos! This is also where you’ll be replacing the fill-in areas with your variables from earlier. Admittedly this is kind of a pain because the URL is long, and the URL field in Shortcuts is a single line, but copy and paste works quite well if you’re using a keyboard.)
  5. Open URL – You’re done.

I was able to recreate all of my templates in Shortcuts fairly quickly by duplicating and then modifying this shortcut, and I can easily run them from Spotlight by typing in the name of the shortcut.

While I was glad to have my templates back in some form, it was fiddly having to grab my iPhone or iPad to generate a template when I was already on my computer.

Back to trying to get Keyboard Maestro to work…

Things Templates with Keyboard Maestro

Thankfully in the months since I’d bumped that post on the Keyboard Maestro forum, a kind soul by the name of gglick came to my rescue. (Note to self: Pay better attention to forum replies.) I really cannot take any credit for this because he or she really did the leg work to make everything work. Even better, the way it’s set up makes the template super easy to update – even easier than Omnifocus’s TaskPaper format in my opinion.

I’ll give gglick credit by linking to the post if you’re interested in the macro, but in short, the macro is 4 actions:

  1. Prompt the user for input (Note: Unlike with Shortcuts, you can add all the variables you want in this step.)
  2. Set Variable to Text (In this case, Keyboard Maestro is going to be doing most of the link formatting, so you can pretty much write out all your tasks in plain text with the exception of a few bits like the variables and the starting syntax.)
  3. Filter Variable with Percent Encode for URL (This turns all the spaces into %20 like Step 2 of the Shortcut earlier.)
  4. Open URL (Note: the URL you’re opening is actually the Variable you made in Step 2.)

As I did with Omnifocus, I’ve set up a macro palette to display the templates that I can trigger via the same keyboard shortcut (⌘+F4) I used with Omnifocus saving me from having to retrain any muscle memory. All this is is a macro containing the action “Show Macro Group”.

I know I spent countless hours trying to figure this out, so I’m sharing this in hopes it saves someone else time. Happy templating!

Photo by Andrew Neel on Unsplash


Creating Keyboard Shortcuts for Websites with Keyboard Maestro

I’m a huge fan of keyboard shortcuts. If you’ve never taken the time to explore the keyboard shortcuts in your most used apps, I can’t recommend doing so enough. The amount of time you’ll save yourself is more than you’d think.

{Tip: If you’re looking for an easy way to discover keyboard shortcuts in a Mac application, check out CheatSheet. Once it’s installed, just hold ⌘ for a second or two and you’ll get a list of all the keyboard shortcuts in the app you’re using.}

As amazing as keyboard shortcuts are though, many of the things I do on my computer regularly don’t have shortcuts. The Request Tracker (RT) ticketing system I use at work, for example, has some shortcuts, but they don’t actually work once you get inside a ticket where I actually do most of my work.


08_09_17 at 11.53.33AM

RT’s limited selection of keyboard shortcuts


Thankfully, there’s the ever useful Keyboard Maestro. With Keyboard Maestro, you can easily set up a keyboard shortcut (or hotkey) to trigger just about any action on a website.I reply to, comment on, and transfer tickets hundreds of times a day, so having keyboard shortcuts for these tasks is incredibly helpful. Below is an example of my shortcut to reply to a ticket. I could have easily just had the shortcut open up the reply screen, but why stop there? Adding an action to select a Safari field also puts the cursor in the correct place for me, so all I need to do is start typing my reply. It may seem trivial to set this up just to save a few clicks, but when you perform the same action over and over, those clicks add up.

Below is an example of my shortcut to reply to a ticket. I could have easily just had the shortcut open up the reply screen, but why stop there? Adding an action to select a Safari field can also put the cursor in the correct place for me so can immediately start typing the reply.


08_09_17 at 11.54.20AM

My macro for replying to a support ticket via a keyboard shortcut


It may seem trivial to set this up just to save a few clicks, but when you perform the same action over and over, those clicks add up. Plus, once you have one set up, setting up macros for other actions is pretty much the same.

I also set up a few keyboard shortcuts to take me to frequently visited locations in the ticketing system like my own support queue or the ticket creation screen. For example, “^N” opens the page to create a new ticket. These are even simpler to set up because they only require the Click Link action.


08_09_17 at 12.35.09PM

My macro to take me to my ticketing system’s home page


As an added bonus, I created a simple workflow for Alfred, my app launcher of choice so that I can get to these common destinations even when I’m not using Safari. Typing “rt new” into Alfred also brings me to the page to create a new ticket.


08_09_17 at 12.37.56PM.png

Simple Alfred workflow to launch a URL via a keyword


Right now, I’m still breaking my muscle memory of using the mouse, but already I can tell these improvements will save me a considerable amount of time each day. If nothing else, they’ll save my wrists from the impending carpal tunnel.




Tips and Tricks for Staying on Top of Meeting Agendas

Attending meetings is a necessary evil of my job. Thankfully, most of my colleagues see the value of having a running agenda stored somewhere in the cloud. Over the years, I’ve come up with a few best practices of my own that have helped save me time and keep me on top of my game.

1. Use Alfred to quickly launch agendas in the cloud

Agendas are great. Having to remember what every person decided to name the agenda just to find it isn’t. I can never quite remember if they decided to use “Catch Up”, “Running Agenda”, or “Meeting Notes”. I’ve solved the problem by making an Alfred workflow that opens the URL for the agenda by typing “agenda” followed by a descriptive keyword for the meeting that makes sense to me (e.g. agenda managers). The amount of time this saves me is honestly a bit mind-blowing.

2. Use Apple Notes or another notes app to store your own notes for the agenda

My colleages and I tend to use meeting agendas as shared notes and edit them throughout the meeting as things come up. However, I’ve started keeping my own running agenda for each meeting in Apple Notes. It’s nice to be able to look back over my own notes in one place rather than a myriad of Byword files. I’ve named all these something similar (e.g. Agenda Notes: Meeting Name) to avoid another complicated naming scenario as described in the last tip.

3. Add any action or follow up items to Omnifocus ASAP

As soon as I get back to my office, I make sure to review the agenda and my own notes making sure to capture any action items into Omnifocus for further action. This ensures nothing slips through the cracks before the next meeting.

4. Keep an agenda project in Omnifocus

Any time I think of something I need to discuss with someone that’s not immediately pressing, I add it to Omnifocus as a reminder to mention it the next time I see them. I name each item in the same format, “Person’sName: Action”, assign it to the @People context, and add it to my Agendas project (if it’s a work colleague). If I know the next date I plan to meet with that person, I’ll set a defer date as well.

When it comes time to meet with someone, I have one of two options for reviewing items to discuss with him or her: (1) view the @People context which has items involving both work and personal contacts or (2) view the Agendas project which only has work colleagues. Since every item includes the person’s name, I can search by name to narrow down the list to a specific person if need be. If an item up for discussion seems like it will warrant a lengthy discussion, I make sure to add it to the agenda before the meeting as well.

Creating A Minimal Browsing Experiencing in Safari

Years ago, back when theming a Mac was possible, it wasn’t uncommon for me to spend hours tweaking the way the menu bar looked or changing the stock icons of my favorite apps. These days I’m pretty content with the way OS X looks though, which is good since Apple’s greatly reduced the ability to customize it. In any event, I’ve always done my best to hide things that didn’t need to be seen. Case in point, this screenshot from 2008 where I meticulously picked out every icon to match the wallpaper.

I’m no where near as into customizing as I used to be, but I still try to keep things as minimal as possible. Bartender’s a great example of an app that does that by keeping my menu bar tidy. I rely heavily on Bartender’s ability to only show an item in the menu bar if it detects a change. In fact thanks to that feature, on a regular basis, I only have 3 things in my menu bar: Healthier only when I’m at my desk, Fantastical, and the time (and of course the dots are Bartender itself).

03_29_16 at 01.05.01PM

Somehow Safari ended up being the next app to be caught in my minimizing grasps and the results are a Safari interface that’s as minimal as I’ve ever had it. The minimalism isn’t just for looks though. It’s actually changed my behavior, making me more mindful of my browsing and more efficient too.

Hide Unnecessary Extensions and Buttons in the Toolbar

The first thing I did to simplify Safari was to hide any uncessary extensions and buttons on the toolbar. Only the things I truly use regularly need to be in the toolbar for quick access. For me this meant things like the Pinterest button didn’t make the cut. Pinterest unfortunately doesn’t have Share extension support where I’d prefer it to be located, but I’ll share my solution in a second. 1Password, the Share extension, and downloads are the only thing occupying the right side of my toolbar these days.

Remove the Favorites Bar

The next thing I removed was the favorites bar. This was a pretty big step for me. I’ve always had the favorites bar shown in my browsers for as long as I’ve been using a computer. I was worried I’d miss it, and I did for about 20 minutes. After those 20 minutes, my muscle memory had completely switched to using Alfred to launch my most visited sites.

Configure Alfred to Launch Bookmarklets

One thing Alfred couldn’t replicate out of the box was the bookmarklets that lived in my favorites bar. Paprika, my recipe manager of choice, allows you to import recipes from websites, but it does so using a bookmarklet rather than an extension. (Maybe one day that will change.) Without access to my favorites bar, saving a recipe became a lot more complicated than a single click. Thankfully, I found a wonderful Alfred workflow that let’s you trigger a bookmarklet with a keyword. I used “paprika” as the keyword to launch Paprika’s bookmarklet purely so I didn’t need to remember something else. Now when I’m on a site, I just need to launch Alfred and start typing paprika to get the bookmarklet.

timed-03_29_16 at 01.20.49PM

With the bookmarklet solution figured out for Paprika, I used the same workflow to make one for Pinterest. Remember I removed the button from the toolbar, so I needed a way to pin things. Pinterest’s bookmarklet, available originally for the iPhone before it got it’s own dedicated share extension, is available here.

New Windows Open Blank

Rather than launch a particular page or display my favorites, I opted to have new windows launch with a blank page. Minimal yes, but it has greatly reduced the mindless visiting of certain sites that I found myself opening purely because of habit. So here you have it folks, my Safari experience.

03_29_16 at 01.40.57PM

The Mindful Browsing Extension

03_29_16 at 01.28.58PM

My last Safari tweak is actually the addition of an extension called Mindful Browsing. If I find myself visiting a distracting site, I can click a button on the toolbar to block the site. Next time I visit it, I’ll be met with a timer (set to a time of your choosing) and a message asking me to reconsider my decision. Another handy addition is the inclusion of when you last visited the site, which serves as a great reminder for how often you actually visit distracting sites.