Archive for September 25, 2017

Monday, September 25, 2017

OmniFocus and Siri on iOS 11

Ryan Christoffel:

In iOS 11, Siri can fulfill all kinds of OmniFocus-related requests. Many of these will be similar commands to what you might use for Reminders, only with ‘in OmniFocus’ added to the end. For example, “Add ‘Write the history essay’ to my School list in OmniFocus.” There are three main areas of functionality:

  • Task creation: This includes the ability to add tasks to certain projects and create time or location-based reminders. You can even create a new project entirely.
  • Task completion: Simply put, you can mark items as complete with your voice.
  • Searching: This allows Siri to display a visual representation of different lists of tasks, such as ones due today, ones created today, or all tasks belonging to a certain project.

I went to try these and found that the new Siri features didn’t work because I was using OmniFocus 2.19.1, the last version supported by the “legacy support edition.” The current version is 2.21.1, but to get it I needed to download the “universal” version of app. Then I went to Preferences > Synchronization > Show Sync Details… > Unregister to prevent the old version of the app from bogging down syncing.

My primary concern is being able to dictate longish notes and have them show up as new tasks in OmniFocus. Previously, the best way I found to do this was to say “Make a reminder.” Then Siri would prompt me for the text, and I could dictate a complete sentence. This was much better than the “Add ___ to my reminder’s list” formulation. The problem with both of these, though, is that Siri would look for anything in the text that sounded like a day or a time, remove those words, and then try to stick them into the reminder’s due date. So it would mangle what I said and then assign an unwanted date.

Now, I can say “Add a task in OmniFocus.” This seems to bypass the unwanted parsing, and it also saves a step by creating the task directly in OmniFocus instead of using the shared Reminders list, which sometimes led to duplicates being imported.

There are still some problems, though. Sometimes, when I say “Add a task in OmniFocus” it will not go into the mode where it lets me dictate. Instead, Siri will say something like “I found 25 reminders” and then show a list of some OmniFocus tasks. I have no idea why this happens since the Siri screen shows that it understood what I had said.

Also, the length limit for OmniFocus seems to be even shorter than for Reminders. After a sentence, or even a long clause, even if I’m careful not to pause, Siri will decide she’s done listening, truncate my task, and throw away everything else I said.

This can be avoided by manually creating a new task in OmniFocus and tapping the microphone button. Then I can say as much as I want. But, as far as I know, there’s no way to initiate this via Siri.

Previously: Adventures in Siri Failures: Reminders Edition.

Update (2017-09-26): Gok:

You can use hold-to-talk to prevent recording from stopping. Hold down the Siri button (hardware or software) until you’re done.

However, I mostly use this feature in the car, where I don’t want to have to hold down the button.

watchOS 4 and Podcast Apps

Matt Birchler:

So after all that said, how do I feel about watchOS 4? I think this is ultimately an update similar to watchOS 2. It’s a small update that makes some key features better, but it does not change the smart watch game in any meaningful way. I don’t mean that totally as an insult, but you should know that this update is not going to revolutionize the world of smart watches and make them something everyone just must have.

But while watchOS 4 is not a revolution, it is a good step in the right direction. This feels like a refinement year to me, which just means that you are going to enjoy your Apple Watch more than you did already. Media controls are a big win, as I now feel like my watch and my phone are more aware of what each other are doing.

Marco Arment (Hacker News):

The Apple Watch desperately needs standalone podcast playback, especially with the LTE-equipped Series 3, which was designed specifically for exercising without an iPhone.

Believe me, I’ve tried. But limitations in watchOS 4 make it impossible to deliver standalone podcast playback with the basic functionality and quality that people expect.

[…]

Requiring podcast apps to also be workout apps is a user- and developer-hostile hack that Apple probably doesn’t intend.

[…]

The lack of volume control is especially damaging with watchOS 4’s great new “Auto-launch Audio Apps” setting.

[…]

WKAudioFilePlayer will not play to the Watch’s built-in speaker — it only plays to headphones connected to the Watch via Bluetooth. If playback is attempted without headphones connected, WKAudioFilePlayer just silently fails to play, without returning any errors.

[…]

Transferring a podcast file to the Watch is a long-running task, often taking at least a few minutes per episode (and sometimes much longer), but the WCSessionFileTransfer class provides no progress information. So there’s no way for apps to inform users how long the transfers may take, or if they’re currently moving at all.

iStat Menus 6

Bjango:

Notifications, based on CPU, network, disk, battery, weather and other events.

Hotkeys to open and close menu dropdowns, for quick keyboard access.

Reorderable dropdown menus, with the ability to hide sections.

A compact Notification Center widget, covering some of the popular iStat Menus features.

There are more changes, including an indicator for AirPods battery level, though I already get that through Tooth Fairy. Also interesting is that it can show weather information, and that this is enabled by a subscription fee ($6/year for 15-minute updates).

Update (2017-09-26): See also: MacRumors.

Update (2017-09-29): See also: David Sparks and Agen G. N. Schmitz.

Surprising Behavior of Non-optional @NSManaged Properties

Arek Holko:

A few minutes (or more honestly hours) of debugging later, we notice that the name is an empty string only on instances that were deleted from a context and the context was saved. (Deletion of managed objects is unrelated to ARC, so we have objects living in memory even though they are already treated as deleted.)

[…]

As pointed out on Reddit replacement of nil with an empty string is actually caused by bridging from NSString to String.)

[…]

The same silent substitution happens for these types too:

  • numeric types use a value equal to 0
  • Data uses an empty Data instance

So this does not seem to be Core Data–specific. However:

This behavior spans relationships too. […] Can you guess what happens? We didn’t set up the user relationship, so we should get either a nil or a fatal error, right? Well, we don’t. An empty string is printed in this case too!

This is completely counter-intuitive when compared to the normal Swift code: event.user is nil, yet event.user.name isn’t.

Here, event.user was declared as non-optional.

Sierra’s Unified Log Evolves

Howard Oakley:

When I assessed this in March 2017, the default period for which log entries remained, appeared to be determined by log size, and amounted to several days.

In Sierra 10.12.6, the current period is about 20 days, possibly even more.

The present structure of log files is also quite different from early releases of Sierra.

Previously: Logs Unite: Forensic Analysis of Apple Unified Logs, macOS 10.12.4 Locks Console Log Away From Normal Users.