惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
S
Schneier on Security
N
News and Events Feed by Topic
N
News | PayPal Newsroom
H
Help Net Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
The Exploit Database - CXSecurity.com
Attack and Defense Labs
Attack and Defense Labs
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
A
About on SuperTechFans
AWS News Blog
AWS News Blog
S
Secure Thoughts
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
C
Cybersecurity and Infrastructure Security Agency CISA
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
人人都是产品经理
人人都是产品经理
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
The Last Watchdog
The Last Watchdog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
H
Hacker News: Front Page
P
Proofpoint News Feed
N
News and Events Feed by Topic
H
Heimdal Security Blog
L
Lohrmann on Cybersecurity
有赞技术团队
有赞技术团队
L
LangChain Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog

Unsung

The surprising richness of GarageBand – Unsung “The pipeline of future experts is thinning from both ends.” – Unsung “It took months to find appliances that didn’t need apps to function.” – Unsung Day for night – Unsung “But obviously, that’s just silly stuff.” – Unsung Within or without – Unsung A few interesting modern pixel fonts – Unsung Google Docs shortcut onboarding – Unsung “Why pay for an orchestra when your computer can do it all?” – Unsung Lisa’s copy (and cut, and paste) – Unsung “This is a common tell in web apps, and we did a lot of work to eliminate it.” – Unsung Chrome’s abnormal tab search – Unsung “Some say it sounds like an alto saxophone.” – Unsung Shallow breathing – Unsung “If you just ignore those pesky impossible details, the demo looks deceptively simple.” – Unsung “Accents are an opportunity, not a burden.” – Unsung Less doesn’t need more – Unsung “Easy to use,” the hard parts – Unsung “We accepted this gradual bloat, but that’s not progress.” – Unsung Safari and system design, pt. 1 – Unsung “193 hours of attempts (and practice)” – Unsung Not a radio pharma ad – Unsung “Cryptic mode was born from a hard constraint.” – Unsung Speaking of wiggling the mouse – Unsung “This is where your mouse becomes a cryptographic instrument.” – Unsung Mailbag: Photoshop’s focus post – Unsung Rug pulled – Unsung Save For Web claws – Unsung “Nothing short of a magic trick” – Unsung “They did the bare minimum and moved on.” – Unsung A preview of the future – Unsung Peaked in 2015 – Unsung “There seems to be a file that is just filled with undecipherable Morse.” – Unsung “This was a user-friendly computer.” – Unsung “Watchmaker’s delicate precision and ornate mechanical intent” – Unsung “Traditionally, fonts were just shapes.” – Unsung “Who thinks about a screwdriver?” – Unsung The land where time stood still – Unsung The vision of persistence – Unsung The 1990s called and they want their dialog box back – Unsung “Have you ever been annoyed by your Mac’s media keys?” – Unsung Early names – Unsung Mouse pointer as a mere mortal – Unsung “Examining the changelog in its entirety would be a massive task, given that it was now over 200,000 words long.” – Unsung CleanShot’s onboarding via settings – Unsung The tortoise and the hare live on – Unsung “The Helvetica of music notation” – Unsung Photoshop’s challenges with focus, pt. 2 – Unsung About Unsung: Thanks for your feedback! – Unsung Book review: Shadow of the Colossus (Boss Fight Books) – Unsung UI art from 4096 – Unsung Tactical dark modes – Unsung What deserves a second chance – Unsung “The cheatsheet you won’t need.” – Unsung “That’s how floating point errors and triangle numbers solved a mystery.” – Unsung “Plain text has been around for decades and it’s here to stay.” – Unsung Abort, Retry, No, Thanks – Unsung “The deeper you look, the more it starts to feel like a platform.” – Unsung Out of touch – Unsung Recency bias (non-derogatory) – Unsung “You could key smash, and it would type out the thing.” – Unsung “The fancy software figures it out for you.” – Unsung Got your back, pt. 5 – Unsung If a feature falls in a forest – Unsung “The system is so twisted that even Apple itself begs for these reviews from its own apps.” – Unsung “It can be really disorienting to scroll around a fully monochrome hexdump.” – Unsung Raycast’s confetti cannon – Unsung The edge not taken – Unsung “Area connected to a given node in a multi-dimensional array with some matching attribute” – Unsung “Use links, don’t talk about them.” – Unsung Unsung @ 250: Please send me your feedback! – Unsung Unsung @ 250: Nine design details – Unsung Unsung @ 250: Goals and principles – Unsung “To build a thing that immediately feels like you’ve had it forever is very hard to do.” – Unsung “Should be no trouble at all for a driver to understand.” – Unsung Thoughtful file dropping in Wakamaifondue – Unsung “Rather than trying to fix this mistake, the developers leaned into it hard in the sequel.” – Unsung The beauty and the terror of oddly-specific commands – Unsung “We can have the best of all worlds.” – Unsung In search for a more precise cursor – Unsung “Deere charges six figures for a tractor. But the farmers were still the product.” – Unsung Is this the latest? – Unsung “So I wrote a script that takes monthly screenshots of Google and Apple Maps.” – Unsung Only time will tell – Unsung “Approximately 21 times the estimated age of the universe” – Unsung “We’re trying to copy this old machine, weirdness and all.” – Unsung “Software is a unique art because it is so reactive.” – Unsung Blink comparators in photo editing apps – Unsung “Prototyping turned into an excuse for not thinking” – Unsung “Every step they take, in every single direction, is right on top of a rake.” – Unsung “Subtle line between animations that help and animations that hurt” – Unsung Why do Macs ask you to press random keys when connecting a new keyboard? – Unsung “And if I were to end this story here, this would be a great story.” – Unsung “If you use your computer to do important work, you deserve fast software.” – Unsung “It moved too slowly to be an asteroid.” – Unsung Linear’s clever internal redesign UI – Unsung “I’m hoping that the listeners out there, when they hear it, they’ll feel seen.” – Unsung For your consideration: Tab to fix spelling – Unsung Anachronisms – Unsung Testing tip: Enable the zoom peek gesture – Unsung
Deterministic vs. idempotent – Unsung
Marcin Wichary · 2026-03-03 · via Unsung

Those terms confused me back in the day, and occasionally they still do, so I thought it might be nice to write it all out. This is how I understand them:

  • deterministic: whenever you do something, it gives you identical results as any previous or next time you do it
  • idempotent: if you do something twice, or thrice, or more times, it will be the same as doing it once

Or, in short:

  • deterministic: same every first time
  • idempotent: same every next time

This might be confusing. Outside of LLMs, computers are supposed to be deterministic, no? They’re famously bad at random numbers; if you memorize a pattern, you can beat Pac-Man every single time.

But “deterministic” in UI design might mean something more specific. Let’s take pressing ⌘B to bold, for example:

Every time you press ⌘B on an identical selection, it will behave the same. But, pressing ⌘B doesn’t guarantee something will get bold. If it already is bold, the command will reverse its meaning. In this sense, ⌘B is non-deterministic.

It’s not hard to imagine a determistic version of bolding. Make ⌘B bold the text, and make another shortcut – say, ⌘U – unbold it. This way, you can always press either and be absolutely confident you will get a predetermined result without worrying about anything else. It’s a boon for motor memory, but it is more complex to explain, and it adds more UI surface.

There is also another, more interesting way: you can make ⌘B always bold first, and unbold second. This way, your fingers can remember ⌘B is for bolding, and ⌘BB is for unbolding. But this also gets tricky: for already fully bolded text, it might seem the feature is broken, because the first keystroke does nothing!

Only the second of these three approaches is idempotent,meaning you can invoke it many times and it will always give the same result:

  • ⌘B toggles bolding from current state: non-deterministic, non-idempotent
  • ⌘B bolds, ⌘U unbolds: deterministic, idempotent
  • ⌘B toggles bolding, always starts from bold: deterministic, non-idempotent

One of my favorite idempotent concepts is the Clear key present on many calculators, and still on some larger Mac keyboards.

The idea behind Clear is simple. Let’s say you’re a professional keypad user – maybe an accountant? – typing in numbers for hours a day. You just made a mistake. Pressing Backspace will remove the last digit, but are you sure you only made a mistake on that last digit? What if your fingers brushed another key and you typed in two digits by accident?

Instead of using the non-idempotent Backspace key where you’d have to look at the screen to confirm, it’s easier just to press the idempotent Clear which will always remove the entire number, and then start from scratch without even having to look anywhere (as gamers would say, “no scope!”).

And, for people who are moving fast, it feels safe just to press the shortcut or a button instinctively, for ease of their mind, even if nothing has to be done. Some people might choose to press it a few times, just in case. The Esc key often has that property – isn’t it just nice to slam Esc many times? – and Jeff Jarvis in his 2014 essay talked about another shortcut that felt that way:

Since I don’t need ⌘S anymore, I can now appreciate how much it had become a part of my ritual of writing and even of thinking. I used to hit ⌘S not just as data insurance — hell, I’d often hit it after having not made a single change in my text since the last time I’d hit it. I hit ⌘S as a break, a psychic, semiotic semicolon. It gave me a moment to search for the right word, to plan the structure of where I would go next, to commit to what I’d written, or to wonder whether I had the courage to erase what I’d written and try again.

(In Figma, where ⌘S wasn’t necessary, we used to show this – but we only showed it once every fortnight, since some people would press the shortcut instinctively like Jarvis, and find the message distracting and maybe even patronizing.)

All of these options have pros and cons. The beauty of determinism and idempotence is that they free you from paying attention. I always get a bit nervous when someone tells me that in their country, you can press the elevator button again to unset it. Even if you don’t make a button a toggle, visually disabling it or showing a message (“Nothing to delete!”) when it has nothing to do could feel like a friendly gesture toward newcomers, but its non-idempotence will grate people who know what they’re doing. Determinism and idempotence are good for motor memory to develop, but – just like the above bolding example – might be initially more confusing.

The approaches can coexist; browsers give you ⌘⌥←→ to move between tabs (non-deterministic, non-idempotent) and ⌘1/2/3 to switch to a specific tab (deterministic, idempotent). Some places even offer a choice. In macOS, you can say whether you want clicking on a scrollbar chute to be deterministic or not:

…although usual choice-giving caveats should apply.

I think it’s good to think about those things, especially for interfaces used professionally. Magical things happen if you can trust your fingers and sometimes, if you worry too much about novice users, that might make it hard for pro users to emerge.