Calm software

Software that is useful without being demanding. It reduces cognitive load, resists turning every interaction into a choice, and treats your attention as a scarce resource.

01
Default over choice
Calm systems decide, then let the user correct.

If the user must choose every time, they carry the burden forever. The user's primary interaction should be disagreement—not composition. Don't ask "what do you want Monday?" Say "Monday is pasta" and let them swap if that's wrong.

Before: Blank slate
MonChoose a meal...
TueChoose a meal...
WedChoose a meal...
After: Pre-filled defaults
MonPasta with roasted tomatoes
TueBlack bean tacos
WedSheet pan chicken

The user sees a complete plan immediately. No blank fields, no wizard. Five decisions are already made. Their only job is to disagree—and most nights, they won't.

02
State, not feed
Show what's true now, not what happened while you were away.

Feeds create obligation—"I should check." Calm software shows state: what's true right now, what's decided, what needs attention (if anything). A scrolling calendar becomes a feed of responsibility.

Feed: implies you're behind
2m ago — Grocery list updated
1h ago — New recipe suggestion
3h ago — Reminder: plan tomorrow
5h ago — Sarah shared her plan
State: implies everything is fine
Tonight
Black bean tacos
Groceries
Everything's set for this week
03
Make deviation cheap
Reality wins. Skipping is fine.

Swaps are expected. Skipping doesn't create red badges or incomplete streaks. "Not today" is a normal outcome, not a failure state.

Guilt: treats absence as failure
M
T
W
T
F
S
S
Streak broken! You missed Thursday.
Normal: skipping is a valid outcome
ThuSkipped — ordered in
FriPizza tonight

No streaks, no badges, no guilt.

04
Ask at the moment of pain
Earn personalization through corrections, not questionnaires.

Upfront preference interviews are work. Calm systems earn personalization through contextual corrections—asking a quick question right when the user's action reveals a preference.

Upfront: abstract interrogation
Step 2 of 7 • ~4 min remaining
Select all that apply...
Choose level...
Contextual: learn from the swap
You swapped "Spicy Thai Basil Chicken"
Was that too spicy? I can avoid spicy most nights.
05
Calm is not austere
Playful, warm, delightful—then ambient.

Weiser's canonical example—the Dangling String that spins with network traffic—is a whimsical physical object. It catches your eye at first, then becomes ambient. That's the model.

Onboarding animations, particle effects, and visual flourishes are fine—even good—when they serve a moment and don't repeat. Calm is about respecting attention over time, not stripping away personality.

06
Notifications are a last resort
A calm product should be safe to ignore.

If your product needs reminders to function, it's probably compensating for weak pull-value. When you do notify, set the lowest appropriate interruption level.

Engagement-driven
You haven't opened the app today. Streak resets in 2h!
5 friends shared plans. Check them out!
Weekly digest: 47 things happened
Value-driven
Grocery list ready, whenever you need it.

That's it.

The manifesto

Software should do work so users don't have to.
The best interface is absence; the second best is a summary.
Defaults are kindness.
Corrections should be easier than configuration.
Interruptions should be rare and proportional.
Ignoring the app should be a valid usage mode.

Reading list