{"id":62,"date":"2005-02-01T20:17:20","date_gmt":"2005-02-02T03:17:20","guid":{"rendered":"http:\/\/www.nisus.com\/blogs\/?p=62"},"modified":"2005-02-01T20:17:20","modified_gmt":"2005-02-02T03:17:20","slug":"defeasibility","status":"publish","type":"post","link":"https:\/\/nisus.com\/blogs\/defeasibility\/","title":{"rendered":"Defeasibility"},"content":{"rendered":"<p>One of the greatest advantages digital content provides is its immediate malleability. With the right software changes can be made quickly and globally. A hallmark of this flexibility is the great big undo\/redo stack that nearly every piece of software maintains.<\/p>\n<p>An application normally implements undo by recording inverse operations for every action the user takes. For instance, to undo adding 10 to a particular number, you simply subtract 10. When a user deletes a word from a document, the inverse operation is to simply insert that same word back in.<\/p>\n<p>Looking more closely at the requirements necessary to undo the deletion of a word, you can see that you need to know not only what the word was, but where the word was located in the document. At a lower level this location is simply the number of characters that preceed the deleted word. <\/p>\n<p>For instance, imagine a document containing only the text &#8220;ice is blue&#8221;. Note that the word &#8220;blue&#8221; is preceded by a total of 7 characters. So to undo the deletion of the word &#8220;blue&#8221; from the document, we simply insert the word &#8220;blue&#8221; after the 7th character in the document.<\/p>\n<p>Locations are complicated by document content that automatically updates itself. One example might be a timestamp. One second the stamp could read &#8220;Thursday 23:59&#8221;, the next, &#8220;Friday 00:00&#8221;. You can see that the stamp shrunk by 2 characters. Had our imaginary document in the previous paragraph contained a timestamp such as this one, the location we need to reinsert the word &#8220;blue&#8221; at to undo the deletion would have changed. To accommodate undo after a timestamp we need to be able to describe locations in the document like &#8220;the 7th character after the 2nd timestamp&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the greatest advantages digital content provides is its immediate malleability. With the right software changes can be made quickly and globally. A hallmark of this flexibility is the&hellip;<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":0,"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"wp:attachment":[{"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nisus.com\/blogs\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}