March 12th, 2014 at 10:42 pm by Dr. Drang
I’ve never been as unhappy with Apple Maps as everyone else has been, but two things have been bothering me recently: the lack of flexibility in choosing a route and Siri’s intermittent failure to announce the turn-by-turn directions.
I think we’re all used to how Google Maps gives us the opportunity to click on the purple route line and drag it around to adjust the directions. This is especially nice for a route that’s mostly right but needs a little fine tuning. I used to use this feature all the time in the pre-iPhone days when I printed out directions to take with me in the car.
Now I use Apple Maps so I can have Siri give me the turn-by-turn directions over the car’s stereo system. Unfortunately, Maps doesn’t let me fine tune the directions. I usually get a choice of three routes, but if none of them are exactly right, there’s nothing I can do to fix them.
Today I needed to drive to a small town near Indianapolis. I didn’t need directions on how to get to the Indianapolis area, but I did need help getting to the exact address once I was nearby. The easiest way to handle this was to just have Maps get the entire route and have it on for whole trip. Unfortunately, Maps was kind of stupid about navigating the Chicago area interstates.
Maps’ first choice (the darker blue line) was to send me on I-294, a road with a lot more traffic than its second choice—and my first choice—a combination of I-355 and I-80 (the lighter blue-gray line). But Maps didn’t get that route right, either, inexplicably turning off I-80 at I-57 and sending me down to Kankakee, where I was supposed to start on a variety of surface roads. The 4 hour, 13 minute estimate for this route was a half-hour longer than the other one. Who in their right mind would go this way when a few more miles east on I-80 connects you back into the fast route into Indiana and down I-65?
But the real problem is not Maps’ odd route choices—Google Maps makes plenty of those, too—it’s Maps’ refusal to give the user a chance to make corrections.
(I do give Maps and Siri credit for accepting my decisions to disobey directions while en route. Unlike other GPS systems I’ve used, Siri never says “recalculating” in an annoyed tone of voice. She simply adjusts to the new reality and gives new directions based on where the car is. When I left the office today and started driving down I-355, Siri’s first reaction was to send me back toward I-294, but after I disobeyed a couple of her directions to exit, she switched to the course I wanted. This uncomplaining acceptance is something Apple got exactly right.)
The second problem—that of Siri being silent when she should be giving me directions—is far more frustrating, mainly because I can’t figure out exactly what set of conditions is causing it. It usually happens when I’ve chosen a route from Maps on my computer and have shared it to my phone. I get in the car, wait for the Bluetooth connection, and tell Maps to start giving me directions. It does—the screen updates with my position and displays the instructions—but Siri keeps mum. These aren’t the only conditions under which Siri refuses to talk, nor does she always stay silent when I send directions to my phone this way.
I know the Bluetooth connection is active because I can listen to music or a podcast over the car’s speakers. I know Maps is working because I can see the directions on the screen. But in a scenario familiar to husbands everywhere, Siri is giving me the silent treatment, and I don’t know why.
One set of circumstances that always seems to work is when I ask Siri for directions to an address in my Contacts list. As long as she can understand whose address I’m asking for, she starts up Maps and calls out the directions. I’m certainly not going to add every hotel I stay at to Contacts, but I have thought about putting my destinations into generic Contacts entries (like “Hotel” and “Meeting Site”) and changing them prior to each trip. This isn’t as burdensome as it might seem; I always have these addresses somewhere in my phone, it’s just a matter of putting them into Contacts instead of a text note.
I’m going to give this a try on my next trip and see if there’s an improvement. Even if it’s a little more work, it’ll be worth it to avoid the cold shoulder.
March 11th, 2014 at 11:55 pm by Dr. Drang
Although I don’t listen every show, I always check out what Greg Kot and Jim DeRogatis are doing on the Sound Opinions podcast because they produce gems several times a year. Last week’s show had a fun interview with Cynthia Robinson and Jerry Martini of Sly & the Family Stone,1 and this week’s has a wonderful interview with Allen Toussaint in which he tells stories of his long career and sings and plays.
Even if you don’t know his name, you definitely know his music, especially the covers.
I think the Yardbirds did the first cover of this one, but I’m partial to Warren Zevon’s.
Somehow, when Devo lip syncs, you don’t mind.
The Who did “Fortune Teller,” but I prefer the faster Stones version
A classic song of the 60s, and possibly the greatest album cover ever.
Until I heard the interview, I didn’t know Toussaint wrote “Java”—I didn’t even know it was a song. I thought of it more as a natural phenomenon, a sound created when the Earth coalesced.
Toussaint’s didn’t write either of these last two songs, but he did produce them, and I couldn’t stop myself from including them here. They’re so 70s. First, Dr. John.
And finally, the even more sedately dressed LaBelle.
Gitchi gitchi ya ya da da.
You know: Cynthia and Jerry got a message that says “All the squares go home!” ↩
March 10th, 2014 at 10:07 pm by Dr. Drang
Last night I had an idea for improving my
snapflickr screen capture script. Although, as its name implies,
snapflickr was written to upload screen snapshots to my Flickr account, I often use it to create local files that I edit in Acorn before uploading. My bright idea was to have
snapflickr put the image on the clipboard so I didn’t have to dig around in the file system to find the just-created image file. In the process of adding this feature, I found a very useful little command line utility that does for images what
pbcopy does for text.
Acorn looks at the clipboard when you selectand populates the size fields with the properties of the image that’s there.
You can instantly create a new file with the contents of the clipboard by either clicking thebutton or typing ⌘V. Either way, if I need to edit a screenshot before uploading it to Flickr, it’s much more convenient to get the image into Acorn this way than to open it from my Screenshots folder.
The problem, though, is getting the image onto the clipboard from within
snapflickr. My searches for a supported Python library that works with the Mac clipboard came up empty.1 And while
pbcopy can work with PostScript images (a throwback to its NeXT roots, I assume), it can’t work with the PNGs I like to generate from screenshots.
More Googling led me to this question on Stack Overflow,2 which led me to Alec Jacobson’s lovely little
impbcopy utility. Alec provides the source code for a short program that takes an image as the first argument and pops it into the clipboard:
It can also accept standard input by giving it the hyphen (
cat image.png | impbcopy -
You’ll need Xcode and the command line developer tools installed to compile
which gcc returns a useful path, you’ll probably have no trouble compiling. Just follow the instruction on Alec’s site.
Once I had
impbcopy installed, adding clipboard support to
snapflickr was as easy as pie. Just a few lines with
subprocess. More important, I now have a tool I can use in other image processing scripts.
Yes, there’s PyObjC, but I’m leery of spending my time learning a library that was all the rage several years ago. And if I’m going to learn Cocoa, I’d rather do it in Objective C itself instead of this underscore-laden hermaphrodite. ↩
Virtually every programming question on Google leads to Stack Overflow. ↩
March 9th, 2014 at 11:00 pm by Dr. Drang
It’s funny how you sometimes have to relearn the lesson you thought you learned years ago. When I first started using TextExpander, I was a snippet miser, but eventually I learned to loosen up and create snippets that might be needed for only a single day. Despite seeing how useful it is to make these temporary, throwaway snippets, when I started using Keyboard Maestro, I was a macro miser. It’s only recently that I’ve relearned the TextExpander lesson.
In the early days of my TextExpander use, I didn’t make nearly as many snippets as I should have. There are, I reasoned, a limited number of good, short abbreviations, and I should save them for snippets that I was likely to use for a long time. So I didn’t, for example, create snippets that I’d use only for a single report. But that was foolish. If I have to repeatedly type a longish product name in a report, it’s worth making a snippet even if I’ll never type that product name again. The time it saves me is less important than the frustration. If I have to type the name myself six times, I will undoubtedly mistype it at least twice. Maybe I’ll get the capitalization wrong, maybe I’ll screw up where the hyphens are, maybe I’ll mistakenly type the name of a similarly named product—whatever the possible errors, I’ll be sure to make a couple of them.
This is the less-discussed, but no less important, advantage of automation. The automated solution delivers the same result every time. It’s mind doesn’t wander, its fingers don’t reach for the wrong spot. It’s consistent.
And it’s not like I have to keep these temporary snippets in my TextExpander library forever. When the project is over and the report is written, I can delete my snippet for Buck-U-Uppo, freeing up the
;buu abbreviation for something else.
So after learning this lesson for TextExpander, you’d think I’d avoid making the same mistake with Keyboard Maestro. No. But I am relearning. This past week I had to create a bunch of CSV text files from certain rows and columns in a few spreadsheets of data sent to me by a colleague. The procedure was this:
- In Numbers, select the cells needed.
- Switch to BBEdit.
- Open a new document.
- Save under an appropriate file name.
- Switch back to Numbers.
Most of these steps can be done with keyboard shortcuts, so it’s not especially time-consuming, but after the second time I did it, I realized I’d never be able to create a few dozen files this way without getting the sequence wrong or stumbling in some other way. So I made this Keyboard Maestro macro:
It covers Steps 2 through half of 6. It brings up the file save sheet, but leaves it to me to fill in the name of the new file. I had hoped to use one of Keyboard Maestro’s pause commands to allow the macro to pick up after I’d entered the new file name and finish Step 7, but after my first couple of attempts failed I decided to leave that step unautomated and get on with it. The creation of the CSV files went smoothly.
I put the “Temp” at the end of the macro’s name to remind me to delete it when this project is over. I should know by the end of this week whether I’ll need to use it again.
I’m not yet a Hazel user, but I have a feeling that’ll change sometime this year. I’m hoping I recognize the value of temporary rules right away, but I won’t be terribly surprised if I don’t.
Sharp BBEdit users will note that Steps 4 and 5 can be combined in a single ↩menu selection. But this menu item doesn’t have a keyboard shortcut, so the ⌘N ⌘V sequence is faster.