Siri Shorcuts Stupidity

About a week ago, Gabe over at MacDrifter wrote about The Toxic Fragility of Siri Shortcuts wherein he discussed how his custom Siri shortcut went from working to not working out of nowhere, seemingly on a mere whim of Siri.

One day he could use his trigger phrase to have his custom Siri Shortcut run, and the next day, it decided to just give him a useless reply instead.

(You should go read his article because it’s important to understand how frustrating that was.)

I read his article and shook my head. “This is so dumb,” I thought, “Why would Apple do that?”

But I have to admit, part of me also thought, “Well, Apple does have this annoying habit of wanting to make Siri ‘cute’ so I guess it’s no big surprise that they decided to give a stupid response to ‘I’m awake’ instead of running Gabe’s shortcut.”

That doesn’t make it right, of course, just not-too-surprising.

Today, the same thing happened to me with an even worse example.

(And I don’t think that I feel it’s worse just because it happened to me. Although you might disagree. I guess we’ll find out soon enough.)

“Hey Siri, start my car”

One of the first shortcuts that I made was a very simple one. It launches Due.app to set a 5 minute timer, and then launches the myChevrolet app. Using that Shorcut, I can tap a few buttons to remotely start my car, and then have an alarm remind me in a few minutes that my car is probably warmed up by now.

(Yes, I’ll stipulate that I’m a very special boy with a very fancy car. Well, actually it’s a 2014 Chevy Impala. But, in any case, don’t get distracted by the “Oh you can start your car with your phone?” because it’s really not about that. Nor is it about “Well you shouldn’t let your car run anyway because it’s bad for the environment.”)

Now, mind you, the shortcut doesn’t actually start my car, because the myChevrolet app is nowhere near smart enough to support Siri Shortcuts.

I just chose the phrase “start my car” because it’s fun to say to my iPhone, and it’s memorable.

In actuality, after the app launches, I still have to tap on a button, then tap on another button, then tap a third button to dismiss a legal disclaimer (that they insist on showing me EVERY…SINGLE…TIME…), and then enter a 4-digit PIN or use Face ID to authenticate myself.

Like I said, the point isn’t even really about what the Shortcut does. The point is that it’s a simple 4-step Siri Shortcut that basically does two things: open this app, then open that app. And I can trigger it with a voice command.

Which has worked perfectly every single day.

Until today.

Today, when I invoked the same Siri Shortcut using the same phrase I’ve been using for weeks, it came back with this:

Just to verify that I wasn’t misremembering my voice command, I opened the Shortcuts.app and checked my custom phrase:

So… yeah. Siri just decided that it can’t do this.

Let me list seven ways this is stupid and wrong

  1. If I setup a specific voice phrase for a Siri Shortcut, it ought to do what I ask it to do 100% of the time.

  2. Even if I choose a phrase that Siri thinks is “reserved” for something else, my choice ought to win in just the same way that users on macOS can enter their own keyboard shortcuts and override the system defaults. For example, sometime around Mac OS X Lion, Apple decided that ⌘⇧S should be used for “Duplicate” instead of “Save As…”. But if you make your own system-wide shortcut for “Save As…” and assign it to ⌘⇧S, then the operating system will respect that decision.

  3. There is no reason Siri can’t do what I’m asking it to do. It isn’t misunderstanding me. It’s just refusing to do what I asked.

  4. Unlike Gabe’s example, where Siri just decided to take over his trigger phrase with a stupid “friendly” reply (which is still dumb and wrong), Siri is just ignoring my commands.

  5. Siri also decided to tell me it can’t stop my car. Who said anything about stopping my car?!? No one! So Siri is telling me it can’t do something I never asked it to do.

  6. Siri should not be making any decisions about whether or not to do what I want it to do, any more than macOS should say “You know, I don’t like that keyboard shortcut, so I’m just going to ignore it.”

  7. I realize some of these points are similar to each other, I’m just so annoyed by the sheer stupidity of this, I want to make myself abundantly clear.

Siri already has a bad reputation. Why are you making it worse?

Making changes like the ones that Gabe and I have run into will never make a customer happier. And it seems like these are changes that someone had to specifically decide to change, because one day they worked, and then suddenly they didn’t.

In fact, as Gabe pointed out in his article, this experience undercuts trust in the system, and actually makes customers less likely to use it in the future. Given that Siri already has a terrible reputation, why would you do anything to make using Siri worse?!?!

Unlike a keyboard shortcut, Siri trigger phrases aren’t easy to try again. If I mistype a keyboard shortcut and nothing happens, chances are good my fingers are close to the right keys and I just have to make a slight modification. With a spoken command, I have to wait for Siri to timeout, then invoke it again, and then try to remember what phrase I need to use instead of the phrase that I wanted to use. I can already tell you this is not easy to do, and I only had a few weeks using the old voice command.

Mac users recently voiced their frustration over Google Chrome deciding that it was going to hijack ⌘Q so that it would no longer immediately quit. Now imagine that Apple had done that for Safari, and refused to allow you to disable it. That’s pretty close to what they’re doing with Siri.

This decision is bad, dumb, and wrong, Apple. You should fix it.

Safari Reader Everywhere

In this week’s episode of Back To Work 404: Very Advanced Camping, Dan and Merlin talked about the scourge of the web that is The Newsletter Pop-Up.

We’ve all seen this one… you’re starting to read an article on a web page, and as soon as you scroll, wham! a JavaScript-powered pop-up window takes over the entire screen, asking you to sign up for a newsletter.

It’s literally the worst thing to happen to the web since pop-up ads.

However, there is a “95% solution” available on Mac and iOS: Safari Reader Mode. The key is to enable it by default.

(Obviously this assumes that you are using Safari on the Mac. If you use Chrome, well, I assume there’s an extension that will do this, and the good news is that it is probably not mining bitcoin in the background while you browse.)

Anyway… let’s get this up and running.

How to Enable Reader-Mode Everywhere

This part is easy. In Safari on the Mac, just go to Preferences » Websites » Reader (which is the top item on the left column), and then set the bottom right selector for “When visiting other websites” to “On”. Here’s a handy screenshot:

On iOS, it’s a little harder to explain because it’s a little hidden.

First you have to find a website which has Reader-Mode available. These aren’t hard to find, but if you’re stuck, I picked an example from iMore.

Once the page has loaded, tap-and-hold on the far-left of the address bar where the 4 horizontal lines are shown (see screenshots below).

On the iPhone

On the iPad

Once you have chosen “Use on All Websites” you will find that at least 95% of those annoying pop-ups are never shown to you, because Reader Mode doesn’t show them.

If you find a site that doesn’t look right in Reader Mode, you can tap-and-hold in the same spot to turn it off for that site.

Turning off Reader Mode on the sites where it doesn’t work is a lot less annoying than having to turn it on when needed.

The Last 5% a.k.a “What about sites that don’t support Reader Mode?”

If you find a site that doesn’t support Reader Mode and has one of those awful pop-ups, the best response is Instapaper’s InstaFormattter bookmarklet. You do have to be logged in to your Instapaper account for this to work, but this bookmarklet does not add the article to your Instapaper queue, it just gives it that nice Instapaper-look.

(n.b. If you want to install that in Safari, the easiest way is on the Mac. Click and drag the “InstaFormatter” link to the Favorites Bar. Press ⌘⇧B to make the Favorites Bar appear if it isn’t already visible.)

I have that bookmarklet installed as my first Safari bookmark on the “Favorites Bar” so I can invoke it with ⌘1. You’d be amazed how fast I can hit ⌘1 when I see one of those JavaScript overlays appear.

(You may have to use ⌘⌥1 depending on how Safari is configured. Look under Preferences » Tabs » for “Use ⌘-1 through ⌘-9 to switch tabs”. I prefer that setting un-checked.)

I’m still not convinced that JavaScript isn’t the worst thing to happen to the web, especially now that Flash is pretty much dead.

Download Sierra and High Sierra now that Mojave is out

In an unusual move, Apple has removed Sierra and High Sierra from the “Purchased” tab in the App Store, even if you had “purchased” and downloaded them previously.

Links for OS X Lion, OS X Mountain Lion, OS X Mavericks, OS X Yosemite, and OS X El Capitan all remain in the “Purchased” tab, but Sierra and High Sierra are gone.

Why?

¯\_(ツ)_/¯

Fortunately, it is still possible to download Sierra and High Sierra, if you have a direct link.

You can find these through Apple‘s support site, but they are not always easy to find. For example, some Apple support pages which previously explained how to download High Sierra have been updated to explain how to download Mojave. (As if anyone would need help figuring out how to download Mojave when it is being advertised so heavily in the Mac App Store.)

If you need or want to download Sierra / High Sierra, here are the links you can use:

High Sierra

Official Support Page

Mac App Store link

iTunes/Web Browser

Sierra

Official Support Page

Mac App Store link

iTunes/Web Browser

(The “iTunes/Web Browser” links will just launch the App Store app, so you’re somewhat better off just using the macappstore links, if they work.)

The command-line tool mas

If you use mas you should be able to download Sierra and High Sierra using these commands:

To download Sierra:

	mas install 1127487414

To download High Sierra:

	mas install 1246284741

Note that mas can usually only re-download apps that you have previously “bought” through the Mac App Store, so if you have never “bought” Sierra/High Sierra before, you may need to do that through the App Store app.

Don’t Panic

I wouldn’t panic and say that Apple is going to make it impossible to download Sierra or High Sierra any time soon. After all, links to older versions of the OS are still readily available. Still, it is strange that these two were removed from the “Purchased” tab.

I have downloaded both installers locally, just in case I need them in the future. (I‘m sticking with High Sierra for now anyway, and hoping that Mojave will outgrow its Windows Vista-ness before I find myself needing to upgrade.)

Prevent Automatic Downloads in macOS

Quoting Apple’s own support document: Prevent your Mac from downloading updates in the background

You can set your App Store preferences to “Download newly available updates in the background”. If you’re using OS X El Capitan v10.11.5 or later, these updates include major new macOS versions, like macOS Sierra. Your Mac then notifies you when the updates are ready to install.

This is a not-good decision, Apple.

There is a difference between these two things:

  1. I want to automatically download updates to my computer.

  2. I want to automatically download a 5+ GB new version of the operating system.

And that difference is obvious to just about everyone.

There ought to be a separate option for the latter choice.

Shortcut: Open in Browser

It seemed simple enough, at first.

I was looking at something on Amazon via the Amazon app, and I wanted to view it in Safari, instead of the app.

Seems simple to you, too, right?

Well, it wasn’t. First off, there was no Share item for “Open in Safari” which seemed odd. There was one for iCab but not Safari.

“Ok,” I thought, “I’ll just make a quick shortcut that will take the URL from the Amazon app and open in Safari.”

That’s when things got weird.

Where would you like to go? Where would you like to go?

I figured if I was going to make a shortcut to open the URL in Safari, I might as well make it offer to open in iCab and Chrome, too.

The first thing that I noticed was that the page opened twice in Safari.

It didn’t open at all in iCab.

It didn’t open at all in Chrome.

I added an “Alert” to show me exactly what was being sent to the browsers, and it was the URL from Amazon… twice.

Why twice? I have no idea. If I used the Share link in the Amazon app to send to Drafts, I only got the URL once. But the shortcut was getting it twice.

“Fine,” I thought, “I’ll just delete the second URL from the input.”

Except I couldn’t figure out how to do that. So instead I settled on running a loop (“Repeat with Each” in Shortcuts), and putting an “Exit Shortcut” at the bottom of the block, so it will only process the URL once.

“Genius!” I thought. For about 12 seconds.

After I managed to get the URL to only be sent once… it still didn’t work. I was sending the URL to iCab via x-callback-url, but it was launching, but the URL wasn’t opened (I’m completely willing to admit that might have been my fault for something I was doing wrong, but it seemed to work sometimes, and then stopped).

Safari no longer opened the URL twice… but instead it immediately redirected me back to the Amazon app.

Chrome worked fine.

ARGH.

I searched around for a way to stop Safari from doing that, but the only suggestion was to uninstall the Amazon app.

Not helpful.

Finally, I decided to implement a decidedly-stupid workaround which works: I created a small PHP page which will accept a URL as a query string, and then redirect the browser to that URL. If I send that to Safari, it will open the page as expected.

iCab and 1Password

Something made me remember that I used to be able to send links from Safari to iCab by using a bookmarklet which changed “http:“ to “web:“ and “https:“ to “webs:“. I changed my shortcut (using “Replace Text”) to change those protocols before opening the URLs, and suddenly I could open the page in iCab too.

That made me remember that 1Password also had a way to open URLs in its built-in browser., but I couldn’t remember what it was, and “onepassword:” didn’t seem to work. However, a little Googling led me to a MacStories post from 5½ years ago which reminded me that the protocols I needed were “ophttp:” and “ophttps”. I had a vague memory that 1Password had deprecated support for opening URLs this way, but it still works.

The End Result

Finally, I have a shortcut that can take a URL (from Amazon’s app or anywhere else) and offers to open it in Safari, iCab, Chrome, or 1Password.

You’re welcome to use it too, if you like. You can find it here: Open In Browser (v.1.0).

If I make changes/improvements to it, I’ll post those here and update the link.

Shortcut: Due Schedule Call

I often want to set a reminder to call someone at a specific time.

In the past, what I have done is gone to Due and added a note which would say something like “Call AppleCare” and then set the time/date when I want to be reminded.

(If you haven’t used Due, one of the things everyone loves about it is that it will keep reminding you to do something until you actually do it. You can have the reminders repeat every minute, every 5, 15, 30, etc. It’s the most-reliable way to get yourself to do something at a specific time or close to it.)

The problem with my method has always been that the reminder would do off, and then I’d have to do to the phone app, look up the person I wanted to call, and then select the phone number.

It’s that little bit of friction that doesn’t seem like much, but can make you resistant to actually doing the thing you need to do when the reminder goes off. Also, it’s easy (at least for me) to get distracted after I’ve dismissed the reminder from Due but before I actually make the call.

TIL: Due has a feature to make this easier.

I’m sure this is mentioned in the documentation somewhere, but I stumbled across it by accident.

I set a reminder in Due, but this time I added the phone number of the person I needed to call in the reminder in Due. When I dismissed the reminder in Due, it automatically prompted me to call the number.

Obviously, that’s much better.

Having the number right there means no searching for it, I can just do it. The friction has been removed.

The only problem is that in order to do that, I needed to copy the phone number from my Contacts.app into Due.

Which means that I won’t actually put the phone number into Due very often, even though I know it would make things easier for me later on.

Complication #2: Google Voice

(Note: Even if you don’t use Google Voice, there is an option of this shortcut for you. Keep reading!)

Adding to my resistance is the fact that many of the calls that I make are actually not made with via the iOS Phone.app.

I use Google Voice for all of my calls related to my day-job, and I need/want to use Google Voice for those calls because then the caller-ID will show the phone number that work-related people have for me, instead of my actual iPhone number.

So there’s another piece of friction.

If only there was some way to make this easier…

Cue “Shortcuts”

As most of the people who are reading this probably know, Apple just introduced an app called “Shortcuts” which is basically version 2 of an app which was previously not-by-Apple. Version 1 of the app was called “Workflow”.

I never really used Workflow much. Although Apple had approved it and let it into the App Store, I was certain that Apple would eventually kick it out of the App Store, and then I would be sad if I had built a bunch of things with it.

Well, as it turns out, not only was I wrong, but I was wrong in about as big of a way as possible. Instead of kicking Workflow out of the App Store, Apple bought Workflow, and renamed it “Shortcuts” which is now available for iOS 12.

Now that it is an official Apple app, I decided to start using it. But this was the first time that I had a problem that I really wanted to solve with automation on the iPhone:

“How can I make it easier to schedule calls on my iPhone?”

I was poking around in Shortcuts when I realized that I could send the name and phone number of a contact to Due fairly easily.

All I had to do was choose the person from my Contacts.app, and the shortcut could automatically copy the name and phone number, and sent both pieces of information to Due. Then all I had to do was pick a date/time for the reminder.

But what about Google Voice? Unfortunately the official Google Voice app doesn’t support Shortcuts (yet?), but there is another iPhone app for Google Voice called GV Connect which has an URL scheme, meaning that we can use it with Shortcuts.

“Due Schedule Call”

Putting all of this together, I made my first real Shortcut, which has 3 (or possibly 4) steps.

  1. Select a contact from my contacts list
  2. If the contact has more than one phone number, it will prompt you to choose which one to use.
  3. Next it will ask if you want to use Google Voice or the regular Phone app
  4. Finally it will send that information to Due, so you can set a time/date for the reminder.

Step #2 was the last piece that I figured out. If I didn’t have some way to have the user choose a phone number, I was either left with the option of sending all of the phone numbers to Due (which was a terrible idea) or just automatically picking the first one (which wasn’t a great idea, although better than the previous alternative).

After that, the real magic happens between steps 3 and 4, and it happens completely in the background.

If I choose the Phone.app, the shortcut just sends the name and number to Due. But, if I choose Google Voice, the shortcut reformats the phone number into the proper syntax for GV Connect, and includes that in the reminder text that is sent to Due.

By front-loading all of the decisions into the first part of the process (making the reminder), I have made it easier for Future-Me to actually make the phone call. It’s easier than it has ever been.

When I “check off” the reminder, Due will let me trigger the call with almost zero effort.

For the first time ever it is just as easy for me to use Google Voice as it is to use the built-in Phone app!1

See For Yourself

I made a short (about 1 minute) screencast of this shortcut in action.

In it, I setup 2 reminders:

  1. I selected a contact named “Apple” (which has multiple phone numbers) and scheduled a call to be made with the Phone app.

  2. I selected a contact named “AppleCare” (which only has 1 phone number) and scheduled a call to be made via GV Connect.

You can see it here:

(Be sure to make it full-screen so you can see things more easily.)

You can get the shortcut here.

Thanks

Thanks to Andreas Amann, GV Connect’s developer, who helped improve this shortcut.

Thanks also to Raymond Velasquez who helped me solve another part of the puzzle via a post on <talk.automators.fm>, which is a great place to get automation help for iOS or Mac.

As a final side note: if you aren’t listening to Automators with Rose Orchard and David Sparks, you really should be.

Update 2018-10-13

It occurs to me that this shortcut might be useful to more people if I offered a variant without the Google Voice portion. After all, if you don’t use Google Voice, there’s no sense in having to choose the phone app each time this shortcut runs.

So I made a version without Google Voice. You can find it here:

Due Schedule Call (without Google Voice)


  1. In fact, it’s actually one less tap to use Google Voice rather than the regular phone app, because when you use the Phone app, Due offers to let you call or message the phone number, whereas with GV Connect I can specify that I want to make a call, not send an SMS. 

He really needs to learn to relax. #shasta

Hello (micro.blog) World!

If you are looking for older posts, they may be available at <tjluoma.tumblr.com>.

I got fed up with Tumblr’s “quirks” and decided to try something new.

Copyright 2018 Timothy J. Luoma