Building robust applications: make invalid states unrepresentable
federicoterzi.com