This is an evolving, opinionated set of contraints that's inappropriate or impossible to achieve for most applications. It's designed for apps which I use so often and rely on so heavily - like my notes database - that I want them to function as an extension of my mind.
I've been largely unsuccessful in finding tools that meet these criteria, so I'm writing them.
They come with some heavy tradeoffs which I'm willing to accept.
- All operations must complete in 400ms or less - the Doherty threshold. I have 16 cores, 32gb of RAM, and a 100mbps connection; use them.
- You can't cheat on rule 1 by displaying "progress", like low-resolution images, partially-loaded pages, or "infinite scrolls". The 400ms is measured from "I take an action" to "the action is fully complete and the final form of the results are available".
- You may never pop anything up - modal, notification, or anything else - except in direct, relevant response to an action I have taken. If you have anything else to say, you can email me. (I won't read it).
- You may never auto-update. If I want you to update I will order you to do so. Also: no changelog, no update.
- Nothing may move or change on the screen except in direct, relevant and immediate response to an action I have taken.
- You may not transmit anything across the network that is not directly at my request and for my benefit. You may request permission in a settings panel to transmit analytics. (I will deny it).
- You may not annotate my typing for "spelling" or "grammar". My spelling is better than yours.
- You may never steal keyboard focus.
- No detectable "typing lag" is ever acceptable. You have access to 16 cores each running at approximately 3 billion operations per second. I type at approximately 8 operations per second.
- You may not perform "machine learning" or "analysis" on my data, even locally. All data that you display must have an obvious source, and all conclusions must have obvious reasoning. The alternative is not only useless, it's creepy.