[[If users don’t have simple access to past program states, ...

If users don’t have simple access to past program states, then progressing in the software is a destructive action; it erases options that were available before. Where this dynamic is unintentional, it undercuts the user’s success in the program. In programs where progress is a destructive action, I often find myself falling into various anti-patterns to avoid missing out on other paths forward.

Operating on data has a time component to it, and thus the data itself should have time encoded into it. It is implicitly there, we just need to make it legible and operable to the user.

www.joshbeckman.org/notes/662101293