Restoring Save As

S meant “Save As” for most Mac users for a long time, but all that changed with Mac OS X Lion, when Apple decided to make it mean “Duplicate” for reasons that have never made any sense to anyone.

Instead of just adding an option to “Duplicate” they took the keyboard shortcut that people knew, and hid “Save As” behind the key.

Since that day, there has been a way to get “Save As” back, if you were willing to go into System Preferences and setup a global keyboard shortcut.

Simply go to System Preferences » Keyboard » Shortcuts and then click on “App Shortcuts” in the left column. Then click the “+” under the column divider.

That will bring up window where you can enter “Save As…” in the “Menu Title” spot.

Click into the spot next to “Keyboard Shortcut” and press S. It should look like this when you are done:

Adding The Shortcut

Note that it used to be important to make sure that you were using a proper ellipses “…” but it now seems possible to just use three periods “…”

When you are done, the System Preferences window should look something like this:

System Preferences

And you can check an app such as TextEdit to see that “Save As…” has been restored to its rightful spot:

Save As menu

If you do want to use “Duplicate”, you’ll see it is right there under “Save As…”

mas & macOS Versions

Apple does not always make it easy to locate and download older versions of Mac OS X / OS X / macOS but if you have purchased them previously (even if the cost was $0) you should be able to get the apps using mas.

You just need the ID number associated with each version of macOS, which is why I have put together this handy list:

10.7 – Mac OS X Lion:

mas install 444303913

10.8 – OS X Mountain Lion:

mas install 537386512

10.9 – OS X Mavericks:

mas install 675248567

10.10 – OS X Yosemite:

mas install 915041082

10.11 – OS X El Capitan:

mas install 1018109117

10.12 – macOS Sierra:

mas install 1127487414

10.13 – macOS High Sierra:

mas install 1246284741

10.14 – macOS Mojave:

mas install 1398502828

You can install mas either via .pkg installer from its GitHub page, or if you use brew, then install it via brew install mas.

Automatic Auto Login

Back in 2011, I wrote an article Terminally Geeky: use automatic login more securely for TUAW (now part of Engadget). In it, I described how you can use the “automatic” login feature of OS X more securely by immediately locking the screen after you are logged in.

I routinely get asked about this, mostly because many of the links and code examples in the previous article are dead (this was before I got into the much better habit of posting code snippets on GitHub). People want to know if I still have the bits of code (nope) and if it still works (yup). So I decided to post an updated version of the article, with code examples on GitHub. Unfortunately I have no way of updating the old article to link to the new article, but at least I’ll be able to point people to this when they ask.

First: Disclaimers

As I said then I will repeat now: yes, it is more secure to not use automatic login at all. If you handle Important Secrets or if your Mac is in some sort of open office setting, you probably should not use this method.

This idea is fundamentally incompatible with FileVault, because you can’t use auto-login and FileVault.

However, if you are an average user who has a Mac securely in your apartment/house where no one is going to get it unless they break in and steal your Mac (which could happen!) and decide that you want to take the risks, please read on.

Understand that you accept all responsibility for whatever happens, and I accept none. If you do not accept those terms, stop reading now.

Locking Your Mac: The New Way

For many years there have been countless people who looked for a quick way to lock their Mac. This was especially common among people who had switched from Windows and would ask: “Windows users can use ‘Windows Key + L’ to lock their computers, how do I do that with my Mac?”

For a long time, the answer was that you couldn’t, at least nowhere near as easily, but the good news is that Macs do have something like that now. Somewhere around the time of High Sierra, macOS added the ability to lock your Mac using the keyboard shortcut Control+Command+Q (⌃⌘Q).

In High Sierra, you can do that with AppleScript:

tell application "System Events" to keystroke "q" using {command down, control down}

I’m not running Mojave, so I am not sure if you can still do that in Mojave, because Mojave is hyper-touchy when it comes to anything related to automation. If you try that, you might get some kind of authentication prompt, or you might get an error telling you that you just aren’t allowed to do that, or it might just quietly fail.

(If someone would like to try this in Mojave and let me know if it works, I’ll gladly post an update.)

You could take that AppleScript into Script Editor.app and save it as an Application called Lock Screen.app (or whatever), move it to your /Applications/ folder and set Lock Screen.app to launch on login.

However, even if that works on Mojave, I wouldn’t recommend that.

One of the long-standing features of macOS is that you can temporarily skip your login items by holding down the Shift key. Soooo… if someone did get access to your Mac, they could disable your auto login auto lock just by holding down the Shift key. Let’s not make things that easy.

You could try using that AppleScript command in launchd with something like this:

/usr/bin/osascript -e "tell application \"System Events\" to keystroke \"q\" using {command down, control down}"

But, again, the only version of macOS that I know that would work is High Sierra. It might work on Mojave, or it might not. (Again, I’m happy to update the article if someone wants to test it and let me know.) It won’t work on older versions of macOS because the feature did not exist then.

The better solution is actually the old way.

Locking Your Mac: The Old Way

For many years (I don’t know how far back, maybe ask Stephen Hackett to check it on his 12” PowerBook G4 if you really need to know), you have been able to tell a Mac to go back to the login screen using this command:

"/System/Library/CoreServices/Menu Extras/user.menu/Contents/Resources/CGSession" -suspend

To be honest, I don’t know exactly why this works. I think it has something to do with Fast User Switching, but I’m not sure. The point is that it works, and it probably works with every Mac you have running (offer not valid for Stephen Hackett and John Moltz). It is reported to work with Mojave , too. (Thanks @jaycarroll!)

Not only that, but I think it’s a better option than Command+Control+Q because ⌃⌘Q does not show you the general login screen, it shows a lock screen specific to your user. That may not matter if you are the only user, but if you have multiple accounts, it might.

Locking Your Mac: the launchd way

To lock your Mac automatically when you log in, you’ll need to tell launchd to run that command.

Here’s the .plist you’ll need:

Save that file to something like ~/Library/LaunchAgents/com.tjluoma.autolock-on-login.plist (the exact name isn’t important, just make sure it ends with .plist or else launchd will ignore it). If the ~/Library/LaunchAgents/ folder doesn’t exist, create it first. (You knew that already, didn’t you?)

Once the file is in place, you can load it with this command in Terminal:

launchctl load ~/Library/LaunchAgents/com.tjluoma.autolock-on-login.plist

Note that as soon as you do that, it will switch to the login screen. That’s good. That’s what we want to happen.

Turn On Automatic Login

To enable auto-login, go to System Preferences.app and then “Users & Groups”.

Once there, click the “lock” icon at the bottom left and enter your password when prompted.

Then choose “Login Options”.

Next to “Automatic login:” choose the appropriate username from the drop down list.

Enter the password for that account when prompted.

Reboot your Mac and watch what happens.

Due and 'autosnooze'

It’s always fun to see your name in the release notes for an app.

So, what is autosnooze and why would you want to use it?

Quoting https://www.dueapp.com/developer.html:

autosnooze (unsigned integer, optional, Due 3.2+)

The interval in minutes at which Due will repeatedly notify the user of this reminder once it becomes due. Valid values are 1, 5, 10, 15, 30 and 60.

Here’s my use-case:

I usually want my “Default Auto-Snooze” time to be 5 minutes, because I find that’s enough time between each reminder that I forget about it, which means I get really annoyed when I see same reminder again.

(That might sound strange if you don’t use Due, but one of the things people love about Due is that it’s a great way to annoy yourself into doing something you need to do.)

However, for one of my Siri Shortcuts, I need to set a reminder which will:

  1. Go off 5 minutes from right now
  2. If not cleared, repeat every 1 minute after that

Why so soon? The Shortcut involves an iPhone app which can remotely start my car (a super-handy feature in the winter when you live in the northern frozen tundra area of the United States). However, the car will shut itself off if left running for more than 10 minutes, which is reasonable because there’s really no need to let the car warm up any longer than that. It’s possible to trigger the remote-start a second time, but that seems wasteful. I don’t want to be wasteful, but am easily distracted, so I want to use Due to remind me to go to my car after about 5 minutes. Less than 5 minutes is not useful because the car will not have warmed up enough. If I don’t actually leave after 5 minutes, waiting another 5 minutes for the next reminder is pointless because by that time the car may have shut itself off again. Clearly, this is the perfect case for a 1-minute auto-snooze.

Here’s the URL that I am using to launch Due:

due://x-callback-url/add?title=Car%20Is%20Running&autosnooze=1&minslater=5&x-source=Shortcuts&x-success=shortcuts://x-callback-url/returnAction

That will launch Due with a new “Car Is Running” reminder all set to go off in 5 minutes, followed by 1 minute reminders until dismissed. All I have to do is tap “OK”.

(Aside: I’d love to be able to create the reminder in Due without requiring any interaction on my part, but I don’t think that’s possible (yet?). Regardless, this is now much easier than having to tap the “Snooze” button, then tap 1, and then tap “OK”. 1 tap instead of 3 taps is a clear win.)

Other Uses

  • I can also see this being useful for setting a reminder for the dryer. I hate ironing, so I always want to get my dress shirts out of the dryer before it stops. I can set a Due reminder for 45 minutes after the dryer started, and then remind to every minute to get my shirts before the dryer shuts off and the wrinkles set in. 😫

  • This also means that you can create several Shortcuts which prompt you for the “title” of the reminder, and then either automatically select how long of an auto-snooze interval you want to use, or have Shortcuts prompt you for that, too.

Review of the Luna Display

Last Updated: January 25, 2019

Like anyone who listens to Mac tech podcasts, I’ve heard about the Luna Display many times, but the only people I’ve heard talk about it are people who are reading ad-copy. I looked around, but did not find many independent reviews, so I thought it might be helpful for others to hear from someone who might have a different perspective to bring, especially since it doesn’t have to fit in a two-minute ad spot.

Let me be clear: that is not to say that I don’t trust the people who read the ads. If I didn’t have faith in their integrity, I wouldn’t be listening to their podcasts. I do not think any of the podcasters that I listen to would say anything untrue or that they didn’t believe. But even the best ad-spots have a major restriction: there is a limited amount of time available, so the ads have to focus on a few important-but-basic points about functionality.

Here’s my “Executive Summary” review: using the Luna Display with my 12.9" iPad Pro feels almost as if I am using macOS as a native iOS app. The speed and responsiveness are great, and it’s straightforward to use. However, there are a few important things to be aware of, especially if you are using a smaller iPad, or if you are not using the iPad as a second display for your Mac.

How it was meant to be used vs. how I’m using it

It’s important to remember that the “sales pitch” for the Luna Display is “Turn your iPad into a second display for your Mac.” That’s the primary way that the Luna Display was intended to be used.

I’m not using it that way. I’m using the Luna Display to connect via Wi-Fi to my “headless” Mac mini (a Late 2012 model running at 2.3 GHz with a Core i7 processor and 16 GB of RAM) which is plugged into an Eero on the other side of the house. More specifically, the mini is downstairs, and about three rooms away from where I’m usually seated when using the iPad. There is another Eero in the room I am in, meaning that there is a decent Wi-Fi connect between the two of them, even though they aren’t in the same room.

Once connected, the Luna Display is super-fast. It feels much faster than using VNC over the same Wi-Fi connection. I can type as quickly as I want to, and the display usually has no trouble keeping up. There is occasionally some “pixelating” if I am watching a full-screen iTerm window with many lines of text scrolling past at a fairly quick pace, but it almost always smooths out quickly when the scrolling stops (I’ve seen much worse over VNC). If this is how the Luna Display performs when connected to a 6-year-old Mac mini over Wi-Fi, I can imagine that it’s even better if you are using a newer/faster Mac, especially if you are sitting right next to your Mac and using it. In short, no complaints about the performance.

(Although it is intended to be used wirelessly, you can use Luna Display with a USB connection which is a nice fall-back option to have if you need it. I would expect performance to be stellar, but I haven’t had the need or opportunity to try it out myself.)

Luna Display is not VNC

Before the Luna Display arrived, I assumed that the Luna Display would be primarily an enhancement to VNC. I thought of the Luna Display as a kind of “hardware display accelerator” which would work over VNC. I’m not sure why I thought that, but it was an incorrect assumption.

To get Luna Display working, you need four things:

  1. The hardware “dongle” connected to your Mac, either via USB-C or Mini DisplayPort;
  2. Luna Display software running on your Mac;
  3. Luna Display software running on your iPad;
  4. Both the Mac and the iPad have to be on the same (preferably 5GHz) Wi-Fi network

(n.b. The Luna Display software for Mac and iPad is available at no additional charge.)

The software has to be running on your Mac.

Since the Luna Display is not VNC, it requires its special “helper” app to be running on your Mac, which doesn’t seem like a problem, until you reboot. Then you can’t connect use Luna Display to connect to your Mac because the software isn’t running.

If you are using the Luna Display as a second display, as you can log in using your primary display, and launch the Luna Display app.

However, if you are using the Luna Display as a primary display, you are out of luck after a reboot. You will need another way (such as VNC) to log in to your Mac and launch the Luna Display app. Then you can switch to the Luna Display app on your iPad.

My Mac mini is a “server” which I do not reboot it very often, so this is not a huge issue, but it is something to be aware of. If your Mac is in a secure location, you could use auto-login, which is something I would only recommend if you understand the risks. Towards that end, I do have a suggestion of how to use auto login more securely.

Speaking of the Mac app, I have a few thoughts (read: “complaints”) about it.

My main complaint is that the app runs in the dock, and has to be left running all the time. This is the epitome of an app that ought to run in the menu bar. Its only purpose is to set preferences, which the user only needs if they are going to change where the iPad is in relation to the primary display. Other than that, the app just needs to be running for the iPad app to connect to it.

For some reason, the app window re-appears from time to time in the background, even when I know I have not interacted with it. Since I don’t need to use the app (I’m not using Luna Display as a second display), I created a Keyboard Maestro macro that automatically hides the app immediately any time it is activated.

Hopefully, the developers will add a “menu bar only” option so I can hide it behind Bartender and forget it exists.

Re-Connection Issues Solved in Version 3.0

Originally, this section of my review described a problem that I had when I tried to reconnect to the Luna Display after a long time away, i.e. overnight, or sometimes even less often than that. I even described a workaround for avoiding the problem. That was the end of December, 2018.

The good news is that at the end of January, 2019, version 3.0 of the Mac software for Luna Display was released. While the app still is not a menu bar application, it does seem to have solved the reconnection problem entirely. So much so that I have removed my previous workaround, and have not noticed any problems reconnecting.

If you were using the workaround, uninstalling it is easy. Simply run these commands in Terminal.app:

launchctl unload ~/Library/LaunchAgents/com.tjluoma.lunadisplay.plist
open -a 'Luna Display'

mv -vn ~/Library/LaunchAgents/com.tjluoma.lunadisplay.plist ~/.Trash/

Note that the first two lines should be executed together: if you are copying/pasting, be sure to get them both, because the launchctl unload command will stop the Luna Display app from running, so you’ll want to use the open -a command to launch it again.

The mv command simply puts the .plist file in the trash, since it is no longer needed.

I am very pleased with this update, as it removes the only real problem I had running the Luna Display.

Now… about moving the app into the menu bar… maybe a goal for the 4.0 update?

Size Matters

Running the Luna Display with my 12.9" iPad Pro is great. Running the Luna Display with my older 9.7" iPad Pro was not. The speed was still fine, but using a Mac with that screen size/resolution felt very cramped.

Again, this is because I’m using it as a primary display, not a secondary one. If you are using a 9.7" iPad Pro as a second display, I’m guessing it would work just fine, but as a solo screen, I do not think the 9.7" screen gives you enough room to work comfortably.

When I was using VNC, I could get around this by adjusting the screen resolution of the Mac, as long as I was willing to put up with some “letter-boxing.” Luna Display doesn’t do that. Instead, you are stuck with a 4:3 display with not a lot of space. (Well, the other option was to tell the Mac mini to run at 2x, which just made everything look ridiculously small, so that wasn’t practical.)

I don’t have a 10.5" iPad to try, but it’s my opinion that anything smaller than 12.9" would be very cramped to use as a primary display. If I only had the 9.7" iPad, I think I would have just stuck with VNC and sent the Luna Display back. That’s not the fault of the Luna Display, but it is something to be aware of if your use-case is the same as mine but you have a smaller iPad.

Odds and Sods

There are a couple other minor things that I’ve noticed.

First: There’s no way to share your clipboard between the iPad and the Mac, which is something that I do quite frequently with VNC, but Luna Display tech support confirmed there is no way to do this. (I work around this by copying/pasting via a Bear note, which syncs very quickly, but it’s not ideal.)

Secondly, I’ve become accustomed to using a “two-finger tap” to send a “right click” when using VNC to connect to a remote Mac. This doesn’t work with the Luna Display, although their support team suggested it could be added in the future. In the meantime, you have to hold down the Control key and tap, which is completely logical (after all, “right click” on the Mac was originally “control-click”) but I still find myself using the two-finger tap all the time.

Luna Display vs Duet Display

I used to use Duet Display with my MacBook Pro, and it worked very well. However, at that time, Duet was using a wired connection between the Mac and the iPad. That limitation never bothered me, because I wanted my iPad nearby anyway.

However, Duet has since changed, and it now uses AirPlay. As you may know, AirPlay does not have a good reputation for reliability or performance. I think that Duet was essentially forced into that decision due to some changes in macOS, but it’s a compromise.

Duet costs $10 for the iOS app, but the Mac & Windows companion apps are free. Duet has also added two subscription services for some of their more advanced features, including wireless support. Duet “Air” is $20/year, or $25/year to turn it into a “professional drawing tablet.” The Luna Display is a higher initial cost ($80), but it’s a one-time fee. You can try it for two weeks and see if it works, and if it doesn’t, send it back. Duet will cost you $10 to try, and then you can get a 7-day trial of the advanced features if you want to try them out.

Luna Display has a comparison chart between Luna and Duet which highlights what they see as Luna’s advantages, but even keeping that in mind, I think it is fairly indisputable that AirPlay is neither as fast nor as reliable as what Luna Display offers. Unless you want those “professional drawing tablet” features, I think the Luna Display is the better solution.

Update: Duet Display has apparently moved away from using AirPlay, but only for people running the latest version of Mojave. I am sticking with High Sierra (because reasons), so I can’t test this myself, but if you are thinking about Duet vs Luna, it is something to consider. There is a free 7-day trial of Duet’s “Air/Pro” features, so that may be worth checking out.

A Slightly Off-Topic Mini-Rant about iOS

(To be clear: my complaints in this section are not specific to Luna Display. The same problems exist when connecting to a Mac using VNC. “So why include them?” you might ask. Well, I needed to get them off my proverbial chest.)

When you are connected to a remote Mac via VNC or Luna Display, you can quit remote apps with Command+Q (because the iPad has no equivalent of Command+Q for iOS apps) but you can’t use:

  • Command+H to Hide
  • Command+Tab to switch apps
  • Command+Option+D to show/hide the Dock
  • Command+Space to trigger Spotlight (or Alfred, or LaunchBar)

iOS will intercept those keyboard shortcuts because it assumes they were intended for the iPad.

It would be nice if iOS were smart enough to let VNC apps (and Luna Display) send all keyboard shortcuts to the remote computer (users could exit the iPad app by swiping up from the bottom) but I won’t hold my breath waiting for that to happen.

Yes, of course, there are workarounds. I could change the keyboard shortcuts for switching apps, or showing/hiding the Dock and triggering Spotlight/Alfred/LaunchBar.

I could use Keyboard Maestro to remap “Hide” to Option+H because I can’t do that with the built-in macOS tools, unless I wanted to redefine “Hide {Application Name}” for each application, which is obviously insane and impractical.

But the whole reason that iOS uses these keyboard shortcuts is that they are familiar to Mac users, so it’s annoying to have to use workarounds when connecting to a Mac. It would be much easier to change those keyboard shortcuts on iOS and learn new shortcuts on a new platform, but, oh right, you can’t change keyboard shortcuts on iOS – yet? Ever? Maybe someday, but I’d bet it’s a long time before that feature ever comes to iOS, and I would not be shocked if it never does.

</rant>

Conclusion: Is Luna Display as good as they say on the ads?

Yup. It is. It really is.

If you want to use your iPad as a second display, I can’t imagine anything better.

If you are using Luna Display as a primary display, I still think it’s great, especially now that the re-connection issue has been solved.

In addition to being impressed with the Luna Display itself, I contacted Luna Display’s customer support several times with questions or feedback and found them to be very responsive. I consider customer service/support to be an essential feature too.

They do offer a 14-day return period, which is plenty of time to test it out and see if it works for you.

If you decide to order one, remember to use one of those promo codes and support your favorite podcast!

Feedback and Sharing

I posted a link to this article over at talk.macpowerusers.com so you can consider that the “Comments” section for this post, or you can hit me up on Twitter or here on micro.blog.

If you want to share this article, the short link is http://luo.ma/LunaDisplay which redirects to this page.

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