A framework for thinking about interface design through the lens of 'concern signaling', borrowed from telecommunications. Every interface concern either travels in-band (forcing the user to confront it) or out-of-band (allowing it to be silently ignored). The post illustrates this with examples across error handling (Rust Result vs JS exceptions vs Java checked exceptions), naming (HashSet vs TreeSet), union types (KeyboardEvent), required parameters (Java String charset), randomization (Go map iteration), and UI design (Slack threading). Six principles guide the choice between in-band and out-of-band: sensible defaults, safe defaults, actionability, self-revealing behavior, audience expectations, and proportionality. The core tradeoff: in-band concerns tax attention, out-of-band concerns risk silent bugs.

12m read timeFrom tomeraberba.ch
Post cover image
Table of contents
Concern signalingError handlingNamingUnion typesRequired parametersRandomizationUISignaling principlesThe tradeoffFootnotes
1.1K Impressions