String Theory and Time Travel: the humble text editor
summary
Claim: the editor broken time machine loses history when edits are made after undo. Evidence: a Ruby implementation of a HistoryStep module uses a doubly linked list, then adds an alternatives array to create a branching history like git so undos never discard prior timelines. Also practical tooling: a small Ruby DSL for commands (typed args, select/modify/replace primitives) and examples from SAM, Acme, and the Canon Cat leap keys. The code is simple and demonstrably preserves and navigates alternate edit histories.
AI-written summary · about
chapters (40)
- 0:00Intro
- 3:27Text editor vs IDE
- 4:19Early computers
- 11:39Japanese saws
- 13:43Wizards
- 14:34Hand tools
- 15:42Handtools
- 16:34Wizards vs Hand Tools
- 17:19Older Text Editors
- 19:06Now we can do better
- 19:45Better command syntax
- 21:46Single responsibility principle
- 22:09composability
- 22:32static typing
- 22:57command line syntax
- 24:33build a powerful command language
- 24:55Emacs
- 25:35Ruby
- 27:45doubly linked list
- 28:28implementation
- 30:11bad implementation
- 31:17branch history
- 32:39branch history implementation
- 33:36undo redo operations
- 34:45time lines
- 35:00macintosh
- 36:17Canon Cat
- 37:30Rob Pike
- 37:51Sam
- 39:09Plan IX
- 42:01Who uses Plan IX
- 42:46Plan IX for Userspace
- 43:09Takeaways
- 43:22Rails
- 43:41Building your own
- 43:53learn about IO
- 44:24learn about software architecture
- 44:39learn a new text editor
- 45:24computer science history
- 45:42GitHub
related talks
25mTime Travel Debuggers
09mMicro-Versioning Tool to Support Experimentation in Exploratory Programming
26mA Branch in Time (a story about revision histories)
26mTime-awareness in Object-exploration Tools: Toward In Situ Omniscient Debugging
11mUndo all the things!
27mBranch in Time
28mDocument-oriented programming based on edit history
20mChronicler: Interactive Exploration of Source Code History
