Feature-level thinking is natural, yet deeply wrong
In this Shortform I talked about why interactive systems that include AI are more powerful than end-to-end AI-powered algorithms. But it misses something big, a concept where actually most of my surprising ideas about UI design have come from.
The raw data underneath any given UI, and the ability to define functions that “do things at certain points” to that data, is very elementary relative to the richness of that UI, and the things that it lets you do.
Something mundane like “article → list of (index, string)-pairs representing paragraphs” can become, “menu of clickable chapters sitting beside the main editor window, that take you to that section”. But (depending on your language/utils/environment), with only 1-2 lines of code you can add a “right click to regenerate this section”.
The fact that adding a “right click to regenerate this section” is merely 1% of the codebase, but like a doubling or 1.5x increase in the amount of things you can qualitatively do in the UI, is not a coincidence, it happens over and over again.
in the correct perspective, an AI that can do kind of almost do everything is still a very large distance from an AI that can actually do everything. This perspective is not natural, it is not the feature-level perspective.
Ctrl-f transforms Notepad++
It turns each substring of a given thing you typed, into a potential index, with your memory acting as an interface to that index. Substring search is very simple feature in terms of pure code, and a little more complex in terms of UI but not that complex, not complex relative to how deeply it transforms a Notepad app.
It creates emergent things, like, you can use your own tags and keywords inside notes that you know you’ll be able to ctrl-f to easily. Not only is the tagging system not explicitly programmed, it’s not even a good idea to program it, because it would make the tool more clunky and bloated.
Feature-level thinking is natural, yet deeply wrong
In this Shortform I talked about why interactive systems that include AI are more powerful than end-to-end AI-powered algorithms. But it misses something big, a concept where actually most of my surprising ideas about UI design have come from.
The raw data underneath any given UI, and the ability to define functions that “do things at certain points” to that data, is very elementary relative to the richness of that UI, and the things that it lets you do.
Something mundane like “article → list of (index, string)-pairs representing paragraphs” can become, “menu of clickable chapters sitting beside the main editor window, that take you to that section”. But (depending on your language/utils/environment), with only 1-2 lines of code you can add a “right click to regenerate this section”.
The fact that adding a “right click to regenerate this section” is merely 1% of the codebase, but like a doubling or 1.5x increase in the amount of things you can qualitatively do in the UI, is not a coincidence, it happens over and over again.
in the correct perspective, an AI that can do kind of almost do everything is still a very large distance from an AI that can actually do everything. This perspective is not natural, it is not the feature-level perspective.
Ctrl-f transforms Notepad++
It turns each substring of a given thing you typed, into a potential index, with your memory acting as an interface to that index. Substring search is very simple feature in terms of pure code, and a little more complex in terms of UI but not that complex, not complex relative to how deeply it transforms a Notepad app.
It creates emergent things, like, you can use your own tags and keywords inside notes that you know you’ll be able to ctrl-f to easily. Not only is the tagging system not explicitly programmed, it’s not even a good idea to program it, because it would make the tool more clunky and bloated.