Principles, loosely defined and incomplete.


  1. Deal with the mess.
  2. Let different things be different.
  3. Always use UUIDs.
  4. Delay serialization.
  5. Look at things.
  6. Never name something end. Always either endExclusive or endInclusive.
  7. When a method is dangerous to call, add _DANGEROUS_DANGEROUS_DANGEROUS_BECAUSE_XYZ to its name; when a section of code is dangerous to change, add // DANGEROUS DANGEROUS DANGEROUS IF YOU CHANGE THIS THEN XYZ WILL HAPPEN before every single line in the section.