Everything Should Be Typed: Scalar Types Are Not Enough

Why scalar types give us a false sense of safety, and how wrapping primitives in domain types catches bugs the compiler never could.