{"id":1653,"date":"2022-11-01T20:16:32","date_gmt":"2022-11-02T03:16:32","guid":{"rendered":"https:\/\/alarmingdevelopment.org\/?p=1653"},"modified":"2023-07-30T12:57:29","modified_gmt":"2023-07-30T19:57:29","slug":"managed-copy-and-paste","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=1653","title":{"rendered":"The Philosophy of Copy and Paste"},"content":{"rendered":"\n<p>I have a new paper out with Tomas Petricek:<a href=\"https:\/\/www.subtext-lang.org\/PAINT22.pdf\"> <\/a><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3563836.3568723\">Interaction<\/a><a href=\"https:\/\/www.subtext-lang.org\/PAINT22.pdf\"> vs. Abstraction: Managed Copy and Paste<\/a>, to appear at <a href=\"https:\/\/2022.splashcon.org\/home\/paint-2022#About\">PAINT&#8217;22<\/a>. [<a href=\"https:\/\/vimeo.com\/778241162\">Demo video<\/a>] I have mixed feelings about this work.<\/p>\n\n\n\n<p>I&#8217;ve been talking about the idea ever since my first Subtext paper, and tried to build it several times, but hit many difficulties. This new theory of structure editing I&#8217;ve been working on seemed to make it possible. So I had to try it. <\/p>\n\n\n\n<p>The idea is philosophically tantalizing. There is a long-running intellectual debate between those who believe in Logic and Formal Methods as an account of language\/cognition\/programming and those who reject those accounts as shallow and inadequate. Wittgenstein famously took both sides. I believe programming offers us for the first time a way to substantiate the anti-logic position with a constructive theory that is more than just counter-examples and anecdotes. Managed Copy and Paste is my primary candidate for an <strong>Informal Method<\/strong> that takes on the Formal Methods.<\/p>\n\n\n\n<p>Functional abstraction is considered to be the essence of programming languages, enshrined in the holy Lambda Calculus. A key benefit of functions is to centralize change. But if we can track copies and propagate changes between them then having a centralized abstraction is more of an ideal end-state than a necessary condition. The key change of perspective is to move from a program as a static crystalline abstraction to programming as an interactive process of continual adaptation. Managed Copy and Paste subverts functional abstraction and could actually be more ergonomic in practice.<\/p>\n\n\n\n<p>The good news is that it works, and my editing theory handles tricky cases like copying copies. Unfortunately I&#8217;m not sure it turns out to actually be more ergonomic. At the very least it needs a lot more UI work. At the moment I&#8217;m afraid it is isn&#8217;t a slam dunk win, and it needs to be a slam dunk to get anyone to seriously consider such a radical change. Bottom line, I love the idea and its philosophical implications, but in practice it may be more of a luxury than a must-have. A vitamin, not a pain killer.<\/p>\n\n\n\n<p>But what do I know? Tomas convinced me to write this paper to at least put the idea out there and see what happens. What do you think?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have a new paper out with Tomas Petricek: Interaction vs. Abstraction: Managed Copy and Paste, to appear at PAINT&#8217;22. [Demo video] I have mixed feelings about this work. I&#8217;ve been talking about the idea ever since my first Subtext paper, and tried to build it several times, but hit many difficulties. This new theory &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/alarmingdevelopment.org\/?p=1653\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The Philosophy of Copy and Paste&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1653","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-qF","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/1653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1653"}],"version-history":[{"count":6,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/1653\/revisions"}],"predecessor-version":[{"id":1678,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/1653\/revisions\/1678"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}