{"id":151,"date":"2013-05-28T10:49:47","date_gmt":"2013-05-28T10:49:47","guid":{"rendered":"http:\/\/concentus.co.nz\/?p=151"},"modified":"2013-05-29T06:31:51","modified_gmt":"2013-05-29T06:31:51","slug":"design-by-principle","status":"publish","type":"post","link":"https:\/\/concentus.co.nz\/?p=151","title":{"rendered":"Design by Principle"},"content":{"rendered":"<p>Recently, I had the great pleasure of watching a video of <a title=\"Bret Victor video\" href=\"http:\/\/worrydream.com\/\" target=\"_blank\">Bret Victor<\/a>, talking about design and development.\u00a0 It&#8217;s long, but it&#8217;s really brilliant.<\/p>\n<p><iframe loading=\"lazy\" src=\"http:\/\/player.vimeo.com\/video\/36579366\" height=\"281\" width=\"500\" allowfullscreen=\"\" frameborder=\"0\"><\/iframe><\/p>\n<p><a href=\"http:\/\/vimeo.com\/36579366\">Bret Victor &#8211; Inventing on Principle<\/a> from <a href=\"http:\/\/vimeo.com\/cusec\">CUSEC<\/a> on <a href=\"http:\/\/vimeo.com\">Vimeo<\/a>.<\/p>\n<p>The title of the video is &#8220;Inventing on Principle&#8221;, which I think does not actually sell what is a truly jaw-dropping collection of ideas.\u00a0 Bret has resolved a tremendously complex set of computer science problems in a relatively elegant manner, and in my book, that makes him a genius.<\/p>\n<p>Bret is mentally riding a wave that most people can&#8217;t even see, creating a new paradigm in the &#8220;Man-Machine Interface&#8221;, or MMI.\u00a0 If you don&#8217;t know what that means, then you won&#8217;t know what I&#8217;m talking about.\u00a0 But it&#8217;s a BIG problem in fact.\u00a0 This problem is responsible for more lost computer productivity than anything else I can think of, yet most people are barely aware it exists.<\/p>\n<p>If you do know what the &#8220;Man-Machine Interface&#8221; is, then you will be thinking to yourself, &#8220;I thought this problem was solved a long time ago.&#8221;\u00a0 Most people do.\u00a0 It&#8217;s actually a fair indication of just how old and neglected this problem is that it is still mostly referred to as the &#8220;Man&#8221; Machine Interface.<\/p>\n<p>The MMI is the fundamental way in which humans work with computers.\u00a0 It is our &#8220;address&#8221; of the machine, and like our &#8220;address&#8221; of the ball in golf, almost all of our problems in working with computers trace back to the basic ways we use the computer to get the ball in the hole.<\/p>\n<p>We thought this was all taped down in the late 80&#8217;s, with Windows and Apple and OS2 having graphical user interfaces and mice.\u00a0 No, that wasn&#8217;t the end of the story.\u00a0 All that those interfaces did was essentially make computers prettier and more interesting.<\/p>\n<p>Bret says that the very idea of using a mouse, or even a monitor for that matter is not that far an advance from using a teletype machine with printed readouts.\u00a0 Even in Windows, we are still essentially issuing commands and then trying to make sense of the computer&#8217;s literal and moronic responses.<\/p>\n<p>I will try to sum up the essence of his argument in as few sentences as possible, because he does take a while to make his point, and there is a lot to see.\u00a0 What he demonstrates is amazing, so you will still need to watch the video to understand the power and the genius of what he is saying, but the &#8220;Principle&#8221; part is easy.\u00a0 It goes like this;<\/p>\n<p>Currently, everything we do with computers follows a fairly linear progression of interactions.\u00a0 We do some thinking, and then we ask ourselves, &#8220;How do I get the computer to do that?&#8221;\u00a0 We then frame what we want the computer to do in terms that it understands.\u00a0 This might be a command, or a program, or a sequence of actions.\u00a0 We then tell the computer to execute that sequence, and then we wait until it&#8217;s done.\u00a0 When it&#8217;s done, we then check the outcome to see if that is what we want or expected.\u00a0 In our heads, we have an idea, which (critically) we have <em>pre-calculated<\/em>, which we use to test the &#8220;sanity&#8221; of what the computer has done.\u00a0 If it&#8217;s &#8220;sane&#8221;, we&#8217;re done.\u00a0 If it&#8217;s &#8220;insane&#8221;, we rinse and repeat, until we get the outcome we want.\u00a0 We then have our &#8220;job&#8221; done, and we&#8217;re done with the computer.<\/p>\n<p>What Bret is suggesting is that this is absurd.\u00a0 Humans, are in fact doing all of the thinking in this instance.\u00a0 The computer is doing only what it&#8217;s optimized for, literally, mindless number crunching.\u00a0 The computer has abdicated all responsibility or involvement.<\/p>\n<p>This is unacceptable.<\/p>\n<p>Bret is of course right.\u00a0 But the trick is, computers don&#8217;t think, and can&#8217;t understand our intention.\u00a0 So we &#8220;let them off the hook&#8221; as it were, and do all the thinking for them.\u00a0 Bret maintains however that this is not only unnecessary, but it is faulty thinking on our part.<\/p>\n<p>Almost all of the computer interactions that we have take place within fairly narrow &#8220;problem domains&#8221;.\u00a0 With tools as advanced as they currently are, in most instances we only imagine that we are asking the computer to do something that is completely original and novel.\u00a0 In almost all instances however, we follow logical process path-ways which are relatively constrained, or at least familiar, and most of the divergence of our thinking is in fact reducible to a relatively small set of inputs or &#8220;parameters&#8221;.<\/p>\n<p>He illustrates with some fairly complex programming problems that traditionally, to be honest, will be a challenge for most undergrads in a University program; sorting algorithms, the development and testing thereof.\u00a0 In his example, he shows how a programming environment can be made &#8220;aware&#8221; and &#8220;interactive&#8221;, so that it can alleviate enormous swathes of code-compile-run-test-debug, or as we normally call it, the &#8220;iterative cycle of development&#8221;.<\/p>\n<p>This one innovation here is a tremendous breakthrough, and one of the costliest problems in all software development.\u00a0 It has been &#8220;solved&#8221; in a huge variety of ways, through the creation of simpler, higher-level 4GL languages, through new compilers to speed up the compilation portion of this problem (Google tried this), through the creation of &#8220;Test Driven Development&#8221; methodologies, by the production of scripting languages and scaffolding environments, through the endless array of &#8220;frameworks&#8221;, and so forth.\u00a0 I have used them all, but watching Bret&#8217;s little programming environment took my breath away.\u00a0 I believe that his approach will literally revolutionise software development.<\/p>\n<p>Most interestingly of all, and this is where his &#8220;principle&#8221; comes in, he moves from showing how this can work in programming, to showing how it can be done with 2D animation and games, which are very complex 4D constructs.\u00a0 In other words, it appears his principle may actually be universal for human-computer interactions.<\/p>\n<p>Bret&#8217;s ideas, as the title suggests, are about Principle.\u00a0 Designing from Principle, Bret maintains, is what has driven almost all of the great leaps.\u00a0 I would not argue with this.\u00a0 The approach to design that he advocates will create a new way of interacting with computers.\u00a0 It&#8217;s subtle, to be sure, and while it is visually amazing, it is important to conceptually grasp what he is saying.\u00a0 My summation is no substitute for hearing Bret demonstrate it.\u00a0 Once you&#8217;ve seen it, you will cast a far more critical eye on the way we work today.\u00a0 It may take time, but you will no doubt be seeing the influence of these ideas for many years to come.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, I had the great pleasure of watching a video of Bret Victor, talking about design and development.\u00a0 It&#8217;s long, but it&#8217;s really brilliant. Bret Victor &#8211; Inventing on Principle from CUSEC on Vimeo. The title of the video is &#8220;Inventing on Principle&#8221;, which I think does not actually sell what is a truly jaw-dropping <a href=\"https:\/\/concentus.co.nz\/?p=151\" rel=\"nofollow\"><span class=\"sr-only\">Read more about Design by Principle<\/span>[&hellip;]<\/a><\/p>\n","protected":false},"author":3,"featured_media":165,"comment_status":"closed","ping_status":"closed","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":[20,9,12,4],"tags":[21],"class_list":["post-151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-design","category-philosophy-of-computing","category-tools","category-visual","tag-bret-victor"],"jetpack_featured_media_url":"https:\/\/concentus.co.nz\/wp-content\/uploads\/2013\/05\/338064_8618_lego-2.jpg","jetpack_shortlink":"https:\/\/wp.me\/p26f8H-2r","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/posts\/151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=151"}],"version-history":[{"count":14,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/posts\/151\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/posts\/151\/revisions\/162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/concentus.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/concentus.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}