Hasty Briefsbeta

Bilingual

The Shape of Data (2022)

15 hours ago
  • Consistent data notation across code, logs, debug, and UIs reduces mental load and improves productivity.
  • Clojure's edn syntax provides a roundtrip property (read-print) that makes textual representation a direct mental model for data.
  • Separating read from eval (like JSON.parse vs eval) ensures safety and enables language-independent data exchange.
  • Using tags (e.g., #inst) allows extensible types without sacrificing self-describing notation.
  • Tree-shaped data models with stable IDs for graph-like structures avoid pointer issues and aid portability.
  • Layering notations (e.g., text, tags, types) balances readability and expressiveness, as seen in Chrome's HTML inspector.
  • Reifying changes as data (paths + operations) enables undo logs, collaboration, and diffs.
  • Code as data (homoiconicity) and codebase as data (content-addressed storage) simplify analysis and tooling.
  • Execution traces as data could enable powerful debugging, though challenging in unrestricted languages.
  • Co-design of data model and notation is crucial to avoid later limitations.