Archive for January 29, 2018

Monday, January 29, 2018

OmniFocus 2018 Roadmap

Ken Case:

The ability to apply tags without replacing existing tags opens up all sorts of possibilities. You can have a set of tags representing locations (#home, #work, #grocery-store), and an orthogonal set of tags representing things you might want to tackle based on difficulty or energy level (#tough, #easy, #routine). You can track priority (#urgent, #important) or people (#tim, #molly), or even use tags to track a list of things to do #today. Tags are incredibly flexible, letting you organize things in whatever ways make the most sense to you.

Fortunately, it sounds like they are not replacing contexts.

OmniFocus 3 solves this issue by letting each tag track its own independent ordering of tasks. If I’m planning a run to the grocery store, I can look at my #grocerystore tag and drag those items into whatever order I prefer, without changing the order of those tasks in the project list or in other tags. And if I’ve tagged a bunch of tasks to do #today, I can reorder those tasks in whatever way makes the most sense to me.


For OmniFocus 3, we’re adding support for linking tasks between unrelated databases. The idea is that I can send you a task (with its notes and attachments and due date) and propose that our tasks be linked, and you can choose whether to accept the link or not. While our tasks are linked, we can each see updates to the status of that specific task. But in each of our databases, that task can live wherever we want: so I can turn my task into its own project with a number of subtasks, while you might have that task as one step in a sequential project.


OmniFocus for the Web will not be offered as a standalone service: it will only be able to sync with existing databases set up by the OmniFocus app. Since this is another version of the app that we’ll be maintaining as a constantly available online service, we’ll be charging a subscription fee for access.

Update (2018-01-29): Ken Case:

We won’t have anything we call “contexts” anymore, but v3’s tags will have all the same capabilities v2’s contexts had: locations, hierarchy, and status. But they’ll be getting some new (optional) capabilities as well. (With a more familiar name.)

Update (2018-02-01): See also: The Omni Show.

Finding a CPU Design Bug in the Xbox 360

Bruce Dawson (via Mike Ash, Hacker News):

But, the CPU was for a video game console and performance trumped all so a new instruction was added – xdcbt. The normal PowerPC dcbt instruction was a typical prefetch instruction. The xdcbt instruction was an extended prefetch instruction that fetched straight from memory to the L1 d-cache, skipping L2. This meant that memory coherency was no longer guaranteed, but hey, we’re video game programmers, we know what we’re doing, it will be fine.


So, the branch predictor makes a prediction and the predicted instructions are fetched, decoded, and executed – but not retired until the prediction is known to be correct. Sound familiar? The realization I had – it was new to me at the time – was what it meant to speculatively execute a prefetch. The latencies were long, so it was important to get the prefetch transaction on the bus as soon as possible, and once a prefetch had been initiated there was no way to cancel it. So a speculatively-executed xdcbt was identical to a realxdcbt! (a speculatively-executed load instruction was just a prefetch, FWIW).

And that was the problem – the branch predictor would sometimes cause xdcbt instructions to be speculatively executed and that was just as bad as really executing them.


I knew that would be the result and yet it was still amazing. All these years later, and even after reading about Meltdown, it’s still nerdy cool to see solid proof that instructions that were not executed were causing crashes.

Previously: Intel CPU Design Flaw Necessitates Kernel Page Table Isolation.

Four Column ASCII

Robbie V (via @angealbertini):

I found this gem on Hacker News the other day. User soneil posted to a four column version of the ASCII table that blew my mind. I just wanted to repost this here so it is easier to discover.

Here’s an excerpt from the comment:

I always thought it was a shame the ascii table is rarely shown in columns (or rows) of 32, as it makes a lot of this quite obvious. eg, It becomes immediately obvious why, eg, ^[ becomes escape. Or that the alphabet is just 40h + the ordinal position of the letter (or 60h for lower-case). Or that we shift between upper & lower-case with a single bit.


In the terminal you can type these control characters by holding the CTRL (control characters, get it?) key in combination with another key. For example, as many experienced vim users know pressing CTRL+[ in the terminal (which is ^[ in caret notation) is the same as pressing the ESC key. But why is the escape key triggered by the [ character? Why not another character? This is the insight soneil shares with us.

Mac and iOS Privacy Guide

Andrea Callea (via Hacker News):

In this Apple-user-oriented and safari-and-mail-centric guide to improve privacy, security, and speed for the Average Joe online experience, I suggest some extensions, applications, and components for both macOS an iOS.


To both make a point of how simple it can be to mitigate risks, and to encourage you to continue reading this post, I’ll start with the one regarding Mail and requiring the least effort: email tracking. It is a sneaky and deceitful practice that went from sacrilegious to an unnoticed, widespread, and abused practice, easily accessible to everyone. It’s also very hard to effectively defeat. The only effective method to mitigate it today, according to the conclusion of Englehart in this article, is to disable remote content from automatically loading in your emails. The only downside is that you get uglier emails but they would be safer. It’s a good compromise and you still retain the choice to view the email in your web browser, should you want to. So, go to Mail preferences and disable remote content, on both macOS and iOS.

Update (2018-01-30): See also: Bruce Schneier.

Mosaic’s Birthday: 25 Years of the Modern Web

Steven J. Vaughan-Nichols (via @Illinois_Alma):

In the beginning, the web, or WEB as it was known then, was a mystery. Like gopher and archie, it was a character-based internet tool interface that only the proud, the few, and the early internet users knew about. Then, everything changed. First, the Commercial Internet Exchange (CIX) made it easy for anyone to get on the net, and then two graduate students, Marc Andreessen and Eric Bina, at the National Center for Supercomputing Applications (NCSA) at the University of Illinois Urbana-Champaign, created the first popular web browser: Mosaic.

Lookmark Now Tracks App Updates

John Vorhees:

Lookmark is a bookmarking and monitoring service for iTunes content. It’s an excellent way to save apps, movies, books, and other media for later. Users who purchase a subscription can also use Lookmark to track price changes for apps, which is useful for bargain hunters. Today, Lookmark released an update that pushes the app further into the realm of app monitoring that started with price tracking. Now, users can also track when iOS and macOS apps are updated on the App Store and Mac App Store.


From inside the Lookmark app, you can access Apple’s store pages for your saved media, which can be filtered by type and other criteria like whether there has been a price update. Saved media can be shared or deleted, and if you are a subscriber, you can turn on price and update monitoring for apps. This last feature is new. By turning on update watching, subscribers will be alerted to new updates to apps with rich notifications that include the release notes. In Lookmark, there is also a new dedicated Updates section where you can view all the updates you track chronologically.