This document discusses simplicity and complexity in software systems. It argues that simple systems that evolve over time to become more complex tend to work better than complex systems designed from scratch. Simple is defined as having one fold or braid, while complex has many folds or braids. The document advocates embracing essential complexity but favoring simplicity overall by using higher level languages, immutable data, references to compose value and time, and avoiding mutable state. Composition is preferred over combining unrelated things. Abstractions should be global and complete rather than local and shallow.