7 ms·
Serious apps should come with event logs and command lines, period.
by codr7 5y ago
Serious apps should come with event logs and command lines, period.
- p2t2p 5y agoCorrection: Event logs should be transaction logs instead and you must be able to travel through it reverting and re-applying actions. It should be branch-able and allow you to jump between those branches.
- linspace 5y agoI can do that with Emacs. What other tools make it easy to branch in history?
- skinkestek 5y agoFor small values of easy: vim. (It is really easy to do I think, doing it correctly instead of just being clumsy and hitting some key that starts it, that is the challenge ;-) I only learned now that emacs could do it.
- Sophira 5y agoI didn't know that vim could do this! I've always assumed that undo/redo (u/^r) were my only options. For anyone else who didn't know, try ":help undo-branches" or take a look at https://vim.fandom.com/wiki/Using_undo_branches https://vim.fandom.com/wiki/Using_undo_branches , which has a simple example of use.
- jeofken 5y agoEmacs branching got way better with undo-tree, check it out :-)
- marcosdumay 5y agoGIMP. This is one thing it does very well, it beats emacs hands down in history visualization (at least without undo-tree, I've never tried it).
- xmprt 5y agoI feel like from a design and architecture point of view, building an application with the command line as a first class citizen will ensure that the application is well designed.
- stult 5y agoIt ensures separation of concerns is at least minimally applied in order to support two separate presentation layers (GUI & CLI). CLIs are also much more testable in general, so usually it’s easier to write e2e tests if a CLI is present. It might not cover 100% of the code because it doesn’t test the GUI, but does often get you something substantial like 90% of the way there.
- bopbeepboop 5y agoIt depends on the application, but CLIs can make testing GUIs easier in two ways: - you can test the rendering layer in isolation by using the GUI to display two pieces of information manipulated by the CLI and comparing the renders, eg blank screen -> add some object. - you can comparison test the GUI, eg pressing button X produces the same result as CLI option Y. Properly testing a GUI requires having an internal CLI, in places I’ve worked — eg, app companies.
- p2t2p 5y agoHave you ever run `rm -f important_doc.txt` instead of intended `rm -f important_doc copy.txt`? It doesn't matter if it is GUI or terminal interface, software must be _humane_, forgive mistakes and provide a way out. As much as love Unix coreutils and have them in may fingertips, those are the least humane programs I have ever used. Surprisingly, git seems quite humane, even when you screw things up it gives you a lot of safety mechanisms to recover.
- linspace 5y ago> Surprisingly, git seems quite humane, even when you screw things up it gives you a lot of safety mechanisms to recover. You have to earn it. I admit that when I started using git sometimes I made a copy of the repo just in case I ended in a state that made it easier to nuke it and start again
- Cthulhu_ 5y agoI'd take a bit less of an absolutist standpoint myself, but, designing your application so that it has this event log (Command design pattern from back when, but I'm sure it has a more modern name nowadays) and its functionality is separated from its user interface are best practices.