<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[CodedShapes]]></title><description><![CDATA[Computational design the way I wish someone had taught me. Practical lessons, real patterns, and resources from years of building. If you want clarity, context, and knowledge, CodedShapes is for you.]]></description><link>https://www.codedshapes.com</link><image><url>https://substackcdn.com/image/fetch/$s_!DATU!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8783c1e-94bb-4979-9c47-889d3da8083d_500x500.png</url><title>CodedShapes</title><link>https://www.codedshapes.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 05 Jun 2026 18:33:46 GMT</lastBuildDate><atom:link href="https://www.codedshapes.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Braden Koh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[bradenkoh@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[bradenkoh@substack.com]]></itunes:email><itunes:name><![CDATA[Braden Koh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Braden Koh]]></itunes:author><googleplay:owner><![CDATA[bradenkoh@substack.com]]></googleplay:owner><googleplay:email><![CDATA[bradenkoh@substack.com]]></googleplay:email><googleplay:author><![CDATA[Braden Koh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Cost of Inheriting Other People's Tools]]></title><link>https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 05 Jun 2026 00:00:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Pzzn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pzzn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pzzn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pzzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2858999,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/200400162?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pzzn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Pzzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f7aa2eb-f2a8-425e-a669-7a8564ad33bd_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most companies have internal tools nobody&#8217;s happy with but nobody will touch.</p><p>You know the ones. The tool sort of works, sort of doesn&#8217;t. The person maintaining it can see what&#8217;s wrong but can&#8217;t fix it. Leadership knows it&#8217;s not great but won&#8217;t approve rebuilding it. So it just sits there, collecting dust or whatever digital tools do when they aren&#8217;t used.</p><h2>The inheritance problem</h2><p>Here&#8217;s how it happens. Someone builds an internal tool. It works well enough that everyone starts using it. It becomes a part of the core process of the company. But then that person leaves.</p><p>The company scrambles because they can&#8217;t afford to lose the tool, so they hand it to someone else. But when you inherit a tool, you don&#8217;t just get the code. You take on all the assumptions, decisions, and constraints that went into building it. And none of that is written down anywhere.</p><p>Sure, if you&#8217;re lucky, you get a handover. Maybe a few meetings where the original developer dumps information on you. Maybe even some documentation (hopefully readable, not 100% AI-generated). But that only tells you <em>how</em> the tool works. You don&#8217;t get the <em>why</em>. Why this approach? What were the constraints? What assumptions were made? What&#8217;s the guiding principle of the entire codebase?</p><p>All of that is tucked neatly in the head of the person who just left.</p><p>So now you&#8217;re stuck reverse-engineering intent from output. AI is really good now but even it can&#8217;t tell you why things are created a certain way. And when you can see problems but don&#8217;t have the context to understand what&#8217;s safe to change, you&#8217;ve got two options.</p><div class="callout-block" data-callout="true"><p><em>Hi, I&#8217;m Braden</em></p><p><em>I help teams be more efficient in the AEC Industry, then share stories about it here. I also have <a href="https://www.codedshapes.com/p/scripository">courses, guides and scripts</a> as part of <a href="https://www.codedshapes.com/p/start-here">CodedShapes Pro</a><br>Check it out if that sounds like you.</em></p><p><em>If you&#8217;re new to CodedShapes, welcome! You might enjoy these:</em></p><ul><li><p><em><a href="https://www.codedshapes.com/p/how-to-know-if-your-workflow-is-actually">How to know if your workflow is actually worth automating</a></em></p></li><li><p><em><a href="https://www.codedshapes.com/p/stop-using-grasshopper-for-everything">Stop using Grasshopper for everything</a></em></p></li><li><p><em><a href="https://www.codedshapes.com/p/applying-computational-design-where">How to apply computational design to your projects</a></em></p></li></ul></div><h3>Fully Rebuild</h3><p>Pitch a full rebuild. You put together a business case with a timeline, a budget and reasons why starting from scratch is better. It&#8217;s the whole &#8220;I can do this better and 10x cheaper&#8221; attitude.</p><p>But leadership weighs the cost of rebuilding something that &#8220;already works but &#8216;better&#8217;&#8221; and usually the answer is no.</p><h3>Add to it</h3><p>Which leads to the more common option of just adding to it. No refactor, just keeping adding on to the existing codebase. And soon enough it becomes a house of cards because the <em>intent and context</em> of the tool was never communicated.</p><p>You&#8217;re too scared to modify the core, so you build on top of it. Workarounds, band-aids, adapters, all just to keep the tool running. But each one makes the tool a bit more fragile, a bit harder to maintain.</p><p>It&#8217;s like a garage you&#8217;re afraid to clean out, it&#8217;s easier to just keep stacking boxes than to deal with what&#8217;s actually inside. But eventually, you&#8217;re going to run out of space and have to deal with the contents.</p><h2>Why this keeps happening</h2><p>My theory is that it&#8217;s a misplacement of our attention.</p><p>People only care about a tool twice: <strong>when it&#8217;s being built</strong> and <strong>when it breaks</strong>. Everything in between is invisible.</p><p>The building phase gets all the attention. There&#8217;s a budget, momentum and excitement in the air. There&#8217;s constant updates on the tool and when it launches, people clap for it because it works and it&#8217;s <em>finished</em>.</p><p>From that point on, no one actively working on it and there&#8217;s no budget for maintenance. Maintenance doesn&#8217;t look like work. You can point at a new feature, a launch, a demo. But you can&#8217;t point at &#8220;keeping something running that everyone assumes just runs.&#8221;</p><p>The reality is that there&#8217;s no &#8220;finish&#8221; when it comes to tools. They still need to be documented, updated and maintained.</p><p>Part of me understands this because if you think about it from leadership&#8217;s perspective. They approved the budget. They gave someone time to build it and they&#8217;ve rolled it out. Success. The tool is done, so it must be working. Move on to the next thing.</p><p>Maintenance is not a full time job and it&#8217;s harder to justify it in your timesheet. Which is why it&#8217;s often just squeezed in with the other more pressing things. Well, until it breaks, then everyone rushes you to fix it.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply it to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><h2>What actually fixes this</h2><p>The real fix here is the structure around it. Software developers, whose full time job is to deliver products to customers, have figured this out. And we can learn from them.</p><p><strong>Document the assumptions, not just the code.</strong> Most handover docs explain <em>how</em> a tool works. What&#8217;s missing is <em>why</em>. Why this approach? What were the constraints? What depends on what? When assumptions are visible, the next person can make informed decisions instead of guessing. This is hard to do after the tool is done, the best way is to document as you build.</p><p><strong>Give the maintainer real authority.</strong> If someone&#8217;s responsible for a tool, they need the power to act on what they see. That means either decision-making authority over the tool&#8217;s direction, or a clear escalation path that actually leads somewhere.</p><p><strong>Treat tools as living systems, not finished products.</strong> A tool isn&#8217;t done when it launches. It&#8217;s done when it&#8217;s decommissioned. Everything in between is active work that needs to be planned for, budgeted for, and respected as real work.</p><p>None of this is glamorous and can feel like a waste of money. But it&#8217;s the key to long lasting tools beyond a single developer.</p><h2>The hard part was never building it</h2><p>Building an internal tool is exciting. There&#8217;s momentum, there&#8217;s a vision, there&#8217;s someone who knows exactly what they&#8217;re doing and why.</p><p>But that moment is temporary. The person leaves and the tool keeps running on assumptions that no one knows.</p><p>The hard part was always what comes after. Making sure the tool outlives the person who built it. Making sure the next person who touches it has the context to make good decisions.</p><p>If any of this sounds familiar, that&#8217;s because it&#8217;s happening at most companies right now. Somewhere in your organization, there&#8217;s a tool nobody&#8217;s happy with but is critical to how the company operates. What you need is a way to ensure continuity.</p><p>That&#8217;s the kind of problem I help teams solve. Not just building the tool, but ensuring that it doesn&#8217;t fall apart when the people change. If you want to talk about what that looks like for your team, reply to this email or book in a call with the button below.</p><div class="pullquote"><p>If you&#8217;re thinking about bringing computational design into a project, I&#8217;m happy to talk through how you&#8217;re framing the problem and if it&#8217;s the right solution.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://calendly.com/braden-codedconstructs/30-minute-chat&quot;,&quot;text&quot;:&quot;Chat With Me&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://calendly.com/braden-codedconstructs/30-minute-chat"><span>Chat With Me</span></a></p></div><p>Thanks for reading.</p>]]></content:encoded></item><item><title><![CDATA[Modelling The Winton Guest House Part 3]]></title><description><![CDATA[Part 3 / 4 of modelling the winton guest house]]></description><link>https://www.codedshapes.com/p/modelling-the-winton-guest-house-3f8</link><guid isPermaLink="false">https://www.codedshapes.com/p/modelling-the-winton-guest-house-3f8</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 02 Jun 2026 02:00:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8G0O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8G0O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8G0O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8G0O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3060676,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198383348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8G0O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!8G0O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5fbacc-398a-4947-b346-a4054ca66ba1_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is part 3 of the Winton Guest House walkthrough. The series:</p><ul><li><p>Part 1: Modelling the Fireplace, Living Room and Bedroom</p></li><li><p>Part 2: Modelling the Garage and Loft</p></li><li><p>Part 3: Modelling the Second Bedroom (this article)</p></li><li><p>Part 4: Script Organisation</p></li></ul><div><hr></div><p>If you&#8217;ve read through <a href="https://www.codedshapes.com/p/winton-guest-house-part-2">Part 2</a>, you now have five of the six structures in your script.</p><p>Hopefully, you&#8217;ve been building along and giving it a go yourself. Either ways, it&#8217;s time to show you how I built the last one.</p><p>Before we dive in, a reminder: the best way to learn is to try it and be uncomfortable on your own, then use this guide as a reference against your own. That&#8217;s the whole point of these guides.</p><p>Okay, without further delay, let&#8217;s start.</p>
      <p>
          <a href="https://www.codedshapes.com/p/modelling-the-winton-guest-house-3f8">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[If Scripts Save Us Time, Why Am I Building the Same One for the 15th Time?]]></title><description><![CDATA[Seriously though, aren't we meant to be more efficient]]></description><link>https://www.codedshapes.com/p/if-scripts-save-us-time-why-am-i</link><guid isPermaLink="false">https://www.codedshapes.com/p/if-scripts-save-us-time-why-am-i</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 28 May 2026 02:00:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SUQx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SUQx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SUQx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SUQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2740831,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198661895?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SUQx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!SUQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa97205bc-9120-4a16-b0bd-310a35c03de4_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Fifteen script versions and 26 versions of the model.</p><p>No, not fifteen variations. Fifteen <em>different</em> scripts. And, 25 freaking new models. Each one was created because nothing could be locked down and &#8220;something more important&#8221; always kept coming up.</p><p>Ten months ago, it was the material, we changed from timber to steel. Then, the start of this year, we took out the bracing between the modules. Just last month, we went from 6 columns to 24 then back down to 20.</p><p>The best part? We were delivering in a construction stage. Which is typically when things should have been decided. We should be documenting for the actual construction not deciding on parameters.</p><p>Yes, it&#8217;s a complex project with many moving pieces. Yes, things change, we get new requirements. But somewhere around script number 8, we were no longer iterating, we were starting over again. And again. And oh, again. Oh, wait and again.</p><h2>The false promise of &#8220;it&#8217;s just a script&#8221;</h2><p>This client had been sold the dream that with scripts, you move fast even while changes were happening. You know, explore options, generate variations, instant turnaround, that sort of thing. And that&#8217;s technically not wrong. But it only works if the <em>core logic of the workflow stays the same</em>.</p><p>The videos you see on LinkedIn about sliding parameters and getting new models is true. But it&#8217;s <a href="https://open.substack.com/pub/bradenkoh/p/this-is-why-they-dont-trust-us?r=yraxj&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">not the full story</a>.</p><p>There are an infinite number of ways to solve any given problem. So, to say a script can handle all those changes is an unfair assumption. <a href="https://www.codedshapes.com/p/computational-design-isnt-magic?r=yraxj">It&#8217;s a good tool but it&#8217;s not magic.</a></p><p>When you see a model being generated by a script, the output might look the same, but the process is not. Which is why when someone keeps introducing changes without knowing the impact, it can mean the difference between sliding a parameter and rebuilding the entire script. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s8k3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s8k3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s8k3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png" width="1451" height="837" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:837,&quot;width&quot;:1451,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56363,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198661895?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s8k3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!s8k3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa89bc5-8a1a-4b97-ab72-dd441adfe709_1451x837.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Same end model, different build process</figcaption></figure></div><p>It&#8217;s why I focus so much on the <em>intent</em> of the script rather than <a href="https://www.codedshapes.com/publish/post/190270435?r=yraxj&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">the logic of it</a>. With AI and tools like Grasshopper, it&#8217;s now possible to solve problems any way you like. What then makes a good workflow is one that focuses on the key principles of the problem. It&#8217;s one that aligns to the parameters that are important for the project.</p><p>If you&#8217;re building a tower and the floor area is important, the design your script around that. Or if you know the client&#8217;s data is never clean, trying to create a layer between them and the tool is safer than processing their raw data.</p><p>The point here is to identify the <em>overall behaviour of the problem and distill that into rules for the workflow</em></p><p>There are a million and one parameters that you can tweak to solve a problem. You cannot create something that accounts for all of them. So, a good digital workflow is based on the vital ones and uses the rest as <em>assumptions</em>.</p><div class="callout-block" data-callout="true"><p><em>Hi, I&#8217;m Braden</em></p><p><em>I help teams be more efficient in the AEC Industry, then share stories about it here. I also have <a href="https://www.codedshapes.com/p/scripository">courses, guides and scripts</a> as part of <a href="https://www.codedshapes.com/p/start-here">CodedShapes Pro</a><br>Check it out if that sounds like you.</em></p><p><em>If you&#8217;re new to CodedShapes, welcome! You might enjoy these:</em></p><ul><li><p><em><a href="https://www.codedshapes.com/p/how-to-know-if-your-workflow-is-actually">How to know if your workflow is actually worth automating</a></em></p></li><li><p><em><a href="https://www.codedshapes.com/p/stop-using-grasshopper-for-everything">Stop using Grasshopper for everything</a></em></p></li><li><p><em><a href="https://www.codedshapes.com/p/applying-computational-design-where">How to apply computational design to your projects</a></em></p></li></ul></div><h2>Not all assumptions are equal</h2><p>So, if the problem is that changing assumptions breaks scripts, does that mean nothing can change? No. Things change all the time. That&#8217;s the very nature of projects.</p><p>But not all changes carry the same weight.</p><p>Any changes to the <em>key principles</em> will require a rebuild but &#8220;small&#8221; changes can be incorporated with little to no impact. The idea is to think of workflow variables as &#8220;hub and spoke&#8221;. Changing any &#8220;hub&#8221; parameters has a huge impact, possibly a rebuild. Changing a &#8220;spoke&#8221; parameter should ideally be accounted for or have little impact.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lB8d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lB8d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lB8d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png" width="1451" height="837" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:837,&quot;width&quot;:1451,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:213579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198661895?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lB8d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!lB8d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c29dff2-5915-4935-b8c0-a20c5755c642_1451x837.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This was when the parameters were well defined. No changing of the columns or material. It was simply, "what's the best plate shape that will make this work</figcaption></figure></div><p>The point here is that we can&#8217;t have an infinitely flexible workflow if we want to make our (normally very) tight deadlines.</p><p>So the framework makes sense. But most of the time, no one knows which changes actually cause the most impact. The person asking for the change <a href="https://open.substack.com/pub/bradenkoh/p/how-do-you-solve-a-problem-someone?r=yraxj&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">doesn&#8217;t know they&#8217;re touching something foundational</a>. And the person who built the script never made that distinction visible. And to make matters worse, the person that accepts the change from the client isn&#8217;t always the person that built the script.</p><h2>But it&#8217;s really a communication problem</h2><p>That&#8217;s what this really comes down to. A gap between what the script assumes and <a href="https://open.substack.com/pub/bradenkoh/p/it-takes-two-to-build-the-right-thing?r=yraxj&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">what everyone else understands</a> about those assumptions.</p><p>When I look back at this project, the pain wasn&#8217;t that things changed. It&#8217;s that we didn&#8217;t have a shared understanding of <em>the impact of changes before it was accepted</em>. No one knew what was priority and what other teams were dealing with. <em>There was a lack of clarity</em>.</p><p>The ideal scenario would have been, when there&#8217;s a change, everyone should know what that means for both a timeline and a budget point of view.</p><p>But even though it&#8217;s simple to say, it&#8217;s not easy to achieve. In complex projects, there are many teams and some politics that get in the way of clear communication. And understanding the downstream effects can be hard. A director I once worked with put it well:</p><p>&#8220;On a project, we&#8217;re building the plane and flying it at the same time&#8221;</p><p>It&#8217;s hard to understand the effects of our changes because we are trying to make sense of things at the same time.</p><p>But we have to try because the alternative is timeline delays, very late nights and budget blowouts. Putting in the work to clarify all assumptions and effects is one of the most valuable things you can do on a project.</p><h2>So, how do we get better at this ?</h2><p>The best way I have found is to communicate everything, and I do mean <em>everything</em>. And again, easy to say but much harder to achieve in practice.</p><p>It means letting your manager know what assumptions you are making in the script and why.</p><p>It means letting the client know your modelling process even when they think it&#8217;s not relevant.</p><p>And it means that every time there&#8217;s a change, you need to bring up why and <em>whether the ripple effect is worth it</em></p><p>Currently, there is no good way to communicate all of this. People don&#8217;t read the documents being sent. Some meetings are so long and drawn out that most people don&#8217;t even pay attention. Even emails get conflated with people defending their own work or assigning blame.</p><p>These days I use a combination of Figma boards, live documents and AI meeting transcripts to try and keep everyone on the same page. I bring these to every meeting. I&#8217;ve even sent notes from internal meetings to clients explaining how their change will impact our timelines. That was an uncomfortable thing to do but it&#8217;s part of being open and communicating more. The one thing that I have seen some other companies do is play around with AI knowledge agents to help with this.</p><p>But, it&#8217;s still messy, most projects are. And half the time, I&#8217;m reorganizing everything while trying to keep up with the project itself. But it&#8217;s better than having all those assumptions in your head and then having them sprung on you at the worst time. And how you do it isn&#8217;t really the point. The <em>conversation</em> and clarity is the point. The act of sitting down and saying &#8220;if this changes, here&#8217;s what it affects&#8221; is extremely valuable.</p><p>And it doesn&#8217;t prevent changes. It just makes the cost of those changes visible <em>before</em> someone assumes it&#8217;s a quick update and agrees to it.</p><h2>Communication is always messy</h2><p>If you are extremely busy, communicating your needs and impacts is hard. It&#8217;s likely not even on your todo list. Leveraging AI has been helpful but it still requires your time and when your deadline is tomorrow, I know every minute counts.</p><p>With so many moving pieces, different teams involved and let&#8217;s be honest, politics. Being transparent about everything is almost impossible. And trying to do this within a live project time frame makes it even harder.</p><p>But this communication debt is something that we don&#8217;t talk about enough. We spend so much time learning the tools, Grasshopper, Dynamo, Python, and not enough time learning how to make the assumptions behind our work visible to everyone else.</p><p>A vital skill here is knowing which parts of the project hold everything else up, and making sure the people around you know that too.</p><p>Fifteen scripts taught me that. Hopefully you won&#8217;t need that many.</p><p>If this sounds familiar, or you&#8217;re in the middle of a project right now, I&#8217;d love to hear about it. Reply to this email, or if you want help thinking through how your workflows handle change, <a href="https://calendly.com/braden-codedconstructs/30-min">book a discovery call</a>.</p><p>As always, thank you for reading.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply this to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Modelling The Winton Guest House Part 2]]></title><description><![CDATA[Part 2 / 4 of modelling the winton guest house]]></description><link>https://www.codedshapes.com/p/modelling-the-winton-guest-house</link><guid isPermaLink="false">https://www.codedshapes.com/p/modelling-the-winton-guest-house</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 26 May 2026 02:00:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TA3j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TA3j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TA3j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TA3j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3060891,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198382483?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TA3j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!TA3j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a964bce-1bc3-42d2-854e-d50d22d4d9d0_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is part 3 of the Winton Guest House walkthrough. The series:</p><ul><li><p>Part 1: Modelling the Fireplace, Living Room and Bedroom</p></li><li><p>Part 2: Modelling the Garage and Loft</p></li><li><p>Part 3: Modelling the Second Bedroom (this article)</p></li><li><p>Part 4: Script Organisation</p></li></ul><div><hr></div><p>If you&#8217;ve read through <a href="https://www.codedshapes.com/p/winton-guest-house-part-1">Part 1</a>, you now have the <em>Fireplace</em>, <em>Chimney</em>, <em>Living Room</em> and <em>Bedroom</em> in your script.</p><p>Hopefully, you&#8217;ve read the <a href="https://www.codedshapes.com/p/the-winton-guest-house-modelling">the brief</a> and have been trying to model this on your own too.</p><p>Before we dive in, a reminder: the best way to learn is to try and solve it on your own, then use this guide as a reference. That&#8217;s the whole point of these guides. To give you a problem / project to anchor your own learning to.</p><p>Okay, without further delay, let&#8217;s start.</p>
      <p>
          <a href="https://www.codedshapes.com/p/modelling-the-winton-guest-house">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[I Built It for the Team. Somehow I Ended Up Owning It.]]></title><description><![CDATA[Creating a tool and owning it are two separate things]]></description><link>https://www.codedshapes.com/p/i-built-it-for-the-team-somehow-i</link><guid isPermaLink="false">https://www.codedshapes.com/p/i-built-it-for-the-team-somehow-i</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 21 May 2026 02:00:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bJmO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bJmO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bJmO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bJmO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2933353,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198263376?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bJmO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!bJmO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a99b74b-d500-4840-b345-9b397eb9217b_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m on a call with Jack. We&#8217;re going through the analysis model for what seems like the 300th time.</p><p>&#8220;Try reducing the size there, oh and we need to ensure we have the right beam releases. Can you also just put in a simple truss here?&#8221;</p><p>I am frantically clicking away trying to keep up with the changes that &#8220;we&#8221; want to make to the model. After about 15 minutes of silence (which is a very long time on a call), I re-run the model and Jack unmutes himself.</p><p>&#8220;Okay, we are getting closer. Can you try reducing the loads on level 10 to see what happens ? Also, can you add a new freedom case in to mimic the stiffness of the floors ? Let me give you the spring values&#8221;</p><p>So, I do what he asks and this time, 20 minutes go by before we look at the model and try some other modifications again. None of these are big changes, they are Jack experimenting with different analysis parameters to get the model to work. It&#8217;s actually the kind of thing I do with my scripts and programs. He needs to <em>see</em> the results of all these changes to get a sense of the model and to know what to try next.</p><p>So, this is what <a href="https://www.codedshapes.com/p/we-need-to-stop-asking-llms-to-do?r=yraxj">an LLM feels like</a>.</p><p>Nothing I do here is computational. Yes, I am learning a lot about what makes a good structural analysis model but <em>is that really the best use of my time here?</em> It might help me write better scripts in the future but right now I&#8217;m just clicking where I&#8217;m told to.</p><p>Jack knows exactly what he wants. He has the structural expertise, the intuition for what to test. . So why isn&#8217;t Jack just doing this himself?</p><p>Well he has no idea how to use the current program, so I become his hands because I made the script that created the model. And aside from this inefficient way of working, there are two things going on here and they&#8217;re easy to confuse because they look the same from the outside.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">CodedShapes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber. </p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>The wrong analysis program</h2><p>This entire thing started because of the complexity of the model. Jack reached out because the geometry was impossible to do by hand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nqWo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nqWo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 424w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 848w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 1272w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nqWo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png" width="1456" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:674717,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198263376?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nqWo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 424w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 848w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 1272w, https://substackcdn.com/image/fetch/$s_!nqWo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff484b6-79ab-43eb-a386-550fa616b794_2289x1267.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I am aware of how overwhelming it looks but it was a very complicated model</figcaption></figure></div><p>So, I decided that Grasshopper was the best tool to generate the geometry. And at the time, the only analysis program that would work well with Grasshopper was a program called Strand7.</p><p>But, Jack was not a good Strand7 user. He knew how to extract data from it and spin the model around, but he could not use it well. I, on the other hand knew the program quite well because of it&#8217;s connection to Grasshopper.</p><p>Jack reassured me a few times that the analysis we needed to run was simple. It was a proof of concept and that everything could be done through the script. Not manual changing or prodding required. What he needed from me was an understanding of the geometry and some basic loading given his client&#8217;s constraints.</p><p>Well, the client loved it. But we never change analysis models. The Strand7 model is now really complex. Packed to the brim with freedom cases, restraints, beam end releases, etc. All done manually on the analysis side. In fact, there was little to no Grasshopper work anymore because all the changes and additions we made to the model were normal structural engineering changes.</p><p>It was at this point that we should have paused and re-evaluated if this hybrid of computational and manual approach was still the most effective way of working. Where it&#8217;s no longer a proof of concept but rather a fully featured structural analysis model that should be managed by someone else.</p><p>Because the amount of manual changes that Jack could have done on his own has surpassed the benefit of using Grasshopper. In fact, it got easier to define a split between scripting and manual fixes because we moved from geometry to analysis as the project evolved.</p><p>By planning that, we would have come up with a much more efficient way of working. Not to mention the experts in analysis would be able to make changes to the model without having to contact me all the time. I wouldn&#8217;t have been on hour long calls with Jack just for him to tell me where to click and what numbers to put in.</p><p>And if we ever wanted to bring some scripting functionality back in, I&#8217;m sure we would have found a way with Grasshopper. Maybe creating the model in Rhino, then importing it in and applying the loads. At this point, we should have stopped and re-evaluated our options and what it was costing us by staying with this workflow.</p><h2>Accidental ownership</h2><p>The second cascading problem to this is me &#8220;owning&#8221; the model.</p><p>Because it came from a Grasshopper script, everyone was asking me to make changes and review them. Me, the person that hasn&#8217;t done a lot of structural engineering work and has pretty much rote learned it by making tools for people. Combine that with the fact that Jack can&#8217;t use the program well and you have now made a <em>bottleneck</em>. You now have someone under qualified making changes in critical areas.</p><p>The <em>ownership</em> of the model became a by-product of using a script and from choosing the wrong analysis program. It&#8217;s the part that bothers me the most because accidental ownership is the kind that&#8217;s hardest to undo. I can&#8217;t one day just say that I am not making changes anymore.</p><p>And this isn&#8217;t a one-off. I&#8217;ve seen the same thing happened a few times. There was this one tool that I build in Grasshopper to run vibration checks and suddenly, I am the &#8220;vibration guy&#8221;. Everyone came to me for help on why their models weren&#8217;t working or why they didn&#8217;t get the results they wanted.</p><p><em>just because I made it, I suddenly own the space surrounding it</em></p><p>In both cases, I ended up owning something that should live with someone else.</p><h2>Hindsight, and the uncomfortable conversation</h2><p>Maybe it&#8217;s the hindsight bias talking, but I should have pushed back more. I should have had this conversation with Jack and ask more questions about <em>ownership</em> and <em>process</em>. Things like who makes the manual changes, should we change programs, or do we need another engineer to help us.</p><p>It would have meant asking questions he might not have been ready for or might not have known the answer to yet. &#8220;How complex do you think the analysis side will get?&#8221; is not a question anyone wants to hear when they&#8217;re just trying to get the geometry into a model.</p><p>And the real skill is knowing when to introduce friction. When to set boundaries with people.</p><p>Pushing back when you&#8217;re given work is uncomfortable in the moment. Especially when you always want to go a good job with people. Pushing back creates the friction that slows things down when everyone just wants to get started. It&#8217;s hard to be that reason things aren&#8217;t moving as quickly.</p><p>But the alternative is hundreds of long calls where I am just clicking where Jack is telling me to.</p><p>When you&#8217;re too busy to set boundaries, that&#8217;s when you need boundaries the most.</p><p>If you&#8217;re about to kick off a project and you&#8217;re not sure how automation or computational stuff will fit in then that&#8217;s the kind of thing I help people think through. Reply to this email or <a href="https://calendly.com/braden-codedconstructs/30-minute-chat">book a discovery call</a>. Even if it&#8217;s just to talk it through and nothing comes out of it, the conversation is free.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply computational design to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Modelling The Winton Guest House Part 1]]></title><description><![CDATA[Part 1 / 4 of my modelling guide on the Winton Guest House]]></description><link>https://www.codedshapes.com/p/winton-guest-house-part-1</link><guid isPermaLink="false">https://www.codedshapes.com/p/winton-guest-house-part-1</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 19 May 2026 03:00:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DkTG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DkTG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DkTG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DkTG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3018761,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/198252997?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DkTG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!DkTG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c7a8712-8dc4-4779-98b5-36f976081e12_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This is part 1 of the Winton Guest House walkthrough. The series:</p><ul><li><p><a href="https://www.codedshapes.com/p/the-winton-guest-house-modelling?r=yraxj">The Brief</a></p></li><li><p>Part 1: Modelling the Fireplace, Living Room and Bedroom (this article)</p></li><li><p>Part 2: Modelling the Garage and Loft</p></li><li><p>Part 3: Modelling the Second Bedroom</p></li><li><p>Part 4: Script Organization</p></li></ul><div><hr></div><p>If you&#8217;ve read through <a href="https://www.codedshapes.com/p/the-winton-guest-house-modelling">the brief</a>, you now have everything I had when I first started. The reference images, a sense of where the six structures sit in relation to each other, and my modelling approach.</p><p>Hopefully, you&#8217;ve given it a shot or are in the process of trying it yourself.</p><p>Either way, it&#8217;s time to show you how I built this.</p><p>Before we dive in, a reminder of the principle I want to keep coming back to throughout this whole guide: the best way to learn is to try it and be uncomfortable on your own, then use this modelling guide as a reference against your own. The whole point of these guides is to give you context and a problem to anchor your learning.</p><p>Okay, without further delay, let&#8217;s start.</p>
      <p>
          <a href="https://www.codedshapes.com/p/winton-guest-house-part-1">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[You'll Never See Me Saying Automation Is Easy]]></title><description><![CDATA[Even though I am a firm believer of technology]]></description><link>https://www.codedshapes.com/p/youll-never-see-me-saying-automation</link><guid isPermaLink="false">https://www.codedshapes.com/p/youll-never-see-me-saying-automation</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 14 May 2026 02:00:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vjJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vjJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vjJM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vjJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2883894,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/197183123?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vjJM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!vjJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40db4567-bb10-4904-afa3-41959b2b06f0_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For some reason, I am getting a phone call from Jay.</p><p>He&#8217;s a client I&#8217;ve built a few Dynamo scripts a couple of months ago. The project went well. We solved all the problems, tested the scripts and trained the team on how to use it. I even wrote some documentation for them too.</p><p>You know what, I think he&#8217;s got a new project for me. You know what they say, when you do good work, good work finds you.</p><p>I picked it up and heard his voice come through.</p><p>&#8220;Hey Braden, the scripts you made for us aren&#8217;t working anymore. I swear we followed everything you showed us in the workshop and it&#8217;s been working well but it&#8217;s now broken.&#8221;</p><p>Well, that&#8217;s not the call you want on a Thursday afternoon.</p><p>&#8220;That&#8217;s weird,&#8221; I said. &#8220;Are you free for a Zoom call in about an hour? Share your screen and we can go through it ?&#8221;</p><p>&#8220;Yep. See you then.&#8221;</p><p>So I finish what I was doing and jumped on the call. Jay shared his screen and showed me what was happening. He&#8217;d open the model, open the Dynamo script, hit run, and Revit would freeze and soon after, it would crash. </p><p>The perfect problem, no error message or warning, just&#8230; dead. </p><p>Maybe it was the model, so we tried again on a blank model. Same thing. A freeze and then crash. Okay, maybe it was the one of the plugins they had installed. Maybe it was&#8230;. </p><p>This cycle of testing a hypothesis, then crash, then another hypothesis turned the call into 2 hours of agony. For each hypothesis, we had to wait for Revit to restart and well&#8230; nothing is more awkward than sitting with a client in silence <s>hoping</s> praying that it will work the next time.</p><p>To make things worse, all the hypothesis didn&#8217;t work. So, instead of wasting more of Jay&#8217;s time. I asked him to send me the model and the script so I could debug it on my end. At least, I didn&#8217;t have to keep telling Jay where to click. But he needed this done by Friday and it&#8217;s Thursday afternoon. </p><p>Once I got the files, I opened the model, loaded the script and hit run.</p><p>Do you know what&#8217;s worse than things breaking for clients?</p><p>It working for you. </p><p>I didn&#8217;t have any problems, the script ran fine for me. No crash or freezing on my end.</p><p>I ran all the scripts across every relevant model I could find from our testing period. And it all worked, nothing was wrong. Maybe there was a setting on Jay&#8217;s computer that was causing it. So I shut Revit down, wanting to send him another email, requesting for a call. Mind you, it was 6pm on a Thursday.</p><p>That&#8217;s when I noticed Revit had an update waiting.</p><p>So, I updated it and just just to rule it out, I ran the script again. </p><p>And&#8230;.. shit. </p><p>That was the catch. It froze and crashed, just like on Jay&#8217;s computer. </p><p>It was Revit (If you know Autodesk, this isn&#8217;t surprising). An update had broken something in Dynamo. I then spent the night re-writing all the scripts to account for whatever the update had changed. That just meant starting from scratch again and trying to copy the functionality of the old scripts.</p><p>It took me about four hours and two cups of coffee to get it done. But on Friday morning, I jumped on another call with Jay and his team. I shared my screen, showed them the new scripts and explained what caused the issue. We tested it on their models, walked through it together, made sure everything was working.</p><h2>The thing nobody tells you</h2><p>When I called Jay a couple of weeks later to check in, he was sympathetic to what happened. He was forgiving because he had used the scripts before and it had always pulled through for his previous projects. But when I pushed a little more in the conversation, there was some hesitation.</p><p>&#8220;So what happens with the next Revit update? Should I call you first? Should we test it on one computer before asking everyone to update? Maybe we&#8217;ll just have to run this with a bit more time to spare next time&#8221;.</p><p>These are questions you start asking <em>after</em> you&#8217;ve been burned. When you&#8217;re less confident in the tool delivering well. Before that Thursday, Jay didn&#8217;t think about any of this. Now he&#8217;s worried that an update might break the scripts again. He&#8217;s worried that he and his team have to stay late if I wasn&#8217;t available.</p><p>And if I were Jay, I&#8217;d feel the same way. You start second guessing things. Maybe things aren&#8217;t as solid as they seem. Maybe next time you run the scripts, you try a small portion first. Or maybe you save a version of Revit on a computer and never update it.</p><p>And even on my side, it&#8217;s a horrible feeling. Apart from the loss in trust, I didn&#8217;t get paid for that extra time (and stress). We were just lucky that I was relatively free that day to handle this emergency fix. </p><p>It&#8217;s a lose-lose situation, I stay up late fixing something that was stable before and Jay loses some trust. All because Revit decided to push an update. </p><h2>The reality of building on another platform</h2><p>But no amount of testing and planning could have predicted this. Dynamo relies on the Revit API, and the Revit API changes when Autodesk decides it changes. </p><p>That&#8217;s the reality of building on another platform. </p><p>And that&#8217;s the part when I don&#8217;t see people talking about, the maintenance of these tools. </p><p>No single tool is a once-off investment. Things in the world keep changing. Revit will update again and that means, some tools will break. The skill then is how you handle the change, not trying to prevent it. That&#8217;s why I always say that maintaining a tool is just as important as building it.</p><p>What should have happen with Jay, is that when Revit releases a new update, we re-test the scripts again in a non-project timeline. Ensuring that things are still working, if it&#8217;s not, then we plan again about how to best fix the scripts and maybe add any missing features we couldn&#8217;t before.</p><h2>Why I take this so seriously</h2><p>I&#8217;ve been on the other side of this too. <a href="https://www.codedshapes.com/p/this-is-why-they-dont-trust-us">I&#8217;ve depended on tools that have failed me in critical moments.</a> When no one is around to help and you have something to deliver in 4 hours, you plow through it manually because it has to be done. </p><p>So even though I make the tools, I understand why people are hesitant to adopt new ones. It&#8217;s horrible, being left alone when something you depend on breaks. But the answer is to not avoid tools, it&#8217;s to be on top of the changes and handle them well. </p><h2>So what do you actually do about it?</h2><p>During development, I still test things thoroughly. I still write documentation and run workshops so everyone knows how things work and why. By the time I hand something over, it&#8217;s been put through its paces. Everyone that I work with should have a good understanding of the behavior of the tool. In fact, they should feel confident in it&#8217;s robustness and quality.</p><p>But testing, in all its glory, cannot simulate a Revit update that hasn&#8217;t been released yet. It can&#8217;t predict which API function Autodesk will change six months from now.</p><p>And that&#8217;s exactly why I offer what I call Hypercare support. It&#8217;s a retainer for small features, changes and any critical bugs that come up <em>after</em> deployment. It gives you someone to call when things go wrong, someone who already knows the scripts, knows the dependencies, and can diagnose the problem without starting from scratch.</p><p>I do this because I can&#8217;t predict when a Revit update is going to break something. Nobody can. But I <em>can</em> make sure that when it does, I&#8217;m at least available to hop on and fix that error.</p><p>If I&#8217;d scoped that into Jay&#8217;s original engagement, the Thursday night rewrite wouldn&#8217;t have been unpaid. And more importantly, Jay wouldn&#8217;t have spent two hours watching his screen restart wondering if he&#8217;d made a bad investment. He would have just called me, and we&#8217;d have handled it. Not to mention, everyone would have been less stressed.</p><p>That&#8217;s why you&#8217;ll never see me saying automation is easy. Because the building part is &#8220;easy&#8221;. It&#8217;s the part everyone on LinkedIn shows. But hardly anyone shows what comes after that. The maintenance, the support and bug fixes when other stuff changes. </p><p>Okay, that&#8217;s it from me. </p><p>If you want to talk through whether automation makes sense for your project, or if you&#8217;ve already built something and want to make sure it&#8217;s supported, I&#8217;m always happy to chat. Reply to this email or <a href="https://bradenkoh.com/">schedule a call</a>. That conversation is free.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply automation to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[The Winton Guest House Modelling Challenge]]></title><description><![CDATA[Try your hand at creating this building]]></description><link>https://www.codedshapes.com/p/the-winton-guest-house-modelling</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-winton-guest-house-modelling</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Wed, 13 May 2026 02:01:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bH2S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bH2S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bH2S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bH2S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3016514,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/197181421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bH2S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!bH2S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://open.substack.com/pub/bradenkoh/p/tutorials-taught-you-everything-except?r=yraxj&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">Previously</a>, I wrote about why learning with a real problem in front of you is different from any tutorial. But it&#8217;s not good enough for me to just say &#8220;go find your own problems to solve&#8221;. So, this is the first article in rectifying that.</p><p>It&#8217;s the start of me giving you a real problem to work with in case you don&#8217;t have your own.</p><p>Below is everything I had when I started modelling the Winton Guest House. Treat it as a brief. If it helps, think of it as an assignment. Go through the reference images, do some googling of your own and read the modelling approach I have taken.</p><p>Then, when you&#8217;re ready, start modelling it on your own.</p><p>Yes, I know that can be scary and it can be overwhelming but that&#8217;s part of the process and the learning. The struggle is how you earn to look at something and build a Grasshopper script from it.</p><p>Then, when you are truly stuck or maybe you&#8217;ve made your own solution, reference it to mine. In the coming weeks, I&#8217;ll be publishing a modelling guide that shows the script I made. It&#8217;s my answer to the brief.</p><h2>The Winton Guest House</h2><p>It consist of six distinct structures, each with its own type of geometry. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oJYS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oJYS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oJYS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png" width="750" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:750,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:749141,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/197181421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oJYS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 424w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 848w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 1272w, https://substackcdn.com/image/fetch/$s_!oJYS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b245668-6e70-42b0-a684-12d44d5f9613_750x400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>image credit: <a href="https://news.stthomas.edu/next-stop-frank-gehrys-winton-guest-house-new-yorks-hudson-river-valley/">University of St Thomas</a></em></figcaption></figure></div><p>To make sure we are on the same page, here are the names and locations of each structure:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ul8Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ul8Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 424w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 848w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 1272w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ul8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1593530,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/197181421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ul8Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 424w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 848w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 1272w, https://substackcdn.com/image/fetch/$s_!ul8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d18826-c397-4c99-85a0-c0d113face86_2800x2800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>image credit: <a href="https://www.behance.net/gallery/20144177/Winton-Guest-House-Project/modules/135705187">Behance</a></em></figcaption></figure></div><p>And the plan view, which, to me, is the most useful reference for setting out the geometry:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X0di!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X0di!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 424w, https://substackcdn.com/image/fetch/$s_!X0di!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 848w, https://substackcdn.com/image/fetch/$s_!X0di!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 1272w, https://substackcdn.com/image/fetch/$s_!X0di!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X0di!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png" width="524" height="445.4" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:425,&quot;width&quot;:500,&quot;resizeWidth&quot;:524,&quot;bytes&quot;:91516,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/197181421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X0di!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 424w, https://substackcdn.com/image/fetch/$s_!X0di!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 848w, https://substackcdn.com/image/fetch/$s_!X0di!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 1272w, https://substackcdn.com/image/fetch/$s_!X0di!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61f014a4-a518-40d5-a4c3-76a36bd47c17_500x425.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>image credit: <a href="https://www.pinterest.com.au/pin/frank-gehry-winton-guest-house--625859679475104378/">Frank Gehry &#8211; Winton Guest House</a></em></figcaption></figure></div><p>If you do need more information, you can always find them online.</p><h2>My (recommended) approach</h2><p>When I look at a building I have never modelled before, I am not thinking about the architecture. I am looking for the logic. Where does this start? What depends on what?</p><p>The Winton Guest House has a clear one to me.</p><p>The fireplace is the anchor. Everything else in the script works from it in some way. The chimney grows out of the fireplace. The living room grows out of the fireplace. The garage grows out of the living room. The loft sits alongside the garage. The second bedroom is the last piece to slot in.</p><p><em>Of course, if you do want to start from another building like the living room, please feel free to</em></p><p>Once you see that flow, the model becomes one problem with six big steps, each one using what came before it as its starting point. That order is why the guide starts with the fireplace rather than whichever structure looks most interesting.</p><p>The fireplace is really just a box with another taller box on top that makes the chimney. The roof of the living room is a trapezium and the rest are also combinations of simple shapes with the exception of the bedroom. So, leave that for last. And if you get really stuck on that, part 3 of my guide will show you how I did it.</p><h2>Start now, don&#8217;t worry about perfection</h2><p>You do not need to get everything right, and you do not need exact dimensions. Focus on the relationships between the structures rather than precise measurements. What we want from these modelling challenges is for you to build the instinct of creating your own workflow and pulling components to solve problems. </p><p>When you are ready to compare notes, or when you hit a wall, the modelling guide is split into four weekly parts:</p><ul><li><p><strong>Part 1:</strong> Fireplace, Living Room and Bedroom</p></li><li><p><strong>Part 2:</strong> Garage and Loft</p></li><li><p><strong>Part 3:</strong> Second Bedroom</p></li><li><p><strong>Part 4:</strong> Script Organisation</p></li></ul><p>Each part has a script file so you can check your work section by section. Part 1, starts next week. </p><p>But as you go through it, remember that my approach is just one way. There is no &#8220;ultimate&#8220; way to model this. But we all have to start somewhere, so if your script differs from my guides, it&#8217;s okay. We&#8217;re just getting the reps in. </p><p></p><p>Happy scripting!</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get notified on when part 1 of the modelling guide is published</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Tutorials Taught You Everything Except How to Use Grasshopper]]></title><description><![CDATA[Experience > Tutorials]]></description><link>https://www.codedshapes.com/p/tutorials-taught-you-everything-except</link><guid isPermaLink="false">https://www.codedshapes.com/p/tutorials-taught-you-everything-except</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 12 May 2026 02:01:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gpR2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gpR2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gpR2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gpR2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2608844,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/196968637?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gpR2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!gpR2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8db4446-df77-4883-b60e-5a1fb4df8fd8_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s this satisfying feeling that happens after you finish a tutorial or a lesson in a course.</p><p>You know what I mean. You&#8217;ve watched the whole thing, maybe you&#8217;ve followed along, maybe you even took some notes. After that, you&#8217;ve definitely mastered &#8220;data-trees for Grasshopper&#8221;.</p><p>So, why is it that when you open up Grasshopper on your own, the only thing you can do is stare? You should have mastered this, you watched the tutorial. You even took notes. But all you have are more questions.</p><p>What components do you use ?<br>How do you even start, a point ? a curve ?<br>Where&#8217;s the list to <em>graft</em> ?</p><p>If any of that sounds familiar, it&#8217;s because it&#8217;s the classic &#8220;I don&#8217;t know how to apply what I&#8217;ve just learnt to the real world&#8221; problem. That&#8217;s why even after 4 years of going to Unviersity, most people will still treat graduates as &#8220;starry eyed fledglings&#8221;.</p><p>I have written about this a couple of times now. <a href="https://open.substack.com/pub/bradenkoh/p/a-week-of-tutorials-and-i-still-couldnt">One piece</a> was about why I would learn Grasshopper differently if I started over. <a href="https://www.codedshapes.com/p/the-moment-grasshopper-finally-made">Another</a>, was about the moment the tool finally made sense to me. And <a href="https://www.codedshapes.com/p/why-tutorials-alone-wont-get-you?r=yraxj">this one</a> was about why learning through tutorials only won&#8217;t get you very far. I even made a <a href="https://www.linkedin.com/posts/bradenkkz_tutorials-alone-are-not-enough-ugcPost-7457373501122068480--J19?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAB8bgSMBqS9EG1ppwaYkmHxqK8QaquDcprk">LinkedIn post</a> about it.</p><p>The TLDR of all of them is that tutorials and online courses teach you what the components do and where they are. But they don&#8217;t teach you how to use them to solve real world problems. That part only comes from getting more experience.</p><p>The responses I got from those pieces told me that a lot of people understand this. They have done the tutorials. Understand the material in the moment. And then nothing transfers to their jobs. They can take every &#8220;masterclass&#8221; under the sun and still feel like they are starting from scratch every time they open Grasshopper.</p><h2>Context is key when learning</h2><p>I got lucky because my job at the time gave me context while I was learning Grasshopper for the first time. I had a real task with real deadlines and a real manager to hold me accountable. He was also a manager that would occasionally pull up a chair when I was completely lost and say, here, think about it like this. </p><p>He gave me <em>direction</em>, so that I wasn&#8217;t completely lost. He gave me some  <em>breadcrumbs</em> to follow. But I still had to find my way there. It was still up to me to learn the right techniques to solve the problem.</p><p>I did end up learning the fundamentals of Grasshopper though. But not because a course told me to, because it was the only way I was going to solve my problem. I had to learn about <em>data-trees</em> because my situation demanded it. I wanted my scripts to work well and for that, the fundamentals are important. But doing it for the sake of doing it is how you get so bored that you rather run into a wall.</p><p>Learning in context is different to your regular online course or tutorial. Because it means you have to intentionally get lost and find your way back on your own. Which can be an extremely uncomfortable feeling, especially if you&#8217;re paying for a course to be reassured you&#8217;re on the &#8220;right&#8221; path. It&#8217;s weird to say &#8220;I am buying this course to feel lost and find my way back&#8221;. It&#8217;s much easier to buy a course that spoon feeds you problems and answers.</p><p>But all you&#8217;re doing is accumulating <a href="https://www.codedshapes.com/p/why-tutorials-alone-wont-get-you?r=yraxj">carnival cash</a>. It feels great in the moment but means nothing in the real world.</p><h2>The part that is hard to replicate</h2><p>The problem is that most people learning Grasshopper today don&#8217;t have access to their own problems. They have jobs, but Grasshopper is not central to them yet. Or they are students, or they are trying to upskill before a role that needs it. They can&#8217;t find their own context to make the learning stick.</p><p>Telling you to find your own problems doesn&#8217;t help if you don&#8217;t know what can be done. It also doesn&#8217;t help if it&#8217;s too overwhelming to go through it on your own. I even made <a href="https://www.codedshapes.com/p/applying-computational-design-where">a course on how to find your own problems</a> but it still doesn&#8217;t help if you are very new at this.</p><p>So, I have been trying to figure out how to give someone that project experience if they don&#8217;t have one? How do I structure a problem in a way that is not too overwhelming, that challenges you and still gives you enough direction?</p><h2>The inspiration of modelling challenges</h2><p>That is what I am trying to build here. A series of modelling challenges that give you that context for learning and forces you to come up with your own workflows. </p><p>Okay, why modelling?</p><p>For starters, I think it&#8217;s the most common use case for Grasshopper. I also think it teaches you the most about how the tool works. From there on, if you wanted to branch off to urban analysis or optimization, it&#8217;s not a huge leap anymore.</p><p>I know how overwhelming that all sounds. But the point here is to challenge yourself to come up with your own way of solving problems. That&#8217;s how you build that instinct. </p><p>So, if you&#8217;re interested in getting some reps in for Grasshopper or you want hone your skills, I encourage you to join me. </p><p>We are going to start with a <em>model brief </em>which is basically summary of what you are going to start modelling. In the brief, you&#8217;ll have reference images, how I would model it and also what to look out for. Then, you just have to start. </p><p>But I did say that to learn effectively, you also need <em>direction</em>. Which is why after you&#8217;ve tried or if you&#8217;re feeling extra stuck, I&#8217;ll be publishing a modelling guide too. It&#8217;s basically my &#8220;answer&#8221; to the brief. </p><p>It&#8217;s not like I am giving you a problem and then leaving you alone. I am going to solve it too and show you how I did it. Mostly for you to reference and compare against your method. The key here though is that you have to try and solve it on your own first.</p><p><em>P.S. if you&#8217;ve never opened Grasshopper before, I&#8217;d suggest going through <a href="https://open.substack.com/pub/bradenkoh/p/i-couldnt-find-a-grasshopper-course">my primer in Grasshopper</a> first to get up to speed on the basics. It&#8217;s only six lessons and it gets you to the point where you can read a script and know what you are looking at. Start there and come back.</em></p><h2>What we are working through</h2><p>Starting tomorrow, I am introducing the first building we are going to look at: Frank Gehry&#8217;s Winton Guest House, completed in 1987. It&#8217;s six distinct structures, each with its own geometry.</p><p>I chose it deliberately because it is complex enough to be challenging. But it also has a quality that I think makes it a good teaching vehicle, there is a clear logic to the order of things. Each part of the building follows what came before it.</p><p>The brief will walk through what the building is, how I see the building in terms of &#8220;plan of attack&#8221; and how to approach modelling it. Think of it like a mentor giving you a <em>task and some direction</em> and your job is to use Grasshopper to solve it.</p><p>From then on, there will be four parts to the guide, published every Tuesday for next few weeks. Each guide also comes with a script, so you can see how the solution progresses along with my thinking. And they are all available for paid members of CodedShapes.</p><p>If you are on the fence about subscribing, this might be a good chance. You can always subscribe to learn from it and then quit after you got what you needed, no hard feelings at all. The pool of resources will always be here. </p><h2>Closing thoughts</h2><p>Learning in context is one of the most effective ways I&#8217;ve found to learn. After going through it, it&#8217;s hard to imagine ever sitting in a classroom or a tutorial learning for no reason. With anything that I am trying to learn (Grasshopper or not), I always anchor it to a problem/project.</p><p>This though, is a much harder way of learning and the effort you need is a lot higher than just kicking back and watching tutorials. Just be mindful of that. But that is the point of all of this. I don&#8217;t want you to memorize things for the sake of it, I want to give you a reason and some meaning to it.</p><p>The first model brief is now live! </p><p>Check it out here : </p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d052d563-1e33-4109-8765-8fd54381bdae&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Winton Guest House Modelling Challenge&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:58380823,&quot;name&quot;:&quot;Braden Koh&quot;,&quot;bio&quot;:&quot;I write about computational design, a field focused on using computers to solve practical problems. I try to show where computational thinking actually makes a difference and where it doesn&#8217;t.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dacec5b-718a-406b-a6f4-c06367f8cfdf_2081x2081.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-13T02:01:06.858Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!bH2S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfd913c-bb4b-4df1-b0b0-b8b013979381_3300x1858.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.codedshapes.com/p/the-winton-guest-house-modelling&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:197181421,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1310749,&quot;publication_name&quot;:&quot;CodedShapes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!DATU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8783c1e-94bb-4979-9c47-889d3da8083d_500x500.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply computational design to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[This is Why They Don't Trust Us]]></title><description><![CDATA[It's not overselling anymore, it's using their trust against them]]></description><link>https://www.codedshapes.com/p/this-is-why-they-dont-trust-us</link><guid isPermaLink="false">https://www.codedshapes.com/p/this-is-why-they-dont-trust-us</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 07 May 2026 02:00:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yGoM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yGoM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yGoM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yGoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2526969,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/196075736?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yGoM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!yGoM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615b1969-73ac-4d83-9dcb-12c96eb09591_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I was part of a digital team that built an analysis tool for a project.</p><p>It managed data between a main model and many sub models for structural analysis. The idea was for each engineer on the team to work on their own model, then use our tool to combine everything into a single main model. It made modelling collaborative which if you know how analysis programs worked, was a big deal. Most, if not all analysis programs only allow one person at a time.</p><p>That meant the project team could put almost every engineer (junior to senior) on the modelling without having to copy and paste between models. This was actually where most of the errors and problems come from. People model the paste the wrong thing or they accidentally delete something important in the main model.</p><p>But with our tool, a click of button would solve all of that. You&#8217;d get a team-built and expertly led analysis model as many times as you needed.</p><p>It was so good and we wanted to present it to other project teams. The hope was that they, too, could experience the future of modelling through the same system. Even though our tool only worked for this project, it wouldn&#8217;t have been hard to tweak it for others. In fact, with enough motivation, we could build the same system for everyone. We were creating collaborative editing for models</p><p>So, present we did. Hoping to get more interests and ideally, more funding. For 30 minutes, everyone watched us explain this magical process. Parallelize the modelling, click this button, and have all your complex analysis woes solved.</p><p>At the end of it, all I could think was: &#8220;This is why no one trusts us.&#8221;</p><h2>Because the truth hurts</h2><p>The tool actually made the project worse.</p><p>The one-click reality was people still had to manually copy and paste between models. The very thing the tool was designed to prevent. But now, they also had a tool that would get it wrong, so sometimes, they had to spend even more time cleaning up after the tool.</p><p>To make things worse, after we made the tool, there was also a period where the original developer who built the tool was on leave. He didn&#8217;t give any handover notes or access to the original code. So, when the tool broke and there was no one around to fix it. I helped out the project team by also manually copying and pasting between models. Not fixing the tool, actually placing lines and copying numbers. Again, the very thing the tool was designed to prevent.</p><p>Before we showed up to this project, the team had a workflow. It was manual, error prone and slow, but it was <em>theirs</em>. They understood it and knew exactly what to do. Now, they had a tool they didn&#8217;t fully understand, that occasionally saved them time and occasionally broke at the worst possible moment. So, they ended up with a workflow that was slower, more error prone than just doing it manually.</p><p>Now, imagine you&#8217;re a manager. You&#8217;ve been promised that you get a tool that would almost half your turnaround time. What do you tell the clients?</p><p>Well, you tell them you can do it faster.</p><p>Which is exactly what made the deadlines of this project so tight. The team was <em>depending</em> on the tool working. They&#8217;d planned a tighter turnaround because the tool was meant to handle it. But because the tool broke so often and the team weren&#8217;t available, they dug their own graves. They had to work long hours to make up the tight deadline that the tool was supposed to prevent.</p><p>And after everything, we still presented it to everyone like it was the next best thing since sliced bread.</p><p>I bet the project team were laughing at us during the presentation. They would never work with the digital team again. I mean would you ?</p><p>That feeling must have bled to the other teams too. Because as &#8220;game-changing&#8221; as our tool was, no one reached out to us. I swear we looked like clowns up there. The tool also never saw the light of day again.</p><div class="pullquote"><p>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply it to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><h2>We sold the dream, not the reality</h2><p>The thing that bothers me most about that presentation isn&#8217;t the overselling. It&#8217;s the eroded trust with the team.</p><p>The project team trusted us. They built their entire schedule around it. They told their clients they could turn things around faster. They took on tighter deadlines. They made commitments based on our promises.</p><p>They basically believed that we would together to deliver a product that was better than the sum of it&#8217;s parts. And we let them down an threw them under the bus.</p><p>And while they (and I) stayed late delivering the project while the tool broke, we still stood up there and called it the best tool.</p><p>That&#8217;s no longer overselling, that&#8217;s taking someone&#8217;s trust and using it against them.</p><p>I don&#8217;t blame people for not trusting the team again.</p><h2>Then we disappeared</h2><p>But the biggest crime isn&#8217;t the broken tool. It&#8217;s disappearing after you&#8217;ve sold the magic. Especially when people have build their deadlines and budgets around it actually working.</p><p>The guilt from this project still stays with me.</p><p>There were days where the project team needed help. The tool broke, which was common, but our team had moved on to other things.</p><p>I remember our replies all fell along the lines of: &#8220;Yes, that&#8217;s a bug, but I&#8217;m busy. I&#8217;ll get to it in 2-3 days.&#8221;</p><p>But they had a deadline <em>tomorrow</em>. So they stayed up that night doing things manually. And eventually, they stopped asking.</p><p>The kicker? When we finally had time to look at it, we&#8217;d say something like:</p><p>&#8220;Oh, you shifted the geometry. Our tool doesn&#8217;t support that. So, you broke it.&#8221;</p><p>The tool broke and we didn&#8217;t fix it. They still had a deadline, so they fell back to the manual way to get it over the line. And then, when we did have time, we <em>blamed them</em> for breaking the tool that we made.</p><p>If that happened to you, how hard would you kick us?</p><h2>Two sides of the same coin</h2><p>Of course, it&#8217;s not always this one-sided. There have been times where there are bad inputs or assumptions. Or people try to use the tool outside it&#8217;s design and expect it to perform magic.</p><p>But the common piece on both sides is <em>trust and reliability</em>.</p><p>Trust goes both ways. You need to trust that the tool will consistently deliver. And I need to trust that you&#8217;ll use it within the agreed conditions.</p><p>Reliability also goes both ways. Before I completely handover the tool to you, <em>we</em> have to ensure that it&#8217;s tested well and that you&#8217;re confident it works the way you need it to. Of course, there is another piece that when something breaks after, I&#8217;m there to fix it, not leave you hanging.</p><p>If you can&#8217;t trust or rely on the digital solution, then nothing will go well.</p><h2>We have to align on the direction</h2><p>I still think computational design is worth it. I wouldn&#8217;t be writing this newsletter if I didn&#8217;t. The time savings are real, and the problems we can solve now are genuinely amazing. And the whole idea is to build something better than the sum of it&#8217;s parts.</p><p>But we need that trust and reliability on both sides first.</p><p>We can&#8217;t sell magic and then disappear when it breaks. And we can&#8217;t expect our tools to solve every problem when the only instruction was &#8220;fix it for me&#8221;</p><p>The way to close that gap isn&#8217;t to be more impressive. It isn&#8217;t to use more AI. It&#8217;s to be more reliable and honest about everything we make, like what it can do, what it can&#8217;t, and what happens when it breaks.</p><div class="pullquote"><p><em>If you&#8217;re working through an automation problem and want to think it through before you build, reply to this email or <a href="https://calendly.com/braden-codedconstructs/30-minute-chat">reach out</a>. I&#8217;m always happy to talk through what&#8217;s worth automating and what isn&#8217;t before anyone commits to a tool that might not hold up.</em></p></div><p>Thanks for reading.</p>]]></content:encoded></item><item><title><![CDATA[The False Start Toggle: How to Control When Grasshopper Runs Things]]></title><description><![CDATA[Automatic solving isn't a good thing all the time]]></description><link>https://www.codedshapes.com/p/the-false-start-toggle-how-to-control</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-false-start-toggle-how-to-control</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 05 May 2026 02:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NIEl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NIEl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NIEl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NIEl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2649343,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/196076442?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NIEl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!NIEl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c05b74-7efc-44ab-bba6-f07af8395831_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve used Grasshopper for anything remotely complex, you&#8217;ll know how annoying it is when you open the script and forgot to lock your canvas.</p><p>Even worse is if you&#8217;ve forgotten a stream of components that take a lot of time to run and you accidentally &#8220;resolve&#8221; the canvas.</p><p>Obviously, I&#8217;m speaking from experience here.</p><p>A small but vital component is the <em>False Start Toggle</em>.</p><p>It looks like an ordinary <em>Toggle</em> but <em><strong>defaults to False</strong></em> all the time. That means when you restart your script, the value of the toggle will be False.</p><div class="pullquote"><p>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply it to your projects.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Ckt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Ckt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 424w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 848w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 1272w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Ckt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png" width="805" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:805,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/196076442?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Ckt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 424w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 848w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 1272w, https://substackcdn.com/image/fetch/$s_!_Ckt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ce17315-d435-4e3e-94ff-4358594cf345_805x453.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, why?</p><p>Well, like a <em>data dam</em>, that means you can actually choose when to run things in Grasshopper instead of having it run all the time.</p><p>The biggest difference between the <em>false start toggle</em> and a <em>data dam</em>, is that I don&#8217;t have to click on it every time. I just have to do it when I restart my script.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rZGv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rZGv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 424w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 848w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 1272w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rZGv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png" width="1456" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:282936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/196076442?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rZGv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 424w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 848w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 1272w, https://substackcdn.com/image/fetch/$s_!rZGv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848fabfd-a1bc-4b6e-b33b-fbe859955643_4204x1162.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Where to find this ?</h2><p>Like most things, it&#8217;s a plugin and it&#8217;s actually part of the entire suite of components in <a href="https://www.food4rhino.com/en/app/ladybug-tools">LadyBug</a>.</p><p>Which yes, I know it&#8217;s annoying to install the entire suite of tools just to get the False Start Toggle. So, I&#8217;ve actually separated it out for you.</p><p>I&#8217;ve attached the standalone component file below. You can drop it directly into your Grasshopper libraries folder without installing anything else.</p><p><a href="https://drive.google.com/file/d/1O0lYIJbujlDNh3_MywaDJZKTCIvY1LWT/view?usp=sharing">&#8594; Get the False Start Toggle here </a></p><p>I hope that helps.</p><div class="pullquote"><p>If you&#8217;re thinking about bringing computational design into a project, I&#8217;m happy to talk through how you&#8217;re framing the problem and if it&#8217;s the right solution.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://calendly.com/braden-codedconstructs/30-minute-chat&quot;,&quot;text&quot;:&quot;Chat With Me&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://calendly.com/braden-codedconstructs/30-minute-chat"><span>Chat With Me</span></a></p></div><p>Thanks for reading.</p>]]></content:encoded></item><item><title><![CDATA[It Takes Two to Build the Right Thing]]></title><description><![CDATA[Conversation not instructions is right way to build things]]></description><link>https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing</link><guid isPermaLink="false">https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 30 Apr 2026 02:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zXiH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zXiH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zXiH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zXiH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2845785,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195512002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zXiH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!zXiH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c101e4-f836-4de7-9bb6-c040cbe71057_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>About a year ago, a site coordinator came to me with a request. Let&#8217;s call him Marcus.</p><p>He was confident, specific, and he knew <em>exactly</em> what he wanted. That&#8217;s actually a rare case. Most of the time, people know they have a problem but they don&#8217;t know what they need to solve it.</p><p>Marcus wanted a script that colours panels in a Revit model based on their installation status. His company was installing panels across a few storage warehouses and he wanted to know the statuses of the panels. The current workflow was every day, contractors on site would update an Excel sheet with that status. Marcus would then review that status but it was hard to know where those panels actually were. I mean they had IDs but how do you know where those panels actually are ?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tNzP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tNzP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 424w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 848w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 1272w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tNzP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png" width="1456" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:248240,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195512002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tNzP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 424w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 848w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 1272w, https://substackcdn.com/image/fetch/$s_!tNzP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868f5055-12cf-4fab-8ce0-9b7a1a93b47c_2560x1126.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So, he wants a script to read it and update the colours in the model.</p><p>I remember thinking, <em>oh, this is straightforward</em>. He&#8217;s already done the thinking, I just need to build it. The problem was clear and the solution made perfect sense. We signed. And a week later, I showed him the script.</p><p>Marcus nodded. &#8220;Yeah, that&#8217;s cool and all, but how do I see what the panels the contractors last installed? I need to see if we are on schedule&#8221;</p><p>I replied, &#8220;Uh.... you don&#8217;t. This reads the Excel sheet and colours the model. Like you wanted.&#8221;</p><p>&#8220;Okay, but I need to see which panels were installed before and which are installed today&#8221;</p><p>It turns out what Marcus actually needed was a way to retain the <em>history</em> of installation not just show the status of the panels. He wanted to see movement and statuses over time, not just update the model with the latest information.</p><p>The script worked perfectly. It just solved the wrong problem.</p><p>It would have been easy to blame Marcus for not communicating properly. But I also never asked <em>why</em> he needed to see the install statuses in the model. I didn&#8217;t ask <em>why</em> he wanted that information. He only told me after seeing the script for the first time.</p><p>I got lucky though. The rework was a straightforward addition. But if Marcus had wanted the site contractors to run the tool, or if there were more complex requirements buried in that brief, I would have been rebuilding from scratch. And I would be having an awkward conversation with Marcus about the fee.</p><div class="pullquote"><p>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually do that.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><h2>Walking Into the Middle</h2><p>This is, unfortunately, a more common experience that I would like.</p><p>Digital projects almost never start from a blank slate. Normally, someone already has some ideas about what should happen but they may not communicate that to you because it&#8217;s &#8220;common knowledge&#8221;. And if we take them at face value, we might end up building something completely off the mark.</p><p>I remember another time where I walked into the middle of a client&#8217;s political debate to switch from using Solidworks to Tekla Structures. I was told to write two proposals for two different programs because they wanted to understand the impact of switching programs. </p><p>To them, it made sense. Get the expert to vet the processes and then figure out which is the better option. But they wanted two proposals written up in a week without any additional meetings. They said &#8220;it&#8217;s all common sense&#8221;, so this should be easy.</p><p>But I am not apart of their processes, what may seem like common sense to them are assumptions and decisions that I don&#8217;t know. So, it was damn near impossible to come up with accurate requirements.</p><h2>There&#8217;s always more than meets the eye</h2><p>The better the work looks, the easier it seems. And the easier it seems, the more likely you will build the wrong thing.</p><p>&#8220;Just add this&#8221; is never just adding a feature. If something sounds too good to be true, we have to stop and assess whether there are any other hidden complexities behind it. </p><p>Of course, we won&#8217;t be able to predict everything but we can&#8217;t be too reductive about complexity. Especially, when we aren&#8217;t steep in their environment.</p><h2>It takes two to build the right thing</h2><p>I had another client who wanted a plugin in Tekla. The brief was was also clean, go from a quotation spreadsheet to a 3D model. And their instinct, like Marcus&#8217;s, was to fast track things. Give the fee, the timeline, approve it, and let me handle it.</p><p>After having learnt my lesson with Marcus, I reined it in and asked more questions.</p><p>It was uncomfortable because it seemed like I was skeptical but it was actually because they didn&#8217;t have a clear picture of what a Tekla plugin meant for their workflow. I was worried that they were developing their workflow and plugin at the same time, which is never a good idea. A good plugin needs to be embedded into a process not a new one. </p><p>After some pushing and prodding, we finally agreed to a discovery phase first. We went through the spreadsheet together. We explored what deployment would look like. We even checked if another program was a better fit.</p><p>And two things came out of that phase that we couldn&#8217;t have found on our own.</p><p>First, they were already working on a new version of the spreadsheet. If I&#8217;d built the plugin to the existing one, it would have broke within months.</p><p>Second, they had only one Tekla license, which meant only one person needed to run it. That cut the deployment complexity significantly because I didn&#8217;t have to worry about company wide IT policies yet.</p><p>We ended up waiting two more months to build the plugin. And, I&#8217;m glad that we did because it ended up being more stable and much closer to the workflow they wanted. The overall delivery was slower but it was more intentional and more valuable to everyone. </p><h2>You want a discussion not instruction</h2><p>The best tool or script isn&#8217;t one person building exactly what the other person asked for. If you want that, LLMs are getting really good at that.</p><p>It&#8217;s actually, two people figuring out what should actually be built given the situation and the problem.</p><p>That starts with a client who&#8217;s willing to share the context, not just the brief. And a digital person who&#8217;s willing to ask, not just build.</p><div class="pullquote"><p>If you&#8217;re thinking about bringing computational design into a project, I&#8217;m happy to talk through how you&#8217;re framing the problem and if it&#8217;s the right solution.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://calendly.com/braden-codedconstructs/30-minute-chat&quot;,&quot;text&quot;:&quot;Chat with me&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://calendly.com/braden-codedconstructs/30-minute-chat"><span>Chat with me</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Make Your Scripts Robust by Adding Data to Your Geometry]]></title><description><![CDATA["Objects" have been a long standing technique]]></description><link>https://www.codedshapes.com/p/make-your-scripts-robust-by-adding</link><guid isPermaLink="false">https://www.codedshapes.com/p/make-your-scripts-robust-by-adding</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 28 Apr 2026 03:01:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6kXi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6kXi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6kXi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6kXi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3033882,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195702600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6kXi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!6kXi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0d57cf7-f4c9-4f91-8104-dc06dc33a178_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I once had a script for a project that I had over five data streams to maintain.</p><p>I am sure you&#8217;ve been in the same boat before.</p><p>You have the your geometry. Then, say a property, like an area. Oh but that&#8217;s not enough, you need to know which geometry is made of steel or wood. Then, you also need to know which geometry has to be cut and which hasn&#8217;t.</p><p>Sorry, for the rant. The point is when we work with geometry in a script, it&#8217;s never just the geometry. We always have some other information that we need to bring over too. And if you have a complicated script, your data structure is normally..... quite complicated.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jjou!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jjou!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 424w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 848w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 1272w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jjou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png" width="1144" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1144,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56311,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195702600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jjou!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 424w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 848w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 1272w, https://substackcdn.com/image/fetch/$s_!Jjou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F313a8be4-7b9e-4e88-8caa-cbc6967f9b70_1144x598.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Typically, in Grasshopper fashion, we would just copy and paste this structure as many time as you have information. So, 5 properties means 5 data streams. Maybe you have a script that looks like this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KNZP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KNZP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 424w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 848w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 1272w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KNZP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png" width="1456" height="997" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:997,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:216579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195702600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KNZP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 424w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 848w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 1272w, https://substackcdn.com/image/fetch/$s_!KNZP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ed3a0b-a50a-4fb1-85b1-0208f3f85772_1516x1038.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, imagine you update the script. You have to remember to update all the streams or else the script breaks. This is actually why scripts become brittle.</p><h2>Is there a better way ?</h2><p>Yes, yes there it.</p><p>And it&#8217;s a technique that&#8217;s been in software development for a long long time. It&#8217;s called &#8220;Object Oriented Design&#8221;. It means that instead of our geometry being just a curve or a line, we can attach some information to it known as <em>metdata</em>.</p><p>This means, instead of just the geometry, we have an &#8220;object&#8221; that has everything we need. This is also known as a &#8220;container&#8221;. So, instead of using multiple streams of data, we can put all of that in a single stream and carry that around with us.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XPjL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XPjL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 424w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 848w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XPjL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png" width="1456" height="966" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:966,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190926,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/195702600?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XPjL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 424w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 848w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!XPjL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cea5b4-08f1-4d07-a3cf-e50f4b913291_1627x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A complex way of assigning metadata to geometry</figcaption></figure></div><p>If I didn&#8217;t have this component with me. I would have an additional five streams I need to maintain. Having fewer streams just means less to maintain later on.</p><p>Also, if you do work with other people, you can bake the metadata into Rhino as well. This means other scripts can use the same metadata. It also means people can see that metadata in Rhino. This is something I talked about in <a href="https://www.codedshapes.com/p/how-the-elefront-plugin-solves-the">my article on Elefront</a>.</p><h2>Options to do this</h2><p>Okay, so how do we do this in Grasshopper ?</p><p>We actually have three choices here.</p>
      <p>
          <a href="https://www.codedshapes.com/p/make-your-scripts-robust-by-adding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[There Is No Promised Land]]></title><description><![CDATA[Just because the grass looks greener, doesn't mean it is]]></description><link>https://www.codedshapes.com/p/there-is-no-promised-land</link><guid isPermaLink="false">https://www.codedshapes.com/p/there-is-no-promised-land</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 23 Apr 2026 02:01:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hfIT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hfIT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hfIT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hfIT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3248469,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/194676772?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hfIT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hfIT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a655dd0-be4a-4d70-8232-b8a59e4e2b7d_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Right now, you&#8217;re reading this article. Or at least starting to, but before that you might have been scrolling on Instagram or even LinkedIn.</p><p>I know at least, Jay was. He&#8217;d been active on LinkedIn for months. Following every computational designer he could find, curating his feed to see how others have used computational design to automate away 90% of their work. Sipping mai tais while pressing a button then charging their clients 100 hours for it.</p><p>Then, he takes a look at his own work. He spends 10, maybe 20 hours a week just entering data that his juniors can&#8217;t seem to do well. His IT team blocks him on any new program he wants to try. No new LLMs, no new software, it&#8217;s an invasion of our privacy, says the IT team. Most likely upper management.</p><p>On his latest project, while modeling things manually in Revit, he really feels the gap. Everyone else on LinkedIn is doing cool shit and he&#8217;s here drawing lines. He, too should be sipping mai tais while AI does the work for him.</p><p>So, he goes back on LinkedIn, sees the latest computational design post, and decides to reach out. Maybe someone can show him the promised land of automation, that way he doesn&#8217;t have to work so hard. And that&#8217;s how he finds me.</p><p>We go on a call. He shows me his current problem, he&#8217;s manually modeling facade panels on a tower. The geometry isn&#8217;t that complicated and realistically they vary only a little with each floor. But there are 68 floors. So doing it with a script? Easy. Manually? A pain in the ass.</p><p>Before we end the call, he says something peculiar.</p><p>&#8220;I want to run the script, can you just give it to me and show me how everything works?&#8221;</p><p>I said yes. And my thought was, Jay was a great client. Most clients just want the result. Most of the time, I am just sending them the model, not the script. They don&#8217;t care about how it&#8217;s done. Jay wanted the script which was a first for me but I happily agreed.</p><p>So, after the contract was signed, I spent the next week writing the script. And when it was done, I went on another call with Jay to show him how it all worked. And since he wanted the script, I tidied the script up and sent it to him.</p><p>Jay lit up when he saw me press a button and all the panels were modeled. He was in the promised land. He was ecstatic.</p><p>What a great client, he&#8217;s happy. I&#8217;m happy.</p><p>Two weeks later, I get a message from Jay.</p><p>&#8220;Braden, your script doesn&#8217;t work, I tried to run it on another model and nothing comes out&#8221;</p><p>We jump on another call and Jay shows me what happened. He was trying to run the same script on a different model.</p><p>I told Jay that the script only works for <em>that</em> model. That was what we agreed to. A geometry-based script works for the project it was built for. <a href="https://www.codedshapes.com/p/your-script-doesnt-need-to-work-on?r=yraxj">It doesn&#8217;t just put panels in for every model he has.</a>. He grunted and asked how I can fix it.</p><p>I mean it at least was still a tower and it was a pretty simple fix from what I could see, so I just did it then and there for him. And it worked.</p><p>But, he pulled up another model.</p><p>&#8220;Can we try and run the script on this model too? And if it doesn&#8217;t work, can you fix it?&#8221;</p><p>This time, the model wasn&#8217;t so simple. The change to the script wasn&#8217;t small. I told him I would need more time and a variation to our initial contract. Jay wasn&#8217;t happy.</p><p>&#8220;But on LinkedIn, I see so many people doing cool shit with Grasshopper. Why doesn&#8217;t this just work ?&#8221;</p><p>I told him as gently as I could <a href="https://www.codedshapes.com/p/computational-design-isnt-magic?r=yraxj">that this isn&#8217;t magic.</a> There is still work involved. Yes, it can save you time and produce things at scale that you can&#8217;t do manually, but it still takes time and skill. Nothing is ever as easy as it seems.</p><p>Jay wasn&#8217;t wrong to expect what he expected. He made a completely reasonable assumption based on everything he&#8217;d seen. The posts on LinkedIn showed scripts working. They don&#8217;t show the two hours someone spent cleaning up the inputs. They don&#8217;t show the effort it takes to format and sanitize the data before the script. And they sure don&#8217;t ever show when <a href="https://www.codedshapes.com/p/how-i-actually-know-if-my-scripts?r=yraxj">scripts actually aren&#8217;t useful</a>.</p><p>And I&#8217;m part of this too. Every demo I&#8217;ve ever posted always comes from success stories. And as much posting about my mistakes that I do, it&#8217;s the successful ones that people are drawn to.</p><p>It&#8217;s actually why on both LinkedIn and here, I&#8217;m trying to be more grounded. To show the mistakes and the real experiences behind these things. Although in doing so, I still get annoyed at the occasional post about people &#8220;having fun all the time&#8221; on LinkedIn.</p><p>Because clearly their automation is not the same automation I&#8217;m doing.</p><h2>There&#8217;s no promised land</h2><p>That&#8217;s probably the most misunderstood thing about computational design. People think automation smooths things out. It doesn&#8217;t. It actually makes every inconsistency jarringly obvious.</p><p>When you do something manually, you adapt without thinking. You see a different setup and you just adjust. You notice the geometry is off and you work around it. The biggest lesson I&#8217;ve learnt is how much we&#8217;ve come to rely on our human judgement for things.</p><p>While that is what makes us valuable, it&#8217;s something that is hard to scale. A script does exactly what you told it to do. And if it sees &#8220;column 01&#8221; and &#8220;column___001&#8221;, it won&#8217;t know the difference. I know things are different with AI but for the most part, that principle is still the same.</p><p>To me, that&#8217;s actually a <em>feature</em>. It&#8217;s telling you that your inputs or process aren&#8217;t as consistent as you thought. Like maybe you thought everyone has been putting things correctly in the right place, try to automate something and you&#8217;ll immediately find out that human driven processes are not consistent.</p><p>But nobody frames it that way. And most clients don&#8217;t want to hear that their process has problems. They just want the script to fix things, go faster and reduce cost.</p><p>Jay thought it was one script to rule them all. That all he needed was to make one script and all his problems will go away. And it&#8217;s a bitter pill to swallow when you find out that there is no promised land. That there is no single automation that will make life easier. Nobody reaches out to a computational designer hoping to be told &#8220;actually, your real problem is your model setup.&#8221; But it&#8217;s the truth more often than not.</p><p>I don&#8217;t say this to blame anyone. Most teams have never needed consistent model setups before. When everything is manual, inconsistency doesn&#8217;t matter because again, we have human judgement. It&#8217;s only when you try to automate that these inconsistencies become painful.</p><h2>So what do you actually do?</h2><p>I know that&#8217;s not what people want to hear. We want the shortcut. We want to skip the messy middle and land on the clean result. We want the thing on LinkedIn to be the thing we get. We want plug and play.</p><p>But there is no promised land.</p><p>I still get impressed by the LinkedIn posts especially if they have managed to scale it because I know the effort it takes to make that happen. And it&#8217;s really all the unsexy stuff that doesn&#8217;t get likes but makes <em>everything</em> else work.</p><p>I can&#8217;t pretend I always get this right either. I still catch myself going straight into build mode before I&#8217;ve asked enough questions about the problem / data.</p><p>I know, if you&#8217;re a client, you may not want to hear this because I am meant to make your life easier not harder. But from experience, a two sided conversation about how the automation complements the ideal process always creates a better result.</p><p>So, if you want to think through whether automation makes sense for your situation, I&#8217;m always happy to chat. Even if it&#8217;s just to figure out whether the problem is the process or the tool. Reply to this email or book a discovery call. Having the conversation is always free and it will point you in the right direction.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually do that.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to Export Multiple Files at Once in Grasshopper]]></title><description><![CDATA[A script that helps you export multiple parts of a model]]></description><link>https://www.codedshapes.com/p/how-to-export-multiple-files-at-once</link><guid isPermaLink="false">https://www.codedshapes.com/p/how-to-export-multiple-files-at-once</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 21 Apr 2026 02:01:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CHg4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHg4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHg4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2663851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/194662043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CHg4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!CHg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68d83c4e-75b3-4102-9465-5a6a66cd2f52_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I once had a Grasshopper script that produced three separate parts of the same a model. Like a car where you have the doors, the body and the engine. They are technically part of the car but are detailed enough to be treated individually.</p><p>Okay, I needed to export multiple parts because I have a single, pretty complicated script that produces the models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a_b2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a_b2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 424w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 848w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 1272w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a_b2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png" width="1456" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171451,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/194662043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a_b2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 424w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 848w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 1272w, https://substackcdn.com/image/fetch/$s_!a_b2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5798d711-5218-4291-b8fe-ba319d69d630_2556x1173.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So, for the first few times, I did the export manually. What&#8217;d I do is bake all the parts from my script into Rhino, then select each part and then export them to individual files.</p><p>It was manual and quite annoying to do. So, by the third time, I had enough.</p><p>I did some research and found a way export these files through Grasshopper instead of manually<br>doing it. It&#8217;s now one of the small workflows that I have in almost every geometry creation script.</p><blockquote><p style="text-align: center;"><em>If you&#8217;re a paid member of CodedShapes, you get access to the script below along with my other courses, guides and templates</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></blockquote><h3><strong>How this works</strong></h3><p>They key thing about this workflow is leveraging Rhino layers.</p><p>The first things I do is use <a href="https://www.food4rhino.com/en/app/elefront">Elefront</a> to bake objects into the right layers. Then I select those objects in Rhino and export them into their own files. The best part is that the export component let&#8217;s you select the format.</p><p>This is important because using Rhino layers means I don&#8217;t have to re-wrangle my data structure to meet the export structure.</p><p>Like if my <em>data-tree</em> is structured per material (e.g. steel, rubber, wood) but I need to export per part. Using the Rhino layers is a good way to bridge that without polluting the original structure.</p><h3><strong>The script</strong></h3><p>Okay, so if you&#8217;re a paid member of CodedShapes, you get access to the sample files below. You can see how I am using this workflow in some of the past projects I have worked. If not and you&#8217;ve been wanting to learn more Grasshopper, this might be a good time because a membership gets you access to courses and other resources too.</p>
      <p>
          <a href="https://www.codedshapes.com/p/how-to-export-multiple-files-at-once">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How Do You Solve a Problem Someone Doesn't Know They Have ?]]></title><description><![CDATA[If people don't tell you, is there really a problem?]]></description><link>https://www.codedshapes.com/p/how-do-you-solve-a-problem-someone</link><guid isPermaLink="false">https://www.codedshapes.com/p/how-do-you-solve-a-problem-someone</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 16 Apr 2026 02:00:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZXNo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZXNo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZXNo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZXNo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2430134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193935468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZXNo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXNo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71a56dd2-3f0c-4919-b0e2-50101ae152a8_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I remember this one call I had with a client. Let&#8217;s call him Adam.</p><p><em>yes, I am starkly aware that most of my articles these days start with a call</em></p><p>It was a kick-off call for Adam to brief me on a modelling package. Showing me the current model and what my part of the modelling looks like. But five minutes in to the call and Adam couldn&#8217;t get the model up because he had some problems with his network.</p><p>The call didn&#8217;t drop off but he was frantically trying to turn his VPN on to get access to the model.</p><p>&#8220;Thanks for being patient, there&#8217;s always so many steps to turn on this darn VPN. It always resets when I walk into the office&#8221; he said. &#8220;I have to keep toggling it whenever I leave the office&#8221;.</p><p>&#8220;No problem&#8221;, I said. And I spent the next ten minutes or so watching him fumble with the settings.</p><p>I did notice that I think there&#8217;s something that can be built to make his life easier. Maybe something that he can click and it just turns the VPN on/off for him without going to settings &#8594; network &#8594; advanced settings &#8594; turn VPN off all the time.</p><p>He eventually got the model opened and we went through the modelling package. But I also left that call with a curious idea that I could build something that solved this VPN conundrum of his.</p><h2>A few moments later</h2><p>About a week later, we had our update call as scheduled.</p><p>I started with: &#8220;Hey Adam, before we get into the modelling update, I noticed something in our last call and I made something small just to help you out, would you test it? If I did things right, it should toggle your VPN for you, so you don&#8217;t have to always find the setting.&#8221;</p><p><em>Adam opens the executable and just double clicks it</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pjOu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pjOu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 424w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 848w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 1272w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pjOu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png" width="1456" height="879" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:879,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193935468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pjOu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 424w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 848w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 1272w, https://substackcdn.com/image/fetch/$s_!pjOu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d321779-d56b-4625-8b99-08032f26ae30_1730x1044.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8220;Oh, shit! That&#8217;s pretty amazing, that saves me so much pain. It&#8217;s always so annoying to find that damn setting,&#8221; Adam said. &#8220;I didn&#8217;t even know you could make something like this. I thought you only do Grasshopper. Heck, I didn&#8217;t even know this was a <em>problem</em> that could be solved.&#8221;</p><p>That last part stuck with me. He didn&#8217;t know what was possible.</p><p>That modelling package went well and Adam has been a repeat client ever since. And now that he got a glimpse at what I do, the work that I have gotten from him has varied from regular modelling to creating plugins and standalone programs for him and the entire company.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p><h2>The problem with &#8220;computational design&#8221;</h2><p>Seriously, one of the hardest parts of what I do is telling people what I do. I can&#8217;t just say &#8220;Grasshopper.&#8221; I can&#8217;t just say &#8220;BIM&#8221; or &#8220;software developer&#8221; either.</p><p>When Adam hired me, he hired me for Grasshopper work. Parametric modelling. That&#8217;s what &#8220;computational design&#8221; means to most people. Geometry, 3D models, and magic.</p><p>He didn&#8217;t come to me because of his VPN. Well, he didn&#8217;t even know a tool could be built to solve that problem. And he didn&#8217;t know I could solve that problem.</p><p>That&#8217;s really the issue. &#8220;Computational design&#8221; sounds fancy, but it&#8217;s actually too vague. People either don&#8217;t understand it, or they box it into a narrow category often labelled as &#8220;fancy magic&#8221;.</p><p>And because of that, they either ignore it or they reject it. Either way, they leave value on the table by not asking.</p><p>As much as I love to do Grasshopper work, I love solving these seemingly small problems with computers more. It&#8217;s why I learned to code. And it&#8217;s why I believe in understanding the full context of things before solving.</p><p>It sounds small but that executable I made saved 6-10 clicks for every VPN toggle. Between going for meetings and working from home, Adam toggled it maybe 10 times a day. That&#8217;s 50-60 clicks a day. Over 250 working days, that&#8217;s around 12,500 clicks a year. Just for a VPN.</p><p>Now multiply that across the whole company and you get an insane amount of time spent on just turning on/off a VPN. And that&#8217;s just one friction that I happened to stumble across while on a call.</p><p>A lot of the time, people don&#8217;t report these problems because they&#8217;ve normalized them. We think that&#8217;s just the way it works, but really software is meant to make our life easier, not harder.</p><h2>My work is not just Grasshopper</h2><p>The VPN executable took me less than 4 hours to build. It saved the average person at Adam&#8217;s company about 20 minutes a day. Which is a lot of time and annoyance saved for everyone. I know I&#8217;ve said <a href="https://www.codedshapes.com/p/how-i-actually-know-if-my-scripts?r=yraxj">time saved isn&#8217;t the only important metric</a> but if you do the math here. It&#8217;s 20 minutes x 10 people x 260 working days = 52,000 minutes or 867 hours saved per year.</p><p>That&#8217;s really the value of digital solutions here. If a problem follows rules, has patterns, or is repetitive, it&#8217;s probably solvable with code. I have built things like :</p><ul><li><p>A tool that saves a user clicks by helping to toggle the VPN</p></li><li><p>A tool that helps you exchange contacts more seamlessly, without the hassle of typing in numbers</p></li><li><p>A tool that helps you jump to all your folders in your network drive</p></li><li><p>A tool that helps you archive and file emails</p></li></ul><p>These are all &#8220;small&#8221; problems but they deliver immediate value because they directly remove the pain from someone&#8217;s everyday work. And when you compound all those savings, it leaves you with more room to focus on the stuff that actually matters.</p><p>My value (which I often think about a lot) is not just Grasshopper or even programming. It&#8217;s developing solutions for problems like these using digital tools. It&#8217;s to bring the &#8220;expertise&#8221; of programming to these problems that people don&#8217;t know can be solved.</p><h2>Solutions Developer</h2><p>After working with a few clients like Adam, I&#8217;ve started to notice a pattern in why people don&#8217;t bring me these problems:</p><ol><li><p><strong>They don&#8217;t know it&#8217;s possible</strong> : &#8220;I thought you just did Grasshopper&#8221;</p></li><li><p><strong>They&#8217;ve normalised the friction</strong> : &#8220;That&#8217;s just how the software works&#8221;</p></li><li><p><strong>It seems too small</strong> : &#8220;It&#8217;s only 5 clicks, not worth bothering you&#8221;</p></li><li><p><strong>The title doesn&#8217;t help</strong> : If I call myself a &#8220;computational designer,&#8221; they think geometry only</p></li></ol><p>So, I&#8217;m moving away from &#8220;computational designer&#8221; and calling myself a &#8220;solutions developer.&#8221;</p><p>The title has become too vague and it&#8217;s been diluted across so many different roles and quality levels that it doesn&#8217;t communicate the scope of what I actually do anymore.</p><p>Also, description wise, I prefer &#8220;solutions developer&#8221; because it is developing solutions to problems for people instead of &#8220;computational designer&#8221; which sounds like computationally designing things.</p><p>But whether I call myself a &#8220;solutions developer&#8221; or a &#8220;computational designer,&#8221; it doesn&#8217;t change the difficulty of telling people what I do. The title helps, but what really changes things is <em>showing</em> people what is possible to solve.</p><h2>What I&#8217;d ask you to think about</h2><p>That modelling package with Adam went well, and he&#8217;s been a repeat client ever since. The work I&#8217;ve gotten from him has ranged from regular modelling to creating plugins and standalone programs for his entire company. All because of a VPN toggle he didn&#8217;t know could be fixed.</p><p>If you&#8217;re reading this and something jumped out at you, reach out to either me or a someone &#8220;digital&#8221; you know. Maybe you got a process at work that&#8217;s always been annoying but you assumed was just &#8220;how it is&#8221;. Maybe it&#8217;s the stuff you&#8217;ve stopped complaining about because it feels too small to fix.</p><p>Just reach out, because like Adam, you never know, it could be solvable and we could be changing the way you work.</p><p>Even if we end up just talking, the conversation is free and at least you&#8217;ll walk away with some direction on how to see things differently.</p><p>If it&#8217;s systematic, it&#8217;s solvable.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually do that.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Which Rhino File Goes With Which Grasshopper File?]]></title><description><![CDATA[It really is like playing roulette sometimes]]></description><link>https://www.codedshapes.com/p/which-rhino-file-goes-with-which</link><guid isPermaLink="false">https://www.codedshapes.com/p/which-rhino-file-goes-with-which</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 14 Apr 2026 02:00:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hKaw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hKaw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hKaw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hKaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2935961,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193935766?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hKaw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hKaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2020a426-ba88-43bd-b29e-3b5e102eab84_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m looking at a folder with four Rhino files and six Grasshopper files. I have &#8220;ProcessStructuralGrid.gh&#8221; open but which Rhino file does it need? Was it <code>ProjectA_Grid.3dm</code> or <code>ProjectA_Structure_v3.3dm</code>?</p><p>I too like to gamble.</p><p>So, I chose <code>ProjectA_Structure_v3.3dm</code>.</p><p>Well</p><p>I chose.......</p><p>poorly.</p><p>It&#8217;s a sea of red components. And if you&#8217;ve worked with Grasshopper before, you&#8217;ll know that no one ever remembers which Rhino file was used.</p><h3>The Counterintuitive Part</h3><p>Most software we use follows a simple rule, one program equals one file. Open Word, you get a .docx. Open Revit, you get a .rvt. The file <em>is</em> the project. Or if it isn&#8217;t, a program like Revit at least gives you &#8220;links&#8221; that tell you what other files are associated to the main file.</p><p>But Rhino and Grasshopper don&#8217;t work that way. Neither does Revit and Dynamo. You&#8217;ll have at least two file types to manage for a single workflow. With RhinoInside.Revit, you&#8217;ll have at least three. One Revit. One Rhino and one Grasshopper file for a single project. They&#8217;re separate things, but they need each other.</p><p>And that&#8217;s just one Rhino file, wait until you work with Rhino <em>worksessions</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FgBM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FgBM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 424w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 848w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 1272w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FgBM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png" width="1416" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&quot;width&quot;:1416,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:79852,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193935766?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FgBM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 424w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 848w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 1272w, https://substackcdn.com/image/fetch/$s_!FgBM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53638164-a1f6-45f0-97b3-668f08bf0245_1416x979.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>None of this sounds like a big deal because when we are working on the workflow, we intuitively remember all the files we are working with. But give yourself three months and I promise that you&#8217;ll forget. (or maybe that&#8217;s just me)</p><p>Also, what happens if someone has to open your script ? How will they know which Rhino file it uses. Well, I guess they just have to play Rhino roulette and hope they get lucky.</p><h3>The Solution</h3><p>So, I made a free plugin called <a href="https://www.food4rhino.com/en/app/recall-rhino">Recall Rhino</a>. It&#8217;s very simple, it basically saves the path to the Rhino file / worksession you had open into your Grasshopper file.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M70J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M70J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 424w, https://substackcdn.com/image/fetch/$s_!M70J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 848w, https://substackcdn.com/image/fetch/$s_!M70J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 1272w, https://substackcdn.com/image/fetch/$s_!M70J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M70J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png" width="922" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:922,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54957,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193935766?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M70J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 424w, https://substackcdn.com/image/fetch/$s_!M70J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 848w, https://substackcdn.com/image/fetch/$s_!M70J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 1272w, https://substackcdn.com/image/fetch/$s_!M70J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F270b9c1d-9b52-4328-b062-5107187c7b98_922x280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It means, you have one button to save the file and one button to re-open the file.</p><p>I&#8217;m pretty sure I am not the first to make this but I made the plugin with only this component. It means you won&#8217;t get a whole toolbar of other stuff.</p><p>That&#8217;s it. No more guessing which Rhino file belongs to which Grasshopper file.</p><p><em>I thought of making one that remembers the Revit file too. But we always open the Revit file first before the Grasshopper file. So I&#8217;m still thinking of a way to solve that problem.</em></p><h2>Final thoughts</h2><p>This isn&#8217;t some next level hack but it does solve a very annoying pain that I have. And I hope it will save you the same pain too.</p><p>And if you&#8217;re working in a team, or if you&#8217;re building definitions that other people need to use, this small component is quite valuable.</p><div class="pullquote"><p>Thanks for reading <br>Consider being a paid member to get access to my Grasshopper courses, guides and scripts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[The Productivity Performance]]></title><description><![CDATA[Sometimes we should just let the work be done and stop forcing ourselves to be productive]]></description><link>https://www.codedshapes.com/p/the-productivity-performance</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-productivity-performance</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 09 Apr 2026 03:01:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Tkme!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tkme!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tkme!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tkme!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2775800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/193031684?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Tkme!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Tkme!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997f9fc9-b039-4a51-8f80-a330e019d1b0_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Last Tuesday morning was packed.</p><p>I was modelling some facade elements in Rhino for a client when I got a message from another client. The plugin that I made for them had a bug. Something about the output geometry not matching their new inputs.</p><p>I knew that if I switch to the other task, this facade model wouldn&#8217;t get done. So, <a href="https://www.codedshapes.com/p/going-fast-isnt-the-same-as-rushing?r=yraxj">I took my time to finish</a> it first before switching over to debug the tool. Thankfully, it wasn&#8217;t a hard issue, so I put in the fix, ran a quick test and gave it back. I told them that I would run it through more vigorous testing later.</p><p>And.... just like that, it was 3pm.</p><p>My day started at 7am and I haven&#8217;t had lunch yet. So, that was the next thing I did.</p><p>The break did me good, because I was roaring to finish off my work for today. But what was work ?</p><p>Well, let me check my inbox to see any new emails.</p><p><em>No new emails.</em></p><p>Oh right, I replied to them all. Let me check my task list.</p><p><em>No outstanding tasks.</em></p><p>Right, I did all of them too.</p><p>So then, what do I do now ?</p><p>Maybe I should refactor that section of the codebase that&#8217;s been bugging me. I pulled the latest code down and started looking through it. I was about to start but <em>is this really the best use of my time?</em> The code works. I know it&#8217;s not tidy but it works and no one is asking me to clean it up.</p><p>Okay, maybe I should write a few outreach messages instead. So, I open LinkedIn and start scrolling through connections, trying to figure out who to reach out to. But I had already messaged a few people yesterday. Haven&#8217;t I already done my quota of reaching out for the week? I know I can do more but <em>is that really the best use of my time?</em></p><p>Alright, I could finally clean up that old Grasshopper script I keep saying I&#8217;ll get to. So, I open the file, but same as before, <em>is this really the best use of my time?</em></p><p>The next two hours were more of the same thing. I couldn&#8217;t stick to a single task. All I did was open tabs and programs until computer complained about it&#8217;s memory. Eventually, like my computer, I got so tired of deciding that I closed everything and went for a walk.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe to get a guide on how to apply computational design to your work</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>The need to be productive</h2><p>I wonder if others grew up in their careers always needing to prove themselves. And then once they did, that habit (previously good, now bad) just stuck with them. Like there&#8217;s this constant need to ensure we are valuable.</p><p>I was anxious because I wasn&#8217;t doing anything productive. So I kept pulling at straws finding for some way to feel productive. I kept trying new tasks but none of it felt important because <em>I was trying to decide and execute at the same time</em>.</p><p>Really, what I should have done is allowed myself to take a longer break, since I worked at 150% in the morning.</p><p>It&#8217;s strange. I have read enough books to know that I need good sleep. That I need to go to the gym or eat healthily. But when it comes to taking a break from work, I don&#8217;t find myself listening to the literature at all. I have this tendency to want to be productive all the time. But much like Icarus, if I keep working like that I&#8217;ll burn out.</p><p>The need to always want to be productive or as they call it, &#8220;high agency&#8221; serves me well. It&#8217;s this drive to deliver things and provide value for other people. But when it&#8217;s the excuse I use to deny myself a break, that&#8217;s when it works against me.</p><p>I think a lot of people in digital roles feel this. The role doesn&#8217;t have built-in proof of value. An engineer has drawings going out the door. A project manager has deadlines being tracked. But our<a href="https://www.codedshapes.com/p/how-i-actually-know-if-my-scripts?r=yraxj">work is often hard to measure</a>.</p><p>So we fill it with things that makes us seem productive. Right, we &#8220;improve&#8221; things. We refactor. Worst of all, <a href="https://www.codedshapes.com/p/my-three-biggest-failures-in-computational?r=yraxj">we build things no one asks us for</a>. We cling to this idea that we have to be building things all the time because it&#8217;s our value.</p><p>But when the work is done. We shouldn&#8217;t try to force new things just because we feel insecure about our value. I&#8217;d delivered everything and more that morning. I should have taken the afternoon off, it was a natural gap between projects. But instead, I forced it into something productive and wasted two hours <em>performing productivity</em> because I felt guilty about being finished.</p><p>This is the hardest thing when you transition from a role where you&#8217;re paid hourly to where you&#8217;re paid for the value. Not every hour is equal and not every hour needs to justify itself. The value you created that morning doesn&#8217;t disappear because you went for a walk at 2pm.</p><p>Sometimes it&#8217;s just more productive to rest and not try to squeeze productivity in for the sake of it. </p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually do that.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[A Faster Way to Match Geometry in Grasshopper]]></title><description><![CDATA[Tree search beats normal search]]></description><link>https://www.codedshapes.com/p/a-faster-way-to-match-geometry-in</link><guid isPermaLink="false">https://www.codedshapes.com/p/a-faster-way-to-match-geometry-in</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 07 Apr 2026 02:00:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!217V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!217V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!217V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!217V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!217V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!217V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!217V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2680039,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!217V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!217V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!217V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!217V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a833e0-3020-4c20-9f6a-09dd39f4acf8_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.codedshapes.com/p/searching-everything-is-slowing-your">Last week</a> I showed you the problem I had.</p><p>Using Grasshopper to check 5,000 elements against 5,000 elements takes a long time. Even for Grasshopper.</p><p>My solution as I&#8217;ve hinted, is to use a data structure known as an <em>RTree</em> to speed this search up.</p><p>Let me show you how this actually works.</p><h2>What is an RTree ?</h2><p>The core idea behind an <em>RTree</em> is quite simple.</p><p>Instead of measuring the distance from every point to every other point, Grasshopper first builds a spatial index of the points. That index divides space into a hierarchy of locations.</p><p>When you query for the closest point, it rules out entire regions instantly and only does the precise distance calculation on the small set of candidates that are actually nearby.</p><p>The result turns a four hour search operation into seconds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BpzI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BpzI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 424w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 848w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BpzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png" width="1451" height="1207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1207,&quot;width&quot;:1451,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BpzI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 424w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 848w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!BpzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ca026c-98f6-4dd1-bd8a-b9d578219750_1451x1207.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Instead of checking every point, an <em>RTree</em> allows the computer to eliminate hundreds of points immediately. This is the reason it drastically speeds up the operation.</p><p>Okay, so theoretically, this makes sense but how do we set this up ?</p><div class="pullquote"><p><em>P.S. if you&#8217;re a paid member of CodedShapes, you have access to some real examples of how I have used these components.</em></p></div><h2>Setting it up in Grasshopper</h2><p>The plugin doing all the work here is <a href="https://www.food4rhino.com/en/app/lunchbox#downloads_list">LunchBox</a>.</p><p>In it, it gives you a few components that creates an <em>RTree</em> and does the <em>RTree</em> searching.</p><p>All you have to do is feed in a list of search points to build the <em>RTree</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OeEj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OeEj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 424w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 848w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 1272w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OeEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61508,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OeEj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 424w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 848w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 1272w, https://substackcdn.com/image/fetch/$s_!OeEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b6f867-9e87-43de-b1c6-407a8d5519d6_1456x763.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then use the <em>RTree Closest Point</em> component to search for the points within the <em>RTree</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8JDy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8JDy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 424w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 848w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 1272w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8JDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png" width="1455" height="693" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:693,&quot;width&quot;:1455,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72183,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8JDy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 424w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 848w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 1272w, https://substackcdn.com/image/fetch/$s_!8JDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e1bbd67-c5d5-4600-8050-36b4b57cee7d_1455x693.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p> It's that simple. It doesn't seem like much with few points, but you'll notice the difference, the more points you feed in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u8jO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u8jO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 424w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 848w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 1272w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u8jO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png" width="705" height="290" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:290,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58475,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u8jO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 424w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 848w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 1272w, https://substackcdn.com/image/fetch/$s_!u8jO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5079785-79c2-49c3-a9a4-db7f51f0c9b5_705x290.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At 5000 points, an <em>RTree</em> search took 11ms while the regular closest point took 1.1s. That&#8217;s a 10x improvement with not much change to the script.</p><p>When I first saw this, it blew my mind.</p><h2>Using an RTree to pair members</h2><p>Okay, but what if you have curves and not points? Like my problem, I had 5,000 curves, not 5,000 points.</p><p>Well, if you have curves and want to make use of the speed of an <em>RTree</em> search, all you have to do is to <em><strong>find a point that best represents your curve</strong></em>.</p><p>This means, you can use the <em>mid-point</em> (or if you&#8217;re good with data structures, a list of points) that represent your curve. In my case, because things were mostly orthogonal using the <em>mid-point</em> was good enough.</p><p>Instead of a curve to curve search. It became a midpoint to midpoint search. And using <em>RTrees</em> made this operation very quick.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Jxh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Jxh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 424w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 848w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 1272w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Jxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png" width="1456" height="555" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:555,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89468,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192934735?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0Jxh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 424w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 848w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 1272w, https://substackcdn.com/image/fetch/$s_!0Jxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62e5be39-cafb-4130-be6f-13805e509a8c_1713x653.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Using an RTree to find points within a distance</h2><p>You can also use <em>RTrees</em> to find the closest points for a given distance. Especially if you know that you&#8217;ll have many results to whatever it is you&#8217;re searching.</p>
      <p>
          <a href="https://www.codedshapes.com/p/a-faster-way-to-match-geometry-in">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Spreadsheet Is Never Just a Spreadsheet]]></title><description><![CDATA[It's normally a symptom of something else]]></description><link>https://www.codedshapes.com/p/the-spreadsheet-is-never-just-a-spreadsheet</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-spreadsheet-is-never-just-a-spreadsheet</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 02 Apr 2026 02:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4oj6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4oj6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4oj6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4oj6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2856270,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192480991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4oj6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!4oj6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F814c4a29-40da-421e-b161-d67abc7ace57_3300x1858.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The brief said &#8220;develop and enhance&#8221; their productivity tools in AutoCAD.</p><p>They had some tools developed by different people over the years and were maintaining them in-house. But they didn&#8217;t have the expertise to extend them, which is why they got me in.</p><p>In the first meeting, we started discussing what I could actually help with. Things to fix, things to improve. I mean &#8220;develop and enhance&#8221; doesn&#8217;t tell me much at all. I needed to understand what was actually hurting them.</p><p>They told me that they actually have a system to track bugs and features from their users.</p><p><em>I was like wow. Most companies don&#8217;t actually invest in something like this.</em></p><p>So, Aiden (not his real name) started sharing his screen.</p><p><em>Honestly, I don&#8217;t know what I was expecting.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XV_f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XV_f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 424w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 848w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 1272w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XV_f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codedshapes.com/i/192480991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XV_f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 424w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 848w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 1272w, https://substackcdn.com/image/fetch/$s_!XV_f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bfe27c9-0d31-43ac-aa17-8ec000b58434_1725x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It was a spreadsheet.</p><p>Their &#8220;system&#8221; was a spreadsheet.</p><p>I shook off my initial shock and started asking some questions. What were the most critical problems right now ? Are there any common features that are highly requested ? Are they looking for a complete overhaul?</p><p>And try as Aiden did, he couldn&#8217;t use the spreadsheet to answer the questions. We spent the rest of the meeting trying to find the next few things to implement in the tool. The spreadsheet was so complicated and messy that it was hard to figure out which items were critical without reading through all of them. They just knew they needed the tool to be &#8220;better&#8221;. We eventually ran out of time but I at least understood more of their problem. <em>hint: it&#8217;s not the tool itself</em></p><p>So, I had another call with Aiden later and he told me the story of that &#8220;system&#8221;.</p><p>It started out with good intentions. The tool had scaled to the entire company and management wanted a better way to track bugs and features. That&#8217;s a good reason. But instead of picking one out of the twenty bug-tracking tools that already exist, they spent 3 months in meetings deciding on how to do it. And it&#8217;s <em>still</em> ongoing.</p><p>They&#8217;re debating programs and workflows. They brought in their legal team to create a new policy. They wanted the quality committee, the technical committee, the directors, you know, the people who don&#8217;t have time, to all approve the new system before anything could move forward.</p><p>Meanwhile, Aiden still needed a way to track the bugs and features. So, he spent his nights and whatever free time he had building and maintaining that Excel sheet. Manually logging every feature request and bug that came through him.</p><p>It became clear that before we could even work on the tool, we needed to fix this &#8220;system&#8221; first. There was a lot of useful information buried in it, but extracting and managing it was painful.</p><p>So, I sent in a variation to the client, suggesting that we work on the infrastructure that supports the tool first, before we go in to fixing the tool itself.</p><p>And to my surprise, they accepted it. Maybe Aiden did some &#8220;persuasion&#8221; on his side.</p><h2>The tool wasn&#8217;t actually the problem</h2><p>When it comes to digital tools, there&#8217;s a misconception that only the tool matters. But the infrastructure around it is equally important. No amount of clean code or better architecture can fix a broken infrastructure.</p><p>Deployment. Bug/feature tracking. Usage tracking. Data safety. Change management. These are all things that need to exist to support the tool itself. And most of them were missing or held together by Aiden&#8217;s spreadsheet.</p><p>Yes, the client needed someone to make the tool better. But they also needed help clarifying <em>what</em> to fix and <em>what</em> to build next. They needed a better overall system. And the work doesn&#8217;t stop just because you can&#8217;t decide on one.</p><h2>Indecision is how homebrew gets created</h2><p>There&#8217;s a bias towards meetings and &#8220;planning&#8221; for new processes which is especially pertinent in larger organizations. And I think, in reality, it&#8217;s because no one wants to take responsibility. If I can hold a meeting with every important person and get them to sign off on it, I&#8217;ll be absolved of blame if something goes wrong.</p><p>I get that. But adding more people to the decision pool just makes decisions take longer. There&#8217;s a reason that the saying &#8220;too many chefs in the kitchen&#8221; exist. At some point, involving too many people will hurt the process.</p><p>And while you debate, people start to homebrew things because the work doesn&#8217;t stop.</p><p>I&#8217;ve seen it many times. Engineers making their own tools with AI because the company can&#8217;t decide on a program. Drafters using their personal computers to learn how to code because the company wants to roll out a &#8220;training program&#8221;, but it&#8217;s been &#8220;work in progress&#8221; for 7 months now.</p><p>Bug and feature tracking is not a novel problem. You&#8217;re not asking for something cutting edge. There are plenty of tools that do this out of the box. The biggest challenge was getting everyone to decide on something.</p><h2>What I look for now</h2><p>I used to go into client engagements focused entirely on the technical work. After all, that&#8217;s what I&#8217;m hired to do. Build the tool, increase their efficiency.</p><p>But now, instead of just looking at the tool, I keep an eye out of systemic issues like these.</p><p>Sometimes, even though the tool is the pain point, a broken tool is actually a symptom of a bigger systemic problem. And if it makes sense for me to help with that, I will.</p><p>In the absence of anything better, the Excel tracker worked. But it was fragile, and it only scaled as far as Aiden&#8217;s patience did.</p><p>The decision to build a proper system was always going to get made. The only question was when and who would pay the cost in the meantime. It&#8217;s almost always the people who actually have to use the system.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually do that</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codedshapes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codedshapes.com/subscribe?"><span>Subscribe now</span></a></p></div>]]></content:encoded></item></channel></rss>