{"id":28675,"date":"2026-08-22T20:46:38","date_gmt":"2026-08-23T01:46:38","guid":{"rendered":"https:\/\/blog.kenperlin.com\/?p=28675"},"modified":"2026-08-22T20:46:38","modified_gmt":"2026-08-23T01:46:38","slug":"from-demo-to-tool","status":"publish","type":"post","link":"https:\/\/blog.kenperlin.com\/?p=28675","title":{"rendered":"From demo to tool"},"content":{"rendered":"<p>Yesterday I posted a demo that showed the creation an interactive world consisting of ray traced boxes. Since that is just a demo, there were limited things you can do with it. Yes it&#8217;s a working demo, but it is not yet a useful tool.<\/p>\n<p>For example, you can&#8217;t use it to add or delete a box, or to change the color of a box. You also cannot assemble your own boxes together to create a higher level composite shape, like I did with the chairs or table or lamp or the people in the scene.<\/p>\n<p>But having a working demo is a crucial early step in creating that sort of fully functional tool. The demo shows the kind of thing such a tool could produce in practice, and it also illustrates the quality level of run-time performance.<\/p>\n<p>Compared with a demo, there are many more design decisions involved in creating a fully functional tool, because there are so many more things that a user is able to do. But going from working demo to working tool is usually a good idea, because the result empowers many people, not just one.<\/p>\n<p>I think I&#8217;ll work on that. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday I posted a demo that showed the creation an interactive world consisting of ray traced boxes. Since that is just a demo, there were limited things you can do with it. Yes it&#8217;s a working demo, but it is not yet a useful tool. For example, you can&#8217;t use it to add or delete &hellip; <a href=\"https:\/\/blog.kenperlin.com\/?p=28675\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;From demo to tool&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/28675"}],"collection":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28675"}],"version-history":[{"count":1,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/28675\/revisions"}],"predecessor-version":[{"id":28676,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/28675\/revisions\/28676"}],"wp:attachment":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}