Your Interface Has Two Channels
Summary
This piece reframes interface design as signaling between two channels—data and concerns—arguing that in-band vs out-of-band signaling shapes how errors and behavior are communicated to users. It surveys error-handling styles (return values, exceptions, union types) and applies them through Java, Rust, TypeScript, and UI design examples, offering practical guidelines for safer interfaces and clearer signaling.