tag:blogger.com,1999:blog-6700733749948856377.post5007601675767665206..comments2023-03-29T10:12:26.731+02:00Comments on plans within plans within plans: Zero-Latency Internet GUIs Using "Multiple Worlds"Unknownnoreply@blogger.comBlogger7125tag:blogger.com,1999:blog-6700733749948856377.post-90986147624412669752009-09-08T16:38:26.102+02:002009-09-08T16:38:26.102+02:00Thanks, I'll read that (again).Thanks, I'll read that (again).Manuel Simonihttps://www.blogger.com/profile/07840673741485280526noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-73148816348365573272009-09-06T05:25:32.299+02:002009-09-06T05:25:32.299+02:00See Chapter 4 ("Worlds: Controlling the Scope...See Chapter 4 ("Worlds: Controlling the Scope of Side Effects") of Alex Warth's <a href="http://www.vpri.org/pdf/tr2008003_experimenting.pdf" rel="nofollow">Experimenting with Programming Languages</a> paper. I believe that it addresses your use-case, and does so at the language level, so you don't have to explicitly/tediously reify every possible undoable operation.schwajhttps://www.blogger.com/profile/16430403119014021895noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-24827995562977201142009-08-29T05:15:01.350+02:002009-08-29T05:15:01.350+02:00What I meant by "limited" was that it...What I meant by "limited" was that it's applied to an async one client one server system as opposed to multiple readers and writers.<br /><br />It is new as a pattern to be applied to async client/server GUIs. Other web apps kind of do it for some operations (I know GMail does), but it's not systematic and I've never heard it described as a pattern.Vladimir Sedachhttps://www.blogger.com/profile/16250437982151203601noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-13696628206401577222009-08-26T17:00:31.362+02:002009-08-26T17:00:31.362+02:00Also, it just appears to be limited, when in fact ...Also, it just appears to be limited, when in fact it is a very programmable system.<br /><br />In an outliner I am writing, I have the following operations:<br /><br />GetEntryOperation (which immediately yields a future for an entry (outline item), and loads it in the background),<br /><br />PostNewEntryOperation (which posts a new entry, and adds it to the parent's child pointers, i.e. it changes two entries),<br /><br />EditEntryOperation (which updates the contents of an entry),<br /><br />RemoveEntryOperation, and<br /><br />DragAndDropEntryOperation (which changes the child lists of the drag source and drop target entries).<br /><br />So the simplicity of the system makes it possible to have very application-specific operations.Manuel Simonihttps://www.blogger.com/profile/07840673741485280526noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-63783317171041187862009-08-26T13:36:43.292+02:002009-08-26T13:36:43.292+02:00Yeah, it does have similarities. I think that the ...Yeah, it does have similarities. I think that the use for GUIs is novel (or unusual, at least), though.Manuel Simonihttps://www.blogger.com/profile/07840673741485280526noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-20341339794086404422009-08-26T11:35:02.153+02:002009-08-26T11:35:02.153+02:00This is just a limited form of timestamp/multi-ver...This is just a limited form of timestamp/multi-version concurrency control, isn't it?Vladimir Sedachhttps://www.blogger.com/profile/16250437982151203601noreply@blogger.comtag:blogger.com,1999:blog-6700733749948856377.post-41100102029363046522009-08-26T01:58:09.153+02:002009-08-26T01:58:09.153+02:00Maybe you should review what continuations are. Yo...Maybe you should review what continuations are. You can get your full rollback without wasting time infinitely searching into the future.Anonymousnoreply@blogger.com