7 ms·
Saving is Obsolete: Etherpad adds time slider
- PStamatiou 17y agoJust noticed it in my account. Pretty slick! For those wondering what this is - PG used an early version of this to show his essays as he wrote them. Example from notes I took during an interview with Marcus Nelson of Uservoice. https://pstam.etherpad.com/ep/pad/view/ro.XF6No8LU/rev.1087 https://pstam.etherpad.com/ep/pad/view/ro.XF6No8LU/rev.1087
- darkxanthos 17y agoSo I know this is frowned down upon on HN but fuck it. I've been waiting for this feature ever since the PG essay. I'm extremely excited. Thank you etherpad gods for finally giving me this damn feature! I've been into poetry and essay writing lately and something like this will add a ton of creative expressive value to my writing.
- acangiano 17y agoI want this feature in my code editor. :)
- tetha 17y agoMy development enviroment has this, 's called git diff and git log?
- acangiano 17y agoNot quite the same thing.
- thwarted 17y agoUI difference. That and when browsing code history, the focus is on commits rather than the order in which the keys were hit. When I'm checking code history, what was typed in between commits would be useless information 99% of the time.
- DanielStraight 17y agoMuch more than UI difference. It's seamless and automatic. That's what makes it different. You CAN do this in any environment, but you might not. I've quite often done some work, decided I didn't like the way I did it, gone back and done something else (never committing the first method), then decided I wanted to original way back. No one has time to commit EVERYTHING they may want to undo. Also, browsing through history in a version control system takes much longer than dragging a slider.
- aaronblohowiak 17y ago"No one has time to commit EVERYTHING they may want to undo." - why not? Committing locally takes ~0.25 seconds ( bash script called from command line in vim makes it painless.) then when you're ready for your real commit, you just rebase -i to squash the in-between ones, and then push. as for the slider.. eh.
- catch23 17y agoYeah, but not everyone wants to have their commit logs full "testing sample code 2" etc. Maybe you're profiling and you're trying out different pieces of code to see which ones might be faster -- happens all the time in javascript because browser implementations of javascript aren't identical. I don't do these intermediate commits otherwise my log would be a pain to read and 95% of the commit messages would be me testing out random code samples. Another useful case for it is when you're just putting in a bunch of debugging statements that you don't want to be committed later. I find myself doing undo/redo all the time for doing stuff like this. I think a more advanced undo/redo would definitely help out.
- aaronblohowiak 17y ago>not everyone wants to have their commit logs full "testing sample code 2" etc That's why you squash the commits when you are done with the profiling. Squashing the commits makes it seem like just one commit (and one commit message) in the log. This way your log is clean, but you get the advantage of frequent saves. If you dont want to do this, you could probably hook up something with FUSE
- Pistos2 17y agoI commit to version control very often. Further, with version control, you annotate the commits with meaningful messages, and you (presumably) commit at meaningful points in time. For example, you (usually) wouldn't commit in the middle of developing something (when it's obviously broken, even syntactically). Snapshooting at arbitrary points in time would not enjoy these benefits of intentional version control commission.
- acangiano 17y agoI'm obviously not arguing in favour of replacing git, hg or svn with this. It would be a fun, additional feature to have. You could then watch how the code evolved over time, easily move step-by-step, hand it over to a less experienced developer to teach him how to refactor code, and so on. I would find it useful.
- akkartik 17y agoThat mirrors how I hack. I like to think in terms of the changelog message, what I want to say about the current snapshot, front and center. The fact that the snapshot is saved at that point is almost implicit. http://akkartik.name/codelog.html http://akkartik.name/codelog.html (from 2005; now I use git instead of darcs)
- iamwil 17y agoSure, developers have this sort of power. Lay people don't. Their target audience is more than just devs.
- apotheon 17y agoEditor integrated version control is what this is talking about, though.
- darkxanthos 17y agoI can't remember the last time I ever cared for more than just the previous revision lol... this would be WAY overkill (for me at least)
- anigbrowl 17y agoI can see it being a big plus for working on longer-form documents. I write screenplays and when you've got 100 pages going back to look at old autosaves becomes a real pain.
- darkxanthos 17y agoOh for writing of course! (I wrote another comment about that here http://news.ycombinator.com/item?id=802642 http://news.ycombinator.com/item?id=802642) But for source code control... I was thinking nuh-uh... but it might actually be helpful at least until check-in. Shucks. I dunno.
- anigbrowl 17y agoJust being able to scroll back and forth between the history or different commits or whatever seems like a plus. It's the UI widget that impresses me, rather than the version control (which, as noted, is not new).
- iamwil 17y agoDepends on your style of writing. Maybe we don't only because we don't delete enough. And maybe we don't delete enough because we didn't have the tools to let us bring up any revision before.
- lu 17y agoIn vim this is called :earlier.
- byrneseyeview 17y agoC-/
- bokchoi 17y agoIntelliJ has it. It's called local history: http://www.jetbrains.com/idea/features/local_history.html http://www.jetbrains.com/idea/features/local_history.html
- PStamatiou 17y agoNow if only the PNE version was the same version as what etherpad.com gives you...
- mcormier 17y agoObviously there is a trade off on file size here. I'm curious on how the implementation works.
- jules 17y agoText files are small. Even if they saved every keystroke and you type 100 chars/second for 10 hours it's less than 3.5 megabytes.
- steerpike 17y agoI'm incredibly curious as to implementation too. Any of the HN boffins want to breakdown how something like this works?
- joe_the_user 17y agoThe source code of Scintilla shows a good implementation of undo functionality. The only thing you'd need only you have undo was a way to serialize and unserialize the information.
- yan 17y agoCan anyone speculate on at least the class of algorithms they are using?
- mitko 17y agoI wouldn't be efficient wrt space to keep copy of every version of the file. Instead I suppose they keep the actions of the writer(s). Algorithmically it shouldn't be complicated. Maybe they just keep history of what happened in the environment and reproduce it. Maybe they even have some checkpoints saved so that there is no need to reconstruct it from the beginning every time. And maybe they can compress events. Instead of: (type a),(type s),(type k) they have just (type ask) and in case you want better granularity they have it recorded somewhere.
- yan 17y agoI was thinking they're using something like video encoders, where differential changes are stored and every N frames (updates? characters?) it stores a copy of the file again for faster tracking and updating.
- apotheon 17y agoIn traditional cell animation, they'd call the guys who painted the "differential" frames "in-betweeners", and I think (my memory is hazy) the reference cells painted by the master animators are called "index frames".
- wwalker3 17y agoProbably the same as a normal text undo. You store the "actions" the user performs against the document on a stack. Each action is a replacement of one text string in the document with another (where strings can be zero-length and can start and end at any point). Actions can "do" and "undo" themselves against the document trivially. Then to save space, you compress adjacent actions into single actions (e.g. add('a', 0) and add('b', 1) compress to add("ab", 0)).
- nazgulnarsil 17y agoI was initially wonder how etherpad could be useful...now I know.
- deleted 17y ago[deleted]
- adamhowell 17y agoSome constructive criticism about the screencast, because the dry smacking of your mouth while you're talking is really hard to ignore. Drink more water between takes, of course, but also try slicing up a granny apple and having a few bites before and during (that supposedly helps your mouth toe the line b/n too wet and too dry).
- aaroniba 17y agoThanks for the feedback, will keep that in mind for next time!
- Pistos2 17y agoSo does this feature handle history branching and merging? Or are all revisions in one single linear history?
- aplusbi 17y agoSounds like Vim's :later and :earlier commands.
- barrkel 17y agoI find myself wondering about trees: what happens if you "slide" back in time, then create a "new timeline" from that point in the history? Does it get appended to the current timeline? Is it all strictly online? If it also works offline on the client, how does it deal with synchronizing multiple "timelines" created by copying the saved file?
- mcav 17y agoIt looks like it only lets you browse history linearly, rather than edit and branch. (If you can, it isn't immediately obvious.) They say "With our new Time-Slider, you can browse the complete history of a document using a familiar user interface." (emphasis mine) It says nothing about editing.
- joe_the_user 17y agoThe nice way would be to have this work complete independently of undo, so an undo and edit would look like further edits to the machine. But it seem unlikely the edits you did last week between revision 2.3 and revision 2.4 would especially interesting to look at. Perhaps yesterday's edits would useful... What I would like would be an editor which would go-back only on a given selection (cutting and pasting would make implementing such a feature hard but git because clever things...).
- thorax 17y agoThis is actually what I've always wanted in a browser. An intuitive way to do Back/Forward that handles multiple branches. :( I'm really surprised someone hasn't done something good with this in a major browser.
- mattmaroon 17y agoAutomatic versioning with an easy interface: I sure wish Word had this.
- astine 17y agoHow does this differ from 'undo' with a slider bar interface and auto-save?
- mbreese 17y agoFunctionally, it doesn't. You can get the same effect by repeatedly hitting "undo" until you have a blank screen. Then you can play it back using "redo" until you reach the end. The big features are the nice GUI for it and the persistence of the history. This would be like saving each "undo-able" action with the document. Though, you could also do this by using log-style persistence, saving only the accumulated changes and playing them all back to get the final document. I assume thought that their 'bookmarks' are snapshotted complete copies of the document to limit the 'playback' required.
- akkartik 17y agoIt gives undo a 'performance art' aspect. Watching PG write is valuable.
- cpr 17y agoInteresting--just like the Google Wave feature. ;-)
- omouse 17y agoSo automatic version control? Now if only our operating systems would incorporate that...
- absconditus 17y agoTime Machine?
- omouse 17y agonot quite teh same
- puredemo 17y agoThis is still saving. It just saves (onChange).