Jon Sterling › Creek [014T]

Technote. Item identity in NSOutlineView [01F5]

If an NSOutlineView is managed by a NSTreeController, expansion state is only maintained on reloads when the items (NSTreeNode.representedObject) maintain persistent object identity.

This suggests that a controller which is preparing the content for the tree controller ought to maintain a cache keyed by persistent IDs that uniquely identify an item within the outline view.

Technote. Missing scroll edge effect APIs in AppKit [01F0]

As of Xcode 26 beta the advertised APIs for configuring a soft vs. hard scroll edge effect for NSScrollView in AppKit are nowhere to be seen. An analogous API for SwiftUI does exist.

This is filed under FB19629463.

Technote. Broken scroll edge effects in AppKit [01EY]

As of macOS Tahoe beta 7 / Xcode 26 beta 6, scroll edge effects are not correctly applied to an NSScrollView unless its hasVerticalScroller property is set to true.

Note that even when a scroll view does not have a vertical scroller, it is possible to scroll it underneath the titlebar area using the trackpad. In this case, no edge effect is applied and the content appears directly underneath the window chrome.

This is filed under FB19629432.

Semantics of context composition in task management [01AG]

David Allen’s Getting Things Done (GTD) task management system suggests tagging tasks with contexts, which describe the conditions that must be in place in order to carry out a given task. These conditions often are of the form “I am in my office” or “I am at home” or “I am on my laptop”; these could be coded as @Office, @Home, @Laptop respectively.

One subtlety of this design is the meaning of tagging a task with multiple contexts. Does @X @Y mean the conjunction or the disjunction of the @X and @Y? I think the disjunctive semantics is better, and it suggests a rephrasing of the usual GTD mantra about contexts: a context of a task describes any condition under which it can possibly be achieved, rather than the conditions that are required.

For example, sometimes I will tag something as @Lab @College because it is a task that I can carry out in either my Computer Laboratory office or my College office. Although it can look strange to people familiar with tagging for other purposes, the goal here is that when I reach College, I filter my tasks by the @College context and see anything that I could reasonably undertake at that moment.

Would it be better to have a more sophisticated logic of contexts that accommodates any combination of disjunction and conjunction? Perhaps, but I think that might lead to enhanced f***arounditis rather than enhanced productivity.

Impressions of How the Steel was Tempered [015Q]

Reading How the Steel was Tempered, I am struck by the way the narrative takes a definite position—it is for us, children of the future!—without cloaking itself in the viewpoints of depicted characters or that of an active narrator. How unsophisticated and innocent it must seem to those acquainted with the “neutrality” of bourgeois fiction, which deviates from the viewpoint of the bourgeoisie only to relate the views of a character—who naturally lives in a different world.

[014U]

I wish that Things.app made it possible for me to mark that a task is in progress. There is something about the ability to do this that fits well with my own need to lower the mental and spiritual weight of my pile of tasks.