This post was excellent, although I take issue with the silent waiter part. His waiter example was trivial; there's no reason you wouldn't want the marshmallow bowl refilled, but usually programs aren't like that. I hate when programs do stuff without asking me, especially by default. Everytime I start using OpenOffice on somebody else's machine it takes it all of a minute to incorrectly autocorrect something I've typed (I disable autocorrect on my machines). That's the kind of "silent waiter" I hate, I don't want it automatically doing something unless there's absolutely no way I wouldn't want it done, and that's fairly rare
If you're going to be a silent waiter, you have to be a damn good one.
"any sufficiently advanced magic is indistinguishable from technology" (Larry Niven)
I like turning this on its head: if you're going to do something with technology it has better be so good that it looks like magic. Every time it fails, the illusion is broken and flow/trust/fluidity is gone. It has failed you.
If the caching algorithm of your drive controller was sometimes wrong and you had to manually find data in the right sector, you'd be annoyed by it too.
If your code is promising to do something for the user, it has to do it exactly right every time. Otherwise you need to package, promote and conceptualize it differently so that you don't constantly fail to live up to expectations.
It takes a very good post to make me subscribe to someone's blog, especially an Apple person's blog, but this is high-quality Tognazzini-level musing on interface design. Better, even: Modern, web-focused.
Not to make this an Apple Person argument, but I think this is the sort of Apple Person mentality that I like the most: the one that isn't about constantly harping on other computer types, but that just quietly appreciates how beautifully simple most Apple stuff is.