<?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, 04 Sep 2026 05:51:17 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 Proposal I Shouldn’t Have Written]]></title><description><![CDATA[Part of confidence is being able to stand my ground]]></description><link>https://www.codedshapes.com/p/the-proposal-i-shouldnt-have-written</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-proposal-i-shouldnt-have-written</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 03 Sep 2026 00:01:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!czww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_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_!czww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!czww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!czww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!czww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!czww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!czww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff77dd16-7189-491c-81f6-7c6529f1d83d_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;:2831480,&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/213229049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_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_!czww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!czww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!czww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!czww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff77dd16-7189-491c-81f6-7c6529f1d83d_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 aria-hidden="true" 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><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 watching TV after dinner when I heard my phone buzz on the table.</p><p>So, like clockwork, I picked it up to check. I had a new email.</p><p>It was from Daniel (not his real name), a potential client I&#8217;d spoken to the week before. I&#8217;d just wrapped up some discovery work for his firm and sent him a proposal.</p><p>I was actually surprised at how quickly he responded. I had been planning to follow up too. Anyway, I was proud of this proposal. I had done my research, explored what was possible and believed the tool we were about to build would be good for both of us. It would improve his workflow, and I sure could use the money. Him replying this quickly sounds like good news.</p><p>So, I opened the email.</p><p>Daniel thanked me for all the work, but they had decided <em>not to proceed.</em></p><p>I&#8217;d like to tell you my heart sank, but really, I just locked my phone and continued watching TV.</p><p>The TV kept playing, I think I went through two or even three episodes and I couldn&#8217;t tell you what was on them. My mind was elsewhere. I was trying to figure out what had gone wrong.</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><p><strong>Got a workflow in mind ? <a href="https://codedconstructs.com/contact/">Let&#8217;s build it together.</a></strong></p></div><h2>The discovery went really well</h2><p>After a few back-and-forth emails, we&#8217;d finally made it to a call.</p><p>Only five minutes in, we were already riffing on ideas for automating his current preliminary design process. We were on the same wavelength too. I was finishing his sentences, or so it felt. He&#8217;d even been using Claude to help him out. But he just couldn&#8217;t get Claude to talk to the engineering program. So, I didn&#8217;t need to convince him about automation. He was already a strong proponent of it.</p><p>The biggest problem we identified was that his team was spending too long cleaning and redrawing the architect&#8217;s input before they could begin designing. When they finally produced some structural advice, the plans would change and they would have to start all over again. The loop from architect to structural advise was too manual and too long.</p><p>So, to help, Daniel wanted to take a floor plan from an architect, pass it through some kind of staging area for the engineering inputs, then produce a preliminary analysis model. We&#8217;re talking about dragging a file, filling in a form and getting an analysis model out of it.</p><p>I could already picture the workflow, and as we riffed on ideas, he seemed ready to start. So, the call ended with me requesting sample files to iron out all the details of this workflow. To put pen to paper.</p><h2>Two out of five</h2><p>I spent the next couple of days researching Daniel&#8217;s engineering program, working out what its API would let me do and prototyping the workflow.</p><p>It turned out that two of the five things he wanted to automate weren&#8217;t supported. Maybe there was some hacked way around it, but the API didn&#8217;t support them. So, I sent Daniel a quick email with an update, a few images of the prototype and how I envisioned the tool working. I also explained that I would continue with the proposal because we could still solve three of the five things.</p><p>He didn&#8217;t reply, so I treated that as permission to continue. No news is good news, I told myself. Plus, the call and emails had gone so well that I assumed Daniel just wanted to start.</p><p>I spent the day writing up the proposal. I worked through the costing, finalised the workflow, documented the tool requirements and defined how we would test it. By the end, I had written a proposal for something I could build and <a href="https://www.codedshapes.com/p/how-i-actually-know-if-my-scripts">truly believed would be useful</a>.</p><p>So, I sent it off, believing we were about to change how his firm worked. Well, then I got that email.</p><h2>Asking for feedback</h2><p>The morning after the rejection, I read the email a <s>couple</s> ten more times, hoping it would tell me what I had done wrong. Maybe there was a hint, a line, something I missed while being too excited to deliver.</p><p>The call had gone so well and the proposal seemed so clear. What in the world happened?</p><p>After staring at the same email for far too long, I still had no explanation. No hint of what had gone wrong. I could almost cite you the email from memory.</p><p>So, I decided to ask Daniel.</p><p>The worst thing that could happen was that he wouldn&#8217;t reply. So, I drafted something and sent it.</p><p>To my surprise, Daniel replied.</p><p>He was generous enough to give me some honest feedback. Which was when I found out that those two things the API didn&#8217;t support were actually the critical features for the automation. The remaining three would have improved his workflow, but his existing process handled them well enough. He couldn&#8217;t justify paying for something that he already did decently. It just wasn&#8217;t painful enough.</p><p>I&#8217;ve written before about <a href="https://www.codedshapes.com/p/how-to-know-if-your-workflow-is-actually">how to know whether a workflow is actually worth automating</a>. I failed to ask the question again after the scope changed. I had been comparing my proposal with the friction in his workflow. Daniel was comparing it with an existing process that already worked and cost him nothing new. Why would he pay for something only slightly more refined?</p><h2>I should have pushed for clarity</h2><p>The feedback helped, but I still felt blindsided. In the moment, it felt like I&#8217;d done nothing wrong. The call felt aligned, and the tool felt valuable.</p><p>The problem was that I didn&#8217;t stop to think when we got new information. I overlooked the fact that a change in scope meant less value for Daniel.</p><p>I had already argued that <a href="https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing">it takes two people to build the right thing</a>, yet I kept pushing through on my own after getting new information. Yes, Daniel didn&#8217;t reply to my first email, but I should have followed up or insisted on another call. I should have asked:</p><p><em>Given those limitations, is the remaining workflow still valuable enough for you to pursue?</em></p><p>That would have saved me the time I spent writing a proposal for a scope Daniel no longer valued. It might also have led us to another way around the limitations, or a different workflow we could have explored together. I can&#8217;t know. What I do know is that I should have waited until the workflow was <a href="https://www.codedshapes.com/p/the-three-agreements-before-i-build">clear and </a><em><a href="https://www.codedshapes.com/p/the-three-agreements-before-i-build">agreed</a></em><a href="https://www.codedshapes.com/p/the-three-agreements-before-i-build"> on</a>.</p><p>Technically, everything went well. I understood the problem, the workflow and its limitations. I didn&#8217;t understand which parts mattered enough for Daniel to pay to change them.</p><p>I&#8217;ve learnt my lesson. Next time the scope changes in any meaningful way, I&#8217;ll get back on a call before I open the proposal document. If we can&#8217;t agree that what remains is still worth pursuing, there is no proposal to write yet.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Guides, Courses and Scripts : </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 7: Changing How I Price My Work]]></title><description><![CDATA[Sometimes the market changes your mind]]></description><link>https://www.codedshapes.com/p/week-7-changing-how-i-price-my-work</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-7-changing-how-i-price-my-work</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 28 Aug 2026 07:00:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/6aCTiVkHrSE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-6aCTiVkHrSE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;6aCTiVkHrSE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/6aCTiVkHrSE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Alright, week 7.</p><p>Mostly business as usual. Some product work, meetings with potential clients and still creating content. I am also happy to report that the time blocking method from l <a href="https://www.codedshapes.com/p/week-3-strong-on-paper">week 3</a> is still going strong.</p><p>The more interesting news is that last week&#8217;s in-person meeting turned into a real proposal this week. Writing the reply made me realise how much trust my usual pricing model asks from a new client.</p><h2>A smaller first bet</h2><p>Until now, I have generally offered fixed-fee development followed by a retainer for any updates or new features.</p><p>My theory, and one that has worked with previous clients, was that a fixed fee made the cost predictable. If the work took more time or effort than expected, I ate the cost on my end. The client knew what they would pay, with no hidden costs.</p><p>But the last few weeks have taught me that a fixed fee can still feel risky from the client&#8217;s perspective, especially if it is our first time working together.</p><p>Let&#8217;s say you were the client.</p><p>You&#8217;ve reached out to me, we&#8217;ve gone back and forth over email and agreed to a call or even an in-person meeting. The meeting goes well. I understand what you need and we both come away with a good feeling.</p><p>Then, a week after sending me some sample models and files, you receive a proposal that says the automation will cost $10,000.</p><p>Now you have to decide whether the value is worth that cost. You also have to trust that I can deliver the tool you want, even though we&#8217;ve never worked together before. And how sure are you that this tool is what you need in the first place?</p><p>Even after a good meeting, that is a big first bet.</p><p>In the past few weeks, I tried to close that gap by doing deeper unpaid discovery. I spent more time clarifying the problem and working out the likely solution before sending a proposal.</p><p>That makes the scope clearer, but the final jump is still there. The client still has to decide whether the $10,000 is worth it, while I might spend days working through a proposal that gets rejected.</p><p>Writing this week&#8217;s proposal made that gap hard to ignore.</p><p>So, I am trying capped hourly work, something I was against from the beginning.</p><p>I estimate how many hours the work should take and agree on a maximum with the client. If it takes less time, they only pay for the hours I used. If it looks like I will exceed the cap, we stop and talk first.</p><p>I have written before that the <a href="https://www.codedshapes.com/p/the-business-models-of-digital-work">hourly rate model is a poor proxy for value</a>. I still think that is true. But it is a useful proxy for effort, and everyone understands it.</p><p>Fixed pricing still has a place. For a first engagement, though, capped hourly work gives the client a ceiling without asking them to pay for the whole ceiling if the work takes less time. It also means I can take on smaller scripts and automations that do not need to become full-blown applications.</p><p>It feels more like becoming a client&#8217;s automation partner. We can start with one piece of work, learn how we work together and decide where to go next.</p><p>I don&#8217;t know if this will work long term, or even short term. But I won&#8217;t know until I try.</p><p>Alright, thanks for reading. </p><p>Onward to week 8.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[What Does It Take to Trust a Custom Tool?]]></title><description><![CDATA[Digital Ownership is more than just building]]></description><link>https://www.codedshapes.com/p/what-does-it-take-to-trust-a-custom</link><guid isPermaLink="false">https://www.codedshapes.com/p/what-does-it-take-to-trust-a-custom</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 27 Aug 2026 00:01:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DlZI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_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_!DlZI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DlZI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DlZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d18a39fc-6715-49f4-9a73-f421ea9019ab_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;:2805770,&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/212228010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_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_!DlZI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!DlZI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd18a39fc-6715-49f4-9a73-f421ea9019ab_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 aria-hidden="true" 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><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>On the bottom right corner of any engineering or architectural drawing, you can find the initials of the people who drew, checked and approved it. Somewhere nearby, you can usually see a history of how the drawing has changed and who worked on it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gAJD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gAJD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 424w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 848w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 1272w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gAJD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png" width="1456" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1223531,&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/212228010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.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_!gAJD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 424w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 848w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.png 1272w, https://substackcdn.com/image/fetch/$s_!gAJD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd34315f4-fa91-4e8d-8871-b023789e1c05_2172x724.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 aria-hidden="true" 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><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 regular title block on a drawing</figcaption></figure></div><p>Yes, it gives people credit but more importantly, it shows front and center who is responsible for it. It&#8217;s not &#8220;who&#8217;s the amazing genius that drew this&#8221;, it&#8217;s more &#8220;if this went horribly, who do we blame&#8221;.</p><p>And yeah, it makes sense. A drawing depicts something real and if it goes wrong, people can get hurt. It&#8217;s why the approval process can be so rigorous. Only a qualified person can sign off on drawings and there&#8217;s usually a round or two of review before someone on site sees it. Heck, even with all of this, companies still pay a lot in insurance because the risk doesn&#8217;t go away.</p><p>Now, imagine me. Coming along and <a href="https://www.codedshapes.com/p/im-starting-codedconstructs?r=yraxj">pushing digital work in the AEC</a> to these people. But there&#8217;s <a href="https://www.codedshapes.com/p/your-tools-dont-last-because-its?r=yraxj">no title block for a script or a tool</a>. Sure, my name is on the tools that I make, but it doesn&#8217;t carry the same weight. If the tool goes badly, I might lose a client or damage my reputation. The professional responsibility still lies with the person who signs off on the drawing, not the tool or how we got there.</p><p>Their name is on the drawing, their registration sits behind that name and the company has insurance in case something goes wrong. It&#8217;s also why we don&#8217;t yet let AI design buildings on its own.</p><blockquote><p><em>&#8220;AI cannot be held accountable, nor can it replace the training, experience, and judgement of a professional engineer.&#8221;</em> - <a href="https://www.asce.org/advocacy/policy-statements/ps573---artificial-intelligence-and-engineering-responsibility">ASCE, Policy Statement 573</a> (2024)</p></blockquote><p>I still have a responsibility as the person who made it. I should be responsible for how the tool behaves, what its limits are and what happens when it stops working. That is a different kind of responsibility from the one carried by the engineer, but there&#8217;s just no formal bearing for it.</p><p>The lack of accountability on with tools and AI is why human judgement has to stay in the loop, but it only answers one side of the problem. Because if the engineer still carries the professional responsibility, what would make them put their name behind a custom tool built by someone else?</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><p><strong>Got a workflow in mind ? <a href="https://codedconstructs.com/contact/">Let&#8217;s build it together.</a></strong></p></div><h2>The answer is trust</h2><p>When someone looks into automating something, we don&#8217;t have to jump straight to custom tools. Think about using Excel instead of pen and paper.</p><p>When you work out 1 + 1 by hand, you use your judgement at every step before writing down &#8220;2&#8221; as the answer. When you do the same thing in Excel, you exercise that judgement earlier. You decide that Excel can be trusted, then allow it to perform those steps for you.</p><p>You haven&#8217;t given up responsibility for the answer, because if it spits out &#8220;1654&#8221;, you as the human need to know that&#8217;s wrong. But you have given up some direct control over how it was produced. Part of the judgement moves into the tool while the accountability stays with the person approving the result.</p><p>That decision is easy with something like Excel. It has been around for years, its limits are familiar and there are established ways of checking its output. Thousands of other people use it every day. It has earned enough trust that most of us don&#8217;t stop to question every calculation.</p><p>A custom-made tool like a plugin or standalone application doesn&#8217;t have any of that.</p><p>Not only would it have been made recently (time hasn&#8217;t had a chance to test it), every tool is arguably one of a kind. Because it&#8217;s <a href="https://www.codedshapes.com/p/your-script-doesnt-need-to-work-on?r=yraxj">unique to each client&#8217;s workflow</a>. It&#8217;s kind of the point. Industry-standard tools are made to work for everyone, while a custom tool is developed around the way one team works and the exact problem they need to solve.</p><p>It&#8217;s like the difference between buying a suit from a shop and having one made for you. The one from the shop is familiar and predictable, but it probably won&#8217;t fit perfectly. The custom suit should fit the way you need it to, but you have to trust that it won&#8217;t rip apart the minute you move too much.</p><p>The benefit of a custom tool is that bespoke fit. The cost is that it has no history, broad adoption or familiar process to fall back on. You can&#8217;t just ask someone next to you why your custom tool isn&#8217;t working, the same way you can with Excel. Without the custom tool, the work might be slower and painful, but at least you can see and control every step.</p><p>So what gives a custom tool enough credibility for an engineer to put their name behind its output? It can&#8217;t borrow trust from years of use. Someone has to take responsibility for earning that trust.</p><h2>Building trust with digital ownership</h2><p>It&#8217;s not enough to say &#8220;trust me bro, the tool I build will solve all your problems&#8221;.</p><p>Ownership is how we make a custom-built tool less of a leap of faith. It&#8217;s about reducing the risk and clarifying what the tool does, what it needs and what happens after it has been built. <a href="https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing">It&#8217;s really a two-way thing.</a></p><p>I don&#8217;t want to come in, tell you how to do your job and then leave when things &#8220;get real&#8221;. When I say ownership, I mean having a real stake in what happens after the decision to build. You should be able to trust what I&#8217;ve built, know that I can explain what happened when it fails and have a plan for what happens next. The engineer still owns their judgement and the final call on the output. The part I can own is how the tool behaves and what it produces when it&#8217;s used appropriately.</p><p>That responsibility doesn&#8217;t have to stay with me forever, but it can&#8217;t disappear when the build ends either. It needs a known place to go.</p><p>For a tool that has never existed before, there are three questions that define ownership to me. They follow the life of the tool: what it needs to achieve before we build, how people can understand it while they use it, and who looks after it afterwards.</p><p>Then, when we can answer these questions, we have to <em>write them down</em>, so that they hold whoever built the tool accountable to the people relying on it. It turns the <a href="https://www.codedshapes.com/p/being-a-computational-designer-is">abstractness of digital work</a> into something with a clear input, steps and outputs.</p><h3>How do we ensure the tool does what you need?</h3><p>The first risk is that it doesn&#8217;t do what you need. It&#8217;s not broken, it just doesn&#8217;t solve the problem the way you thought it would. It&#8217;s like making a wish with an evil genie, wish to be the smartest in the world and the genie does it by making everyone around you stupid. You got the result but just not what you actually wanted.</p><p>So, the first step before building anything is to get clear on what it is we are actually solving. It&#8217;s not just a &#8220;let&#8217;s automate this&#8221; and we just do it. That&#8217;s why the <a href="https://www.codedshapes.com/p/the-three-agreements-before-i-build">scoping conversation</a>, prototyping and research are a big part of the work. They are often treated as the necessary evil before building the actual tool, but it&#8217;s really the most important part.</p><p>The whole point of a custom tool is to build something that solves your problem the way you need it to. If we don&#8217;t agree on the problem and what a useful result looks like, we can&#8217;t build a tool that is actually valuable for you.</p><p>The suit analogy matters here too. A tailor can&#8217;t make something fit by guessing. You have to get fitted, choose the material and decide on the style. The tailor should make recommendations, but ultimately you have to decide if it&#8217;s something you want. Scoping a custom tool works the same way.</p><h3>How do we know what the tool is doing?</h3><p>Once we&#8217;ve ironed out the specifics of what the custom tool will solve, how does it go about doing that?</p><p>In Excel terms, what happens when I put in <code>1 + 1 * 10</code>? Excel gives me 11 because it performs the multiplication first. It has the same rules that we use in our heads, so that the steps it performs is correct.</p><p>Understanding a custom tool works the same way. We need to clarify the steps it takes and the assumptions it makes. For a complex tool, this happens at a high level so that everyone involved can understand it. You don&#8217;t need to understand the code, just the intention and the main steps it takes. It&#8217;s my job to communicate that to everyone involved and ensure that we all <a href="https://www.codedshapes.com/p/are-you-thinking-about-your-script?r=yraxj">agree on how the tool works</a> and what&#8217;s needed to make it work reliably.</p><p>For my engagements, this normally means testing the tool against sample models and files, then agreeing on whether the result is correct. Trying as best to simulate real world working conditions and ensuring that the tool produces the ideal output.</p><p>A tool you can&#8217;t understand is a tool you have to take on blind faith. And because it&#8217;s a &#8220;one of a kind&#8221; tool, there are no YouTube videos to help you. The person building it has to make its behavior clear enough for the people putting their names behind its output.</p><h3>Who looks after it when something changes or goes wrong?</h3><p>The first two questions can be answered during the build. The third needs an answer for as long as the tool remains in use. Once the tool is made, somebody still needs the time and authority to <a href="https://www.codedshapes.com/p/what-happens-when-the-person-who?r=yraxj">maintain it</a>.</p><p>A tool might work perfectly for the first five projects, then stop because the <a href="https://www.codedshapes.com/p/youll-never-see-me-saying-automation">software was updated</a>, the input format changed or the team started working differently. Software isn&#8217;t a &#8220;set and forget&#8221; thing. The tool has to be revisited when the environment around it changes.</p><p>There is also a difference between a defect and a changed requirement. If the tool stops working against the requirements we agreed on, that is a defect. If the software, inputs or workflow have changed, that is new work.</p><p>The point here is that there should be a clear path forward to keeping the tool usable and maintained. If a client stopped working with me tomorrow, they should still be able to understand the tool, use it and find someone else to maintain it.</p><p>I think of that person as the named tool owner. They aren&#8217;t responsible for every way somebody uses it. The engineer still owns that judgement. The tool owner understands how it behaves, keeps the documentation together, coordinates changes and makes sure problems have somewhere to go.</p><p>This responsibility could stay with the original developer, perhaps through a retainer if it&#8217;s an external person like me, or it could move to someone inside the company. Either way, it&#8217;s about making the responsibility explicit before everyone moves on. Just because the tool works now doesn&#8217;t mean the work is done.</p><p>The responsibility for the tool needs a home, and whoever takes it needs the knowledge, time and authority to act.</p><h2>Why most tools never get an owner</h2><p>A lot of internal tools don&#8217;t start as tools. They start as an answer to an immediate project problem. Someone opens Grasshopper, Dynamo, Excel or whatever else they have and builds a way through the work in front of them.</p><p>At that point, success means getting the project delivered. If the script works, it has done its job. Nobody stops to decide who owns it, how it should be tested outside that project or what happens if another team starts relying on it.</p><p>But useful tools spread. Someone shares the file, another project picks it up and eventually the person who built it becomes the default contact whenever something goes wrong. They are treated like the owner because they know the most about it, even though nobody gave them the time or authority to actually own it.</p><p>The work that would make ownership real sits between roles. Scoping the problem properly, making sure people understand what the tool does, testing it, writing things down and planning who looks after it are all part of the tool&#8217;s life. But they aren&#8217;t the visible act of building it, and inside a company they <a href="https://www.codedshapes.com/p/being-billable-isnt-the-same-as-being?r=yraxj">aren&#8217;t always billable</a>.</p><p>So when project work takes over, those are the first things to lose time. The tool can still have a builder and plenty of people using it, but no one has formally taken responsibility for what happens next.</p><p>The builder might care about it. They might work nights or weekends to keep it alive. But without an owner, the tool eventually fades away or becomes so brittle that everyone&#8217;s afraid to modify it.</p><p>This is why ownership has to be more than a name attached to the file. It has to be assigned. Somebody needs the knowledge, time and authority to look after the tool from the first conversation through to the day the workflow changes.</p><h2>What this looks like in practice</h2><p>I&#8217;m not trying to change who carries professional liability in the industry. We made the tools, so we should be responsible for how they behave. Not for how they&#8217;re used.</p><p>In practice, the answers to those three questions need three places to live.</p><p>The problem, agreed outcome, acceptance criteria and support boundaries belong in the proposal or contract. It doesn&#8217;t have to capture every detail, but it should make the commitment clear before the building starts.</p><p>The inputs, assumptions, main steps, limits and test results belong in documentation that stays with the tool. That gives the people using it something concrete to check rather than asking them to rely on memory or blind faith.</p><p>Before the build ends, the tool needs a named owner and an agreed path for maintenance or handover. That is how the responsibility survives after the original builder moves on.</p><p>That is what I mean by digital ownership. It is the responsibility around the tool that the title block gives to the drawing. When that responsibility is clear, people have a reason to trust the tool rather than taking it on blind faith.</p><p>Thanks for reading.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 6: Product Whiplash & first in-person client meeting]]></title><description><![CDATA[Good and bad hurdles, but it&#8217;s all hurdles]]></description><link>https://www.codedshapes.com/p/week-6-product-whiplash-and-first</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-6-product-whiplash-and-first</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Sat, 22 Aug 2026 00:07:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/QwkePodD8sI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-QwkePodD8sI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QwkePodD8sI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QwkePodD8sI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>You know how in TV shows, when one major problem gets solved, another one just as big (sometimes bigger) shows up?</p><p>Well, that about sums up my week.</p><p>Within a few days, I went from wondering whether my outreach was working, to getting a client meeting, to feeling dejected about my product, to finding a reason to keep building it.</p><p>Safe to say, it was not boring.</p><h2>Product building whiplash</h2><p>So, before I decided to build this product, I did all my research. I asked around, looked on the internet and got AI to do some searching for me. Maybe it was just the excitement, but I was convinced there was a real gap.</p><p>I mean, even as I started building it and looked for role models on how to price, structure and sell it, I still could not find a direct competitor.</p><p>It wasn&#8217;t like I was trying to revolutionize the industry. This was a small market gap. Still, it took some effort to make. I&#8217;m about six weeks in with about 10 hours per week and it&#8217;s not quite ready for deployment yet.</p><p>But then, I found a competitor.</p><p>All that research and asking AI didn&#8217;t even bring this up. On the surface, it did exactly what I wanted my product to do.</p><p>I started laughing. I wasn&#8217;t sure if I was relieved or angry. On one hand, I was sick of working on it. Ten hours a week for six weeks and nothing to show for it yet? Damn. I wanted it off my plate, and a direct competitor gave me an excuse to stop. On the other hand, it was something I believed in, and stopping meant throwing all that work down the drain.</p><p>So, I did what I thought was the best thing, I took a break. I went to the gym, had some lunch, <s>talked</s> vented to a few friends and complained to Claude. I worked on some other stuff before finally coming back to look at it again.</p><p>What do I do now? Have I really lost the advantage?</p><p>I took a breath and gave the competitor a spin.</p><p>About two hours of serious testing later, I realised it was a different product. It looked the same, but functioned differently and served a different market. It&#8217;s not entirely different but it was different enough that mine could still exist.</p><p>Slowly, as I realised this, I felt annoyed but excited that it wasn&#8217;t over. I wasn&#8217;t out of the fight yet.</p><p>And instead of trying to build this from my head, I had a pretty close role model. I had something to reference and learn from.</p><p>So, within a single day, I killed and revived my product.</p><h2>First in-person client meeting</h2><p>I&#8217;ve had plenty of client meetings before, so I am pretty used to them. But for better or worse, they have all been online.</p><p>This week I had my first in-person meeting. I walked into someone else&#8217;s office and sat in their meeting room. Even when I had a corporate job, I&#8217;d only done this maybe twice in my life. And that was pre-Covid, before video calls were the norm.</p><p>It felt......strange, to say the least.</p><p>I wasn&#8217;t that nervous, but it felt like a job interview. Taking the lift up, asking to meet the person and saying the words:</p><p>&#8220;Hi, I&#8217;m here for a meeting.&#8221;</p><p>It&#8217;s a bit like being in someone&#8217;s home. You are welcome there, but you are still very aware that it isn&#8217;t your space. Which I think made me more self-conscious than I expected. I had to walk in, sit down and represent the business in front of actual people.</p><p>Which made the business feel oddly real.</p><p>Alright, that was week 6.</p><p>Plenty of lessons from it all, gotta keep going.</p><p>Onward to week 7.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to get these updates directly into your inbox!</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[The Three Agreements Before I Build Anything]]></title><description><![CDATA[Clarity and Alignment]]></description><link>https://www.codedshapes.com/p/the-three-agreements-before-i-build</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-three-agreements-before-i-build</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 20 Aug 2026 00:00:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!klpE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_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_!klpE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!klpE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!klpE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!klpE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!klpE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!klpE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4457de1-4bec-4926-8a08-e7310f6bde10_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;:2616063,&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/211145707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_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_!klpE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!klpE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!klpE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!klpE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4457de1-4bec-4926-8a08-e7310f6bde10_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 aria-hidden="true" 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><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 are hints when your project is about to get expensive.</p><p>&#8220;It&#8217;s not quite right.&#8221; Or &#8220;that&#8217;s confusing.&#8221; Or my personal favourite, &#8220;it&#8217;s not really what I had in mind.&#8221;</p><p>They are all sentences I have heard after spending weeks, sometimes months, building something.</p><p>You&#8217;d think after all those meetings and documents, we&#8217;d be on the same page. Heck, you&#8217;d think after every development update, we&#8217;d be on the same page.</p><p>But no, we never actually agreed on anything. Everyone just thought we did.</p><div class="pullquote"><p><em>The great enemy of communication, we find, is the illusion of it.</em> <br>~ William H. Whyte</p></div><p>There are so many assumptions swirling around in our heads that the same sentence can mean completely different things depending on who hears it. Someone says &#8220;yes, the tool will handle changes&#8221;. To the engineer, that means the tool updates as the design changes. To the manager, it means the tool tells the engineer when she needs to update the model.</p><p>Exact same sentence, different interpretation.</p><h2>Hidden misalignment</h2><p>You can come away from every meeting and call satisfied, with everyone apparently on the same page, and still get it wrong.</p><p>It&#8217;s only when you build the thing and put it in front of them that anyone can disagree. Because for better or worse, building something and showing it will confirm or deny their assumptions. </p><p>The cost is that it might take you weeks or months to find out nobody ever agreed in the first place. That time to build has definitely shrunk thanks to AI. But even then, you still have to clean up or fix something that should have been accounted from the beginning. It&#8217;s still the cost of building the wrong thing first.</p><p>Regardless of how quickly you made it, code is an expensive place to discover disagreement.</p><p>Once something is implemented it&#8217;s rework, not design. Maybe it turns out you never agreed on the core workflow. Maybe the philosophy was wrong from the beginning. What are you going to do with the 5,000 lines of code <s>you</s> the LLM wrote?</p><p>It&#8217;s like a tax. The longer you put off coordinating with everyone, the worse the bill gets, and everyone &#8220;agreeing&#8221; in every meeting feels great until you&#8217;re dumping two months of work down the drain.</p><p>Unfortunately, human communication is messy and it takes real effort to get everyone on the same page. So, you don&#8217;t get to skip this kind of work, you only get to choose when you pay for it. It might feel like a waste of time, but it&#8217;s always cheaper to pay it earlier, because the <a href="https://www.codedshapes.com/p/how-i-learned-about-coordination">bill grows the longer you put it off.</a></p><p>In fact, <a href="https://www.codedshapes.com/p/my-three-biggest-failures-in-computational">my three biggest failures in computational design</a>, had nothing to do with the technical stuff and everything got to do with a lack of clarity and alignment.</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 also 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><p><em><strong>Got an automation in mind ? :</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p></div><h2>Three things I want agreed before I build</h2><p>Now that I run my own consultancy, I&#8217;ve put things in place from experience to keep everyone aligned before and during development. It&#8217;s not foolproof, but it at least gives us a fighting chance.</p><p>It comes down to three things that need agreeing. How someone will actually use the tool, what it needs from them, and how we&#8217;ll both know it worked.</p><p>I call them agreements rather than requirements or a spec because a spec is something that can be perfectly written and still be a document only one side agrees with. <a href="https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing">An agreement requires both parties to sign off.</a></p><p>Yes, none of this is new and most of us already know it. You might even have discussed all three in some shape or form. But the key here is to write them down.</p><p>It becomes a shared space that everyone can point at and discuss. Instead of assumptions and thoughts floating around in people&#8217;s heads, it&#8217;s written down concisely and clearly.</p><p>I do all of this in my proposals to clients. On a complex tool it might take a few meetings to get there. On simpler things it might be a single meeting. <a href="https://www.codedshapes.com/p/this-is-what-working-with-a-computational">It&#8217;s really about having something concrete to work off.</a></p><h2>No. 1, How someone will actually use it</h2><p>I had a previous client who wanted a Revit plugin to help them model steel framing. They knew the problem inside out. What we couldn&#8217;t agree on was how the tool worked.</p><p>Every meeting went the same way. The conversation felt good, like we all knew what the tool would do. And then someone would break that dream and ask &#8220;okay, so that means the tool automatically rotates the members, right?&#8221; and the illusion shattered, because we had never discussed rotation before.</p><p>We were each describing a workflow that looked completely different in our own heads.</p><p>After the third meeting, I got sick of going round and round. So instead of coming in with notes, I spent an afternoon sketching the workflow and how I thought the tool should behave. Taking a page out of the UI/UX playbook, I showed a markup of the tool rather than describing it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MErk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MErk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 424w, https://substackcdn.com/image/fetch/$s_!MErk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 848w, https://substackcdn.com/image/fetch/$s_!MErk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 1272w, https://substackcdn.com/image/fetch/$s_!MErk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MErk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png" width="1199" height="1191" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1191,&quot;width&quot;:1199,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78907,&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/211145707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.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_!MErk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 424w, https://substackcdn.com/image/fetch/$s_!MErk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 848w, https://substackcdn.com/image/fetch/$s_!MErk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.png 1272w, https://substackcdn.com/image/fetch/$s_!MErk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ef6413c-4b16-401f-82e4-0d75f59c9ff1_1199x1191.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 aria-hidden="true" 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><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 next meeting was completely different. Everyone suddenly had something to point to instead of just describing things. Every step and assumption was laid bare for them to see. That diagram became the source of truth.</p><p>That&#8217;s the first agreement: <strong>How someone will actually use the tool.</strong></p><p>This is the step that most people skip. I have skipped it too. I pride myself as a &#8220;people person&#8221;, which to me meant that clients should say &#8220;fix my problem&#8221;, give me a wink, and I&#8217;ll solve their dreams. But as we&#8217;re all finding out with LLMs, we have to get better at telling people and AI exactly what we want. That&#8217;s what the diagram did.</p><p>Vague and unclear requirements lead to vague and unclear tools.</p><p>So now, for every project I take on, I put in the upfront effort of clarifying exactly what the tool will do.</p><h2>No. 2, What the tool needs to do its work</h2><p>That same diagram helped out from another angle. It made the starting point and the assumptions visible.</p><p>In the earlier meetings, the client and I talked about the tool starting from a blank model, or maybe the user fills in a form, or maybe a floor plan.</p><p>When I drew the diagram based on how I thought the tool would work, I unconsciously gave it a starting point. Which told the client exactly what the tool needed to work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kh2V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kh2V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 424w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 848w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 1272w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kh2V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png" width="1034" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21151,&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/211145707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.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_!Kh2V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 424w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 848w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.png 1272w, https://substackcdn.com/image/fetch/$s_!Kh2V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F792f982f-98e2-4cf4-b1d5-76e3aaec2446_1034x476.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 aria-hidden="true" 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><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>That&#8217;s the second agreement. <strong>What the tool needs from you</strong>. and what it&#8217;s allowed to assume.</p><p>Every automation is a stack of promises about the state of the world. It takes an assumption, encodes it, and works from there. In this case, we agreed the tool would start from a floor plan with walls already modeled in, and that those walls were floor to floor and never half height. How they got into the model was outside the tool&#8217;s scope. We also agreed it would only use a list of verified steel members in its functions.</p><p>These are the rules of engagement. A list of exactly what the tool needs, and what it doesn&#8217;t support to execute the agreed workflow.</p><p>The tricky part here though, is that you can&#8217;t capture all of it without making the tool. The number of things that could be true about someone&#8217;s Revit model is effectively endless. </p><p>So the goal isn&#8217;t to be exhaustive. It&#8217;s to catch the critical ones before you invest time in development. Unfortunately, that comes down to experience. Because I have made countless Revit plugins before, I can make a guess on what the rules might be. </p><p>The half height walls are a good example. It&#8217;s a rule because I know that Revit won&#8217;t allow us to execute the workflow that we want. That&#8217;s just from past experience. So, I brought it up in a meeting, wrote it down, and everyone agreed it was a rule for the tool to work.</p><p>Identifying those exceptions takes experience, and I still miss things. But at least we capture what we can at the time, instead of arguing later. </p><h2>No. 3, How we&#8217;ll know the tool works</h2><p>Switching gears for a bit. A few years ago I worked on the fa&#231;ade movement analysis for a high rise tower. It was a complicated fa&#231;ade and we knew we had to analyse it, but we didn&#8217;t know why. All the client told us was to make sure it was all okay.</p><p>That forced us to understand what we were even doing. Analysis and &#8220;work&#8221; can mean a thousand different things, so we set about exploring. What can we analyse, what results can we get, and what do they ultimately mean for the fa&#231;ade.</p><p>We ran rigid body experiments to work out what to measure. We built Excel sheets to check the maths independently. We even 3D printed a small joint to check our simulations. All of it was us trying to understand what &#8220;make sure it&#8217;s all okay&#8221; meant.</p><p>The result was a series of metrics that told us whether the joints would open or close under the building load. If we could understand how much the building moved, we could understand whether the fa&#231;ade panels would clash into each other.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fcok!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fcok!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fcok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png" width="1451" height="837" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84d52d6d-2706-46d6-a35d-9a0e753ca714_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;:185479,&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/211145707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_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_!Fcok!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 424w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 848w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_1451x837.png 1272w, https://substackcdn.com/image/fetch/$s_!Fcok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84d52d6d-2706-46d6-a35d-9a0e753ca714_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 aria-hidden="true" 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><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>That&#8217;s the third agreement. <strong>How everyone will know if the tool works.</strong></p><p>It&#8217;s easy to skip, because by the time you&#8217;ve agreed on the workflow and the inputs it feels like the work is done. Which is the same trap as before, everyone assuming they&#8217;re already on the same page.</p><p>And to be fair, &#8220;done&#8221; is hard to define, but it has to be defined, because it&#8217;s the last part of making the tool concrete.</p><p>For a custom tool it means agreeing to a set of representative files, the output each one should produce, and what happens when we run them. I do this as test cases and a checklist. I&#8217;ll ask a client for five to ten files that represent their typical working situation, and together we write the checklist the output of the has to meet.</p><p>This is what we call <strong>User Acceptance Testing.</strong> And it&#8217;s all about agreeing on what the tool should produce and under what circumstance. </p><p>It&#8217;s here that a tool stops being &#8220;it should work like this&#8221; and becomes a list of tests that it passes/fails against. A list that has been agreed on by both sides. </p><h2>It&#8217;s not formality for its own sake, it&#8217;s clarity</h2><p>It probably sounds like a lot of effort and paperwork before the tool gets built.</p><p>It can be, but the goal isn&#8217;t formality for its own sake. It&#8217;s clarity. A small script might need one meeting and a couple of pages. A complex tool might need a few meetings and a denser proposal. Either ways, it&#8217;s the same three agreements. </p><p>The size of the build changes the amount of effort and paperwork you have to do but it doesn&#8217;t change whether you need to agree.</p><p>Meetings are good and I have a lot of them, but a conversation doesn&#8217;t produce anything solid that everyone can poke at. It also can&#8217;t hold the details of a complex tool. A diagram or a few paragraphs can.</p><p>For every project I have done, the biggest problem has always been <em><strong>believing you&#8217;re aligned when you&#8217;ve never tested whether you actually are</strong></em>. Again, it isn&#8217;t  foolproof. It just gives you a much better chance.</p><h2>Alignment and clarity</h2><p>The goal is alignment and clarity. If everyone agrees and understands exactly what will be built, the problem it solves and how it solves it, everybody wins.</p><p>Unlike physical things we can touch and hold, a digital tool lives in the ether. Its abstractness is hard to visualise, and even when you can, everyone visualises it differently. Digital tools have real value, but we have to do the work to define them better for everyone involved.</p><p>Things will still change midway and sometimes the scope blows out. But there&#8217;s a real difference between finding out you disagreed and finding out you never agreed at all.</p><p>So whenever you&#8217;re about to build something, think about these three and write them down. Bring as much clarity and alignment as you can before anyone starts.</p><p>Thanks for reading.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><hr></div><p><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 5: Squeezing too tight makes it harder to actually hold on]]></title><description><![CDATA[The answer isn't more efficiency]]></description><link>https://www.codedshapes.com/p/week-5-squeezing-too-tight-makes</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-5-squeezing-too-tight-makes</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 14 Aug 2026 07:02:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/qs932GUYLP0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-qs932GUYLP0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qs932GUYLP0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qs932GUYLP0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Alright, week 5.</p><p>Last week I published an article about the <a href="https://www.codedshapes.com/p/the-business-models-of-digital-work?r=yraxj">business models of digital work</a>, and I ended it saying I wanted <a href="https://codedconstructs.com/">CodedConstructs </a>to be a service firm that also builds products. I also said I knew from experience that balancing those two is hard, and that I&#8217;d eventually have to build better boundaries between them.</p><p>Well this week, I got a preview of just how annoyingly difficult that is.</p><h2>The product I built did the wrong thing</h2><p>I have been working on a product alongside trying to get clients and creating content.</p><p>But the tempting thing with LLMs is that you let them do more and more as you get busier and busier with other things. And as I got busy creating content or doing client work, there were a few times I just let it run. </p><p>This week though, it &#8220;finished&#8221; and it&#8217;s time to test. I have automated tests but this was the end to end one. The one where I put myself in the shoes of my users and go through the product itself. </p><p>In the first 20 minutes, I listed maybe 15+ things that were wrong with it. Which was to be expected, but 1/15 needed significant rework. It was part of the core design of the product and the LLM had gotten it so so wrong. </p><p>So, I went to look back at all the notes and plans it worked off. I saw that I actually approved the wrong design. Probably because I was busy with something else and it kept asking me questions, so I just approved everything. The LLM, not knowing any better, just kept piling on top of that. </p><p>When the foundation is already wrong, building more on top of it makes it worse and that&#8217;s where I am at now. I have the cost of building the wrong thing and also now the added cost of fixing the thing because I said yes without knowing the consequences. </p><h2>Focus more is not the answer</h2><p>The easy answer here is &#8220;focus more&#8221;. In fact, I can almost hear my ex-managers giving me this same advice. To do less. </p><p>And I think it&#8217;s partly true but it&#8217;s not the whole story. It&#8217;s not to give up any of my current endeavors, I think it&#8217;s to focus on a few things at a time, not everything at once. </p><p>I was being too greedy. </p><p>If you&#8217;re a software developer, you would understand this. When we made stuff pre-AI, every time we made a change, we would have to wait for the computer to recompile. It would take 2 maybe 5 minutes before you can type a line of code again. </p><p>What do you do in this time ? You can scroll your phone, read something, stare at the screen, etc.</p><p>Now, in the AI world, it&#8217;s waiting for agents to finish.</p><p>So, what do I do now? Well, I start another agent to do something else. </p><p>Then, what do I do while waiting for that ? I start another </p><p>So, I end up having 2-3 agents at the same time. There was one time, I had up to 6.</p><p>It sounds awesome, like I am this grand puppet master with an army of agents working for me. But this actually means my attention and judgement (which arguably is my most valuable asset) is split across multiple equally important tasks. </p><p>It&#8217;s just plain greedy. Instead of 1 amazing result, I now have 6 mediocre ones.</p><p>So, my lesson for week 5 is to resist the urge to squeeze as much as I can. Because the harder I try to be efficient, the less I actually am. </p><p>Thanks for reading,</p><p><br>Onward to week six.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to follow along in my journey!</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[No One's Around To Tell Me I'm Wrong]]></title><description><![CDATA[Rabbit holes are just so easy to find when you're on your own]]></description><link>https://www.codedshapes.com/p/no-ones-around-to-tell-me-im-wrong</link><guid isPermaLink="false">https://www.codedshapes.com/p/no-ones-around-to-tell-me-im-wrong</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 13 Aug 2026 00:00:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sBMc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_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_!sBMc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sBMc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sBMc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab50f222-ffc6-42e7-99ad-455b7217214b_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;:2573940,&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/210190670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_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_!sBMc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!sBMc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab50f222-ffc6-42e7-99ad-455b7217214b_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 aria-hidden="true" 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><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>You know, they say when you start a company, you truly feel alone.</p><p>I never really understood that. Instead, it was just so freeing. I felt the pressure to make money and deliver, sure, but that&#8217;s different from feeling alone.</p><p>But I recently wrote my first proposal to a client since <a href="https://www.codedshapes.com/p/im-starting-codedconstructs?r=yraxj">going full time</a> and the &#8220;alone-ness&#8221; finally caught up to me. Well, I wasn&#8217;t truly alone, I had self-doubt to keep me company.</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><p>While I was writing the proposal, I was trying to come up with a scope which in turn leads to how I price the actual work. Costs aside, I had trouble nailing down <a href="https://www.codedshapes.com/p/what-do-you-actually-deliver?r=yraxj">what to actually deliver</a> because there was just so many options. Simply put, it&#8217;s a tool that helps transfer documentation into an analysis model.</p><p>I could have done only a base build, you know get the foundation and skeleton up first, then if it&#8217;s useful add on more features later. A good analogy here is think of it like I am building you a car. Instead of giving you all the passenger seats and a trunk. Let me just give you a car with a driver&#8217;s seat only. And if you need the rest, we&#8217;ll slowly add it in.</p><p>But what happens if passengers are important to you ? Maybe that&#8217;s the whole reason you&#8217;re buying from me. Maybe you need a trunk, maybe having a fully featured car is what you&#8217;re actually after.</p><p>With all those questions in mind, I wrote up a proposal that gave this potential client several choices. I offered a &#8220;base build + modules&#8221; scope.</p><ul><li><p>Base build</p></li><li><p>Feature A</p></li><li><p>Feature B</p></li><li><p>Feature C</p></li><li><p>Feature D</p></li></ul><p>As in, take a base build + 2 or 3 modules and there&#8217;ll be a bundling discount too.</p><h2>What&#8217;s wrong with it ?</h2><p>On the surface, nothing. I mean more choices is good right ?</p><p>When&#8217;s the last time you hated not having a choice ?</p><p>Well, I think some choice is good, too many and it&#8217;s just overwhelming. And I have definitely given the client too many.</p><p>Imagine you don&#8217;t know anything about cars, and your mechanic presents you with say 10 choices all for you to decide. I would be so overwhelmed that I would just leave to find another mechanic that understands my problem and recommends the exact path that solves it for me.</p><p>I didn&#8217;t catch any of this on the day, though. I read it back the next morning, before I&#8217;d had any coffee, and it was immediately obvious. Same document, same words, and a completely different reaction to it. That was the closest thing I had to a second opinion, and it was still only me, twelve hours later.</p><p>So I did what I&#8217;d have wanted that mechanic to do. I gutted the whole thing and rewrote it with one option in mind. The one that I thought was best for him.</p><p>And it was a good thing I did too because that proposal was actually tailored to him rather than me just giving him a menu of things to decide. I showed my expertise in what I think is best for him, rather than staying stuck in fear and offloading the decision to him.</p><h2>Being alone</h2><p>It made me think why haven&#8217;t I come across this before ? I have written plenty of proposals for myself and when I worked at companies. Why was this one so hard ? Why did I keep second guessing myself ?</p><p>The answer, that came to me after a night of sleep, is that I had no one else pushing against me.</p><p>In a company, there are so many review processes and casual conversations that help you think but when you&#8217;re alone, the rabbit hole is deep and oh so tempting. No one tells me what to do, but no one tells me when I&#8217;m wrong either.</p><p>And that, I think, is the biggest contributing factor to the loneliness.</p><p>At least in a company, you can turn to someone sitting next to you and ask them something. You can bounce ideas around because <a href="https://www.codedshapes.com/p/nobody-knows-as-much-as-you-think?r=yraxj">you&#8217;re in the same boat</a>. But here, even though I have friends and family to talk to, it&#8217;s different.</p><p>They&#8217;ll listen, and they&#8217;ll be supportive, but they can&#8217;t tell me my scope is wrong. They don&#8217;t know what a good proposal looks like in this industry. So, what I miss isn&#8217;t the companionship. It&#8217;s someone with enough context to <a href="https://www.codedshapes.com/p/it-takes-two-to-build-the-right-thing?r=yraxj">push me towards a better answer</a> than the one already in my head.</p><p>The part that actually unsettles me is that I can&#8217;t tell, in the moment, whether I&#8217;m being thorough or just <a href="https://www.codedshapes.com/p/why-the-thing-youre-building-wont?r=yraxj">going in circles</a>. Both feel exactly the same and &#8220;trusting yourself more&#8221; doesn&#8217;t really help if I am deep in the wrong rabbit hole.</p><p>And the cost of being wrong has changed too. In a company, a bad scope meant a rework and an awkward conversation with someone down the hall. Out here it means a client who quietly decides I don&#8217;t know what I&#8217;m doing.</p><p>I think that&#8217;s just the discomfort I have to get used to. I don&#8217;t regret re-writing that proposal, that time bought me real clarity on the problem and it was worth it. But I only know that in hindsight, and hindsight isn&#8217;t much of a system.</p><p>So when people say you feel alone doing this, I think this is what they actually mean. Not that there&#8217;s nobody around. Just that there&#8217;s nobody in the &#8220;trenches&#8221; with you, and you tend to find out you were wrong long after you could have done anything about it.</p><p>But I am slowly getting used to it. </p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 4: Disappointed But Not Discouraged]]></title><description><![CDATA[Just learning the lessons as they come]]></description><link>https://www.codedshapes.com/p/week-4-disappointed-but-not-discouraged</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-4-disappointed-but-not-discouraged</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 07 Aug 2026 07:01:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/vX6zcXt8LuE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-vX6zcXt8LuE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vX6zcXt8LuE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vX6zcXt8LuE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Alright, week 4. A full month in now.</p><p>Better than last week, which I wasn&#8217;t expecting given how it started.</p><p>That proposal I sent out from last week came back rejected. But funnily enough it didn&#8217;t really affect my confidence. I mean I was disappointed but the rejection didn&#8217;t mean my work was bad.</p><p>It was just that what I could build for them didn&#8217;t fit what they needed.</p><p>I was also proud that I asked for feedback. I wanted to understand if I could have done any better or maybe there were some confusing parts.</p><p>The lesson I took away is that I have to get better at alignment from the beginning. Instead of me sinking a few days into coming up with a proposal, I should have asked more questions instead of assuming things. It&#8217;s to be courageous and ask for more information instead of assuming I am disturbing them.</p><p>What it did do though was make me wonder whether there&#8217;s a clearer more cohesive way to tell people what I do. So, I spent a couple of days on strategy.</p><p>When I first started CodedShapes and posting on LinkedIn , the goal was just to see if I could be consistent. Not only have I proven to myself that I can, I also enjoy it. But, I did it in a pretty unstructured way. I posted or wrote whatever was on my mind. Which I think is great but it meant my ideas and thoughts were all over the place sometimes.</p><p>Now that I completely control the narrative and don&#8217;t have to worry about office politics and all that, I can make it more cohesive. So I am trying a content pillar approach. Simply put, it&#8217;s about defining some pretty wide buckets, and then every idea I come up with needs to be reframed into a bucket.</p><p>It&#8217;s something I sort of do already but this just formalizes it and helps me focus on what I am actually trying to say.</p><p>Hopefully it makes things clearer and less like rambling. But I do like writing whatever comes to mind though, so don&#8217;t expect that to change anytime soon. I am just trying to be more focused with my messaging is all.</p><p>Other than that, the time blocking method is helping me properly triage my tasks now, which is good.</p><p>Alright, that&#8217;s it.</p><p>Thanks for reading,<br>Onward to week five.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to follow along in my journey!</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[The Business Models of Digital Work in AEC]]></title><description><![CDATA[Which is better, product, service, or a bit of both ?]]></description><link>https://www.codedshapes.com/p/the-business-models-of-digital-work</link><guid isPermaLink="false">https://www.codedshapes.com/p/the-business-models-of-digital-work</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 06 Aug 2026 00:03:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ru98!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_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_!Ru98!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ru98!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ru98!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff46d7b9-579a-4f3f-9ca5-d286c39ef242_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;:2722713,&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/209229316?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_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_!Ru98!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!Ru98!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff46d7b9-579a-4f3f-9ca5-d286c39ef242_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 aria-hidden="true" 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><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 haven&#8217;t been following along, about a month ago I <a href="https://open.substack.com/pub/bradenkoh/p/im-starting-codedconstructs">announced that I started my own firm</a>, <a href="https://codedconstructs.com/">CodedConstructs</a>. </p><p>But before leaving a stable job, one of the biggest decisions I had to make was the business model of the whole thing. This is something I think about for everything I do anyway, but I wanted to understand how digital work in the Architecture, Engineering, Construction (AEC) industry actually makes money.</p><blockquote><p><em>It&#8217;s all well and good to build things and solve cool problems, but how do we not only make money but build a sustainable and profitable business by doing so?</em></p></blockquote><p>That is the question I set out to answer. There are several existing models to learn from, some of which I have experienced personally.</p><ul><li><p>The internal tools and projects model (a team or company that supports internal tools alongside external services)</p></li><li><p>The product then support model (build a product that someone will use, then charge a service to help/teach them to use it)</p></li><li><p>Custom coaching and making courses (Teach people, don&#8217;t do the work for them)</p></li></ul><p>You can of course mix these too, like <a href="https://timoharboe.com/">Timo Harboe</a> who takes on projects but has created a course. And you also have the pure ones, like pure service (like most consulting firms) or pure product (normal software firm). But they don&#8217;t need any new explanation because they tend to lean towards the more conventional firms we already know so well.</p><p>What I set out to find out is how I want to operate in this world, that can change but it helps to get the lay of the land first.</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>The internal tools and projects model</h2><p>This is arguably the most popular model out there. Whether it was intentional or not, it&#8217;s the way most consulting firms (the ones that bill by the hour on projects) already operate. So when it came to digital work, they just applied what they knew.</p><p>On the surface, it&#8217;s perfect. Do projects most of the time, then work on internal tools during the down time. Technically, you&#8217;re fully resourced. Fund the internal tools with the extra margin from projects. When executed perfectly, it makes for a great cycle. Make more money on projects -&gt; develop more tools -&gt; you&#8217;re more efficient, which leads you to make more on projects and so on.</p><p>But there&#8217;s a huge flaw, and it&#8217;s something I have <a href="https://open.substack.com/pub/bradenkoh/p/your-tools-dont-last-because-its">written about many times</a>. When you put paying billable projects up against non-paying internal tools, billable always wins. We all have a finite amount of time, so the work that makes money directly always wins. So, instead of working on tools during the down time, most people spend it finding more projects. And &#8220;doing internal tools only during down time&#8221; ignores the maintenance and emergency fixes that come with tools.</p><blockquote><p>&#8220;From 1995 through 1998, approximately 87% of the product ventures initiated by software-service companies were unsuccessful. [&#8230;] Inappropriate transfer of organizational practices and development culture from the service sector to the product sector is a recipe for failure.&#8221;</p><p>&#8212; Satish Nambisan, <em><a href="https://sloanreview.mit.edu/article/why-service-businesses-are-not-product-businesses/">Why Service Businesses Are Not Product Businesses</a></em>, MIT Sloan Management Review (2001)</p></blockquote><p>When you have <a href="https://www.codedshapes.com/p/youre-too-good-at-fixing-things">the urgency of projects breathing down your neck</a> all the time, you can&#8217;t build great tools.</p><p>A common band-aid here is to treat building tools as a &#8220;project&#8221;. As in, block out 4-6 weeks for development, deploy, then move on. But then the questions of maintenance and ownership come into play after the tool is built. What happens when the tool fails? <a href="https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples">Who maintains it</a> if it isn&#8217;t anyone&#8217;s full-time job? If you&#8217;re hopping from project to project, how can you make time to support tools?</p><p>If you teeter between billable projects and maintaining internal tools, I&#8217;ll stress it once more, the billability of projects will always win.</p><p>But, I am not saying it&#8217;s impossible. I&#8217;m saying that it&#8217;s a constant uphill battle to convince the always urgent project natured people that you can&#8217;t help them because you&#8217;re working on an internal tool.</p><p>When I worked for a structural consultancy, I found it hard to fight for development time, because it meant pushing away work that directly made money. And this isn&#8217;t just my experience. <a href="https://aecmag.com/computational-design/bespoke-bim-software-workflows-custom-aec-tools/">AEC Magazine</a>, writing about firms that build their own tools, pins the friction on exactly this: <em>&#8220;the mindset of managers, which strictly adhered to the concept of allocating project billable hours to employees&#8221;</em> runs against the craft-based mindset needed to build great tools.</p><p>Nate Miller, who runs his own company, <a href="https://apps.provingground.io/">Proving Ground</a>, says it more bluntly: <em>&#8220;the business model of architecture and engineers&#8230; is, in some ways, incompatible with the business model of running a software company.&#8221;</em></p><p>The two operating philosophies are diametrically opposed. And if projects make up the majority of the firm, it&#8217;s easy and common to be scrutinised, sometimes even punished, for operating against that. As valuable as the internal tools are, the current way to create them goes against the operating norms of most service-based companies.</p><p>Which is why the firms that actually produce commercial tools tend to split it out. <a href="https://www.thorntontomasetti.com/">Thornton Tomasetti</a>, a large structural engineering firm, built an interoperability tool called Konstru that <a href="https://www.thorntontomasetti.com/capability/konstru">became its own independent company</a>. Decades earlier, Arup did the same by spinning out <a href="https://www.oasys-software.com/about-oasys/">Oasys</a> as its software arm. Even a smaller firm like <a href="https://idadesigngroup.com.au/">IDA Architects</a> noticed this and created <a href="https://idatechnology.com.sg/">IDA Technology</a> for their digital work.</p><p>The pattern, then, is that service firms which build successful products tend to wall the product off from the billable work so it can exist on its own. Having a barrier between the two ways of operating seems to be the key here.</p><h2>The product and support model</h2><p>The second model is about building a tool and then selling the maintenance and support as the service. It&#8217;s the reverse of the previous model, where a product was treated like a project.</p><p>The idea is to build a tool that people will pay to use, then sell them a separate service to help them actually use it. People buy the licence to use your product, but if they want updates or expert advice or custom work, they pay extra.</p><p>Strand7, the finite element package a lot of structural engineers use, does this. They sell you their program and also offer <a href="https://www.strand7.com/html/aboutsupport.htm">Strand7 Support and Maintenance</a> as a separate subscription. For that you get a support hotline, a model review service where you can send them your actual model to look over, and every update released while you stay subscribed. They even run <a href="https://www.strand7.com/html/trainingSchedule.htm">paid training</a> on top of that, because the software is complex enough that it takes real expertise to use well.</p><p>Oasys, the same Arup software arm from before, does the same thing. You buy a perpetual licence, then pay an <a href="https://www.oasys-software.com/support/licensing-of-oasys-software/">annual maintenance contract priced as a percentage of the list price</a> to keep the support and updates coming. It also works well for them because Arup offers structural advice, and Oasys becomes a kind of &#8220;locked-in&#8221; inbound marketing tool.</p><p>Autodesk does a similar thing, offering not just their software but custom training, developer support and certification on top.</p><p>And the money on the service side is bigger than you&#8217;d think. Or at least it was, for me. Julien Bek of Sequoia <a href="https://trends.vc/service-as-software-solo-operator-pattern-the-61-ratio-liability-as-a-service/">put it plainly</a>: &#8220;for every dollar spent on software, six are spent on services.&#8221; The product gets you in the door; the ongoing help is the larger market. The crude way of saying it is that once people are locked into using the tool, they&#8217;ll pay for anyone who helps them use it better.</p><p>That&#8217;s why this model holds up so well. You get the leverage of a product, build it once and sell it many times, and the stickiness of a service, a relationship that renews every year. It smooths out the lumpiness of pure project work, and it means the software brings in recurring revenue.</p><p>The &#8220;services-as-software&#8221; idea is getting a lot of attention right now, because as products get easier to build, the value shifts to showing people how to best use them. As Foundation Capital <a href="https://foundationcapital.com/ideas/the-4-6t-services-as-software-opportunity-lessons-from-the-first-year">describes it</a>, &#8220;what you build is no longer your moat. How you integrate, embed, and operate becomes the moat.&#8221; The support layer becomes more of the thing you&#8217;re actually selling.</p><p>What I like about this model is how honest it is about the work. Building a comprehensive tool and helping people use it are two different kinds of value. It&#8217;s the do-it-yourself vs do-it-for-you (or with you) approach.</p><p>Know the software well? Great. Need some help? Also great, because we offer that too. It also fixes the maintenance problem from the last model. The never-ending tail of features and bugs stops being a drain on your margins and becomes the thing people are paying for. This model makes working on the software and teaching people to use it billable.</p><p>But it&#8217;s not all glory. The biggest downside is that you need to invest in building a comprehensive tool, because if it&#8217;s intuitive and simple, why would anyone pay you extra to help them use it? And you have to make sure what you&#8217;re building is legitimately useful.</p><p>It means that before you even offer support or maintenance contracts, you need to put a lot of work into building a complex but useful product. Some products organically become this, but if this is the model you&#8217;re after, you have to plan for it.</p><p>And to bring home a point from the last model, you can&#8217;t just decide to do this if you&#8217;re a primarily service-based company. When Ramboll turned an internal tool into a commercial product, SiteSolve, Paul Jeffries <a href="https://aecmag.com/computational-design/bespoke-bim-software-workflows-custom-aec-tools/">described the jump</a> as: &#8220;selling software commercially requires a whole new level of quality assurance, documentation, training and interface... we&#8217;ve gone further than we would have ever gone if we weren&#8217;t going to sell it.&#8221;</p><p>It&#8217;s the reason Strand7 and Arup can offer it: their programs are so comprehensive that there might be hundreds of ways to get to the same result, but only a true expert would know how. You end up paying for that expertise twice, once in a useful but complicated product, and again in the help to actually use it.</p><h2>The coaching and training model</h2><p>The third model steps away from tools entirely, but you can see it in the same light of services and products. Custom training workshops or coaching would be the service, and the self-paced courses would be the products.</p><p>I don&#8217;t consider this a &#8220;pure&#8221; business model, because it&#8217;s a relatively new one. With the internet, it&#8217;s something a lot of digital people are already doing. It&#8217;s also the one I&#8217;m already partly doing, with this newsletter and <a href="https://www.codedshapes.com/p/whats-next-for-codedshapes">its paid version</a>.</p><p><a href="https://hopific.com/grasshopper-pro/">Hopific</a>, run by Thomas Tait who spent years at Sn&#248;hetta, sells a self-paced Grasshopper course for a one-time $197 with lifetime access. <a href="https://learngrasshopper.com/">Learn Grasshopper</a>, arguably the most famous one around, does the same with a whole ladder of self-paced courses, from Grasshopper basics to Grasshopper in Tekla and Python for AEC. Timo Harboe from before, who runs his own practice, set up <a href="https://pythonforstructuralengineers.com/">Python for Structural Engineers</a> the same way, a one-off &#163;398 course built with fellow engineers.</p><p>Instead of selling software, you sell courses. Different contents, but still products.</p><p>And the same argument applies: it can be either a subscription or a one-off. <a href="https://www.thinkparametric.com/">ThinkParametric</a> runs a subscription with a library of 60-odd courses, the same way <a href="https://www.patreon.com/junichirohorikawa">Junichiro Horikawa</a> runs a Patreon for his computational design tutorials. Even the paid version of CodedShapes sits somewhere in between: you can subscribe for a month, grab all the resources and leave, or stay subscribed and keep getting the updates.</p><p>But again, you can&#8217;t escape that initial friction. Like products, there&#8217;s a lot of effort in making a course or a YouTube channel. And it&#8217;s another kind of bet: you&#8217;re wagering that enough people will find it valuable enough to pay.</p><p>This is made harder because the scale of our audience is a lot smaller than, say, a cooking YouTube channel.</p><h2>It&#8217;s the economics, not the technicality</h2><p>Line all three models up and you can see the pattern. Building tools, supporting software, teaching courses, it doesn&#8217;t really matter which you pick. They all come down to using your finite hours to either serve people (projects, software support, live training) or build assets (software or courses).</p><p>Services require expertise and are linear. You get paid for how valuable you are per hour. The only way to be more profitable is to increase your scope or find a way to be more efficient. But the more efficient you get, the more tempting it is to price lower, because being cheaper is a market advantage.</p><p>Assets (software or courses) are different. It&#8217;s no longer purely about the hours you put in, it&#8217;s about the problem it solves. <a href="https://www.codedshapes.com/p/your-script-doesnt-need-to-work-on">Solve a problem well and repeatedly</a>, and it almost doesn&#8217;t matter how many hours went in. But assets are a gamble on whether the thing is valuable enough for people to pay, and they need an upfront investment of your time and sometimes your money.</p><p>It&#8217;s trite, but this really is the craft mindset vs the service mindset. One means you work on yourself, and because your work is good, people buy from you. The other means you offer your service to someone else because you have expertise to share.</p><p>With an asset, you make the thing once and it works for you whether you&#8217;re at your desk or not. That&#8217;s the dream, but getting there means being willing to risk that months of development don&#8217;t pan out the way you wanted.</p><p>So the debate isn&#8217;t really about choosing the business model or the mindset. It&#8217;s about your appetite for risk. Working on projects gives you control and transparency; you can see how your time is spent and how much you earn from it. Building a product means gambling on a problem, but if it pays off, you have something valuable and repeatable.</p><h2>How CodedConstructs Operates</h2><p>I am blessed (or cursed) with insatiable curiosity. I love working on projects because it lets me meet more people and solve more interesting stuff, and it&#8217;s usually where the best ideas for products and content come from. But I also love to build, and I love to write. I didn&#8217;t come into this industry for the projects alone.</p><p>So, I am going to be greedy and pick all three. <a href="https://codedconstructs.com/">CodedConstructs </a>will be a balance of services, products and content, but they aren&#8217;t all equal.</p><p>Right now, since I am just starting out, client projects are the engine. They help me figure out which problems are worth solving, and they help me pay my bills. Products and content are the assets I build alongside them, my long-term bets on where I think I can bring value aside from projects.</p><p>Eventually, I am going to have to figure out how to build walls between my services and products but I at least know that going in. Because we know if I put billable work against products, and say it with me, billable always wins.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Key Value Search, the Vlookup of Grasshopper]]></title><description><![CDATA[Match multiple list structures with this component]]></description><link>https://www.codedshapes.com/p/key-value-search-the-vlookup-of-grasshopper</link><guid isPermaLink="false">https://www.codedshapes.com/p/key-value-search-the-vlookup-of-grasshopper</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Tue, 04 Aug 2026 00:00:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WyJw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_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_!WyJw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WyJw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WyJw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f748d868-4fe6-4a14-875c-d1cb0fdf99e4_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;:2590932,&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/209580531?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_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_!WyJw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!WyJw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff748d868-4fe6-4a14-875c-d1cb0fdf99e4_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 aria-hidden="true" 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><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 ever had to pull data together from more than one source in Grasshopper, you know it&#8217;s rarely as clean as it should be. A prime example of this is when you&#8217;re working with structural analysis models. Because most programs store their geometry and results separately. And it always means you have to do some form of list matching to get them to line up.</p><p>A few weeks ago, I had a list of nodes from a model that I needed results for. Like most structural analysis programs, ETABS hands you one list of nodes and a separate list of results, expecting you to use the node IDs to cross-check between them.</p><h2>So how do you join two lists by an ID in Grasshopper?</h2><p>If you&#8217;re comfortable with code, there are many ways to do this. You can use a dictionary in C# or Pandas in Python. Even in Excel, Vlookup by the ID of one list will help you line up the two different lists.</p><p>And, well, you can actually do the same in Grasshopper. The component you&#8217;re after is called <em>Key Value Search</em>. It works very similarly to a dictionary in C#.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FF7q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FF7q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 424w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 848w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FF7q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png" width="1356" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76769,&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/209580531?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.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_!FF7q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 424w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 848w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!FF7q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96694243-f0f3-4720-930f-9f81ccaeca73_1356x1080.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 aria-hidden="true" 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><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>And the best part is that you can pass in anything, not just numbers. Geometry, custom data, whatever you have. So, instead of using a script component or doing Vlookups in Excel before Grasshopper, this component let&#8217;s you keep everything in a script.</p><p><em>Okay, if you&#8217;re a paid member of CodedShapes, you get to see how I use this component in action as well as a sample script at the bottom.</em></p>
      <p>
          <a href="https://www.codedshapes.com/p/key-value-search-the-vlookup-of-grasshopper">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Week 3: Strong on Paper]]></title><description><![CDATA[Technically going okay but doesn't feel like it]]></description><link>https://www.codedshapes.com/p/week-3-strong-on-paper</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-3-strong-on-paper</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 31 Jul 2026 08:00:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/ni4W-5A8fps" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-ni4W-5A8fps" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ni4W-5A8fps&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ni4W-5A8fps?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Alright, week 3.</p><p>It&#8217;s what I am now calling the self-doubt week because that is the strongest feeling here.</p><p>But on paper it&#8217;s a strong week, two discovery calls, some solid time spent working on products, spent time on building a community, and I even implemented the new time boxing method from <a href="https://www.codedshapes.com/p/week-2-too-many-balls-in-the-air">last week</a>.</p><p>That really helped. Simply put, instead of only working on things that are top of mind, I treat each day as 3-4 blocks, about two hours each, then I assign tasks to all of them for the upcoming week.</p><p>I am not strict on adhering to it though because I know there are meetings and other random life things that get in the way. But the biggest benefit has been the clarity of everything. I can see now all laid out on my calendar things that I should be working on. Thinking about my time in blocks has also helped me focus, when you only have limited work blocks, you can&#8217;t pretend everything fits. So, it has forced me to decide where to put things and which should remain in the backlog.</p><p>Last week, just felt like all the tasks were due at the same time and I was task switching like a headless chicken.</p><h2>The midnight discovery call</h2><p>Sydney is a great place but the timezone difference with the ET (Eastern US Time) sucks. That discovery call I had was at midnight and I felt fine during the call, but the days after sucked. Mostly from the disrupted sleep and it could be why I feel so much self-doubt this week.</p><p>But that call was worth it though.</p><p>Because it gave me a new perspective on the way other people work. Even though I have worked with many structural engineers, I still get caught by surprise on how many assumptions I make that are wrong. So, it felt like that call brought me closer to reality.</p><h2>Building a community</h2><p>It&#8217;s still hush-hush for now but I promise I&#8217;ll release more information soon when we have something solid.</p><p>But the first half of my week was working on creating a community for digital people in the AEC. I know there are a few out there now but I am hoping that this one will help support people in other ways that are rarely talked about.</p><h2>Moving into next week</h2><p>Well, the self doubt is strong right now but I have to remind myself that I can only control the inputs. So, as sucky as this week felt, I still believe in what I am doing and I should hold the faith that it will turn out okay.</p><p>So, I think next week is about keep on doing the thing and trusting myself.</p><p>Thanks for reading,<br>Onward to week four.</p>]]></content:encoded></item><item><title><![CDATA[Being Billable Isn't the Same as Being Valuable]]></title><description><![CDATA[It took me a long time to learn this]]></description><link>https://www.codedshapes.com/p/being-billable-isnt-the-same-as-being</link><guid isPermaLink="false">https://www.codedshapes.com/p/being-billable-isnt-the-same-as-being</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 30 Jul 2026 00:01:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fTEF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_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_!fTEF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fTEF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fTEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_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;:2840348,&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/208312564?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_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_!fTEF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!fTEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cca1c4c-6991-4f78-9d8b-b3928a07a8b7_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 aria-hidden="true" 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><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 couple of weeks have passed, and I still can&#8217;t quite explain how I feel.</p><p>If you didn&#8217;t know, I <a href="https://www.codedshapes.com/p/im-starting-codedconstructs">recently started my own firm</a>, and I&#8217;ve been documenting the thoughts, the work, and the feelings in <a href="https://www.codedshapes.com/p/week-1-free-and-running-out-of-time">this journal section here</a>.</p><p>The central theme of these early days has been <a href="https://www.codedshapes.com/p/week-2-too-many-balls-in-the-air">the strange, fleeting feeling of time</a>. Okay, sounds very abstract but please bear with me.</p><p>I thought that once I was on my own, I&#8217;d be able to squeeze out way more work, because I&#8217;d finally be in full control. No meetings, no random support calls, no need to perform acts of productivity just for the boss.</p><p>Instead, what I&#8217;ve actually found is a constant influx of things to do. Not work exactly, not things that make money directly, just things to do. Like writing this newsletter, talking to people, admin stuff, etc.</p><p>I have enough savings to afford my current life for a while, so money shouldn&#8217;t be the thing I worry about. Yet I can&#8217;t help but feel things ticking down. Like a really drawn out time bomb. And I&#8217;m sitting in brace position waiting for it. Which, if I&#8217;m honest, does me more harm than good I think. Being safe is good but worrying about it just wastes my energy and time.</p><p>Some days I wake up ready to take on the world. Other days, I tend to worry about if I made the wrong decision. I&#8217;ve spent a lot of my time teetering between feeling like crap and feeling on top of the world. So, I wanted to take a moment today to answer the question.</p><p>Why put myself through this? Why leave the stability of a job, in this economy, to feel the extremes of every emotion alone?</p><p>Like most decisions, it was made of many small ones, and it took me a few months to understand why it was the right one. As I pondered the decision, some people who know me well said that starting my own firm was inevitable. Others tell me it&#8217;s the worst decision because of the bad economy, there&#8217;s a war, market is bad, there&#8217;s endless worry....... Even my own thoughts whirled with endless possibility and doubt.</p><p>With so much conflicting advice, I had to take the time to work out what I actually believed and if this was actually something I wanted to do.</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>How I made the decision (after months of thinking)</h2><p>The clearest part of the answer came from my last big project.</p><p>It was the biggest job for the Melbourne team, and it ran for two years. It&#8217;s actually still going. It was complex, high-profile, and very delayed. Everyone involved was so stressed that if you dunked their head underwater you&#8217;d get enough steam to power the office. That project was all-consuming. Some of the lead engineers even worked through holidays.</p><p>Which meant every internal tool I looked after got de-prioritized, even the ones the whole office used. Drafters and engineers would come to me with something broken or a critical improvement they needed, and I couldn&#8217;t work on it. The project was my life and nothing else mattered.</p><p>Okay, but saying no once, or as much as three times, is fine. That&#8217;s just a backlog. Saying no for over two years is not good. I let the same people down over and over, and I inevitably lost their trust. It was also the same time that AI got really good, so people stopped waiting on me and started building what they needed themselves.</p><p>Part of me is glad they got that independence. The other part knows what it really meant: on the tool side, I&#8217;d become unreliable. Then, here I was seeing everyone else build cool shit while I was stuck <a href="https://www.codedshapes.com/p/youre-too-good-at-fixing-things">putting out fires</a> on this Melbourne project.</p><p>I am stubborn, with all that project work, I still didn&#8217;t want to give up the tools. I am responsible for them and for everyone that relies on them to deliver a project. So, for two years I lived pulled in two directions.</p><p>I&#8217;d rush to patch a tool, then rush back to the project, then when I was stuck waiting on someone, rush back to the tool because the band-aid I&#8217;d put earlier failed. And because project is king, I had to spend some nights, some weekend, even the days when I was sick to support the tools. Terrible boundaries, but it was the only way to truly support the teams using it.</p><p>And at its core, I get it. A company has to protect its flagship project. There were a lot of eyes on this one, and it had already been delayed twice. In the director&#8217;s point of view and with the project on fire like that, I&#8217;d have made the same call. Force everyone to drop their stuff and work on it. Essentially, all hands on deck.</p><p>I also love project work. Some of my best tool ideas came from it, and there&#8217;s nothing quite like solving a real problem with a team pulling toward the same thing. So this was never project work versus tools.</p><p>The problem was that <a href="https://www.codedshapes.com/p/the-spreadsheet-is-never-just-a-spreadsheet">projects were the only thing that ever counted</a>. With projects vs internal tools, projects always win, no matter how critical the tools were. My effort could be overridden at any moment by whatever was loudest and most billable that week.</p><p>So, yes putting out fires constantly for two years was exhausting but what made it worse was that I couldn&#8217;t be there for the people relying on what I&#8217;d built.</p><p>It took me a long time to find the word for it. Ownership. The part I cared about most was being able to manage and handle a problem from end to end. That means maintenance and <a href="https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples">being responsible to the people relying on them</a>. I want to build useful things that last and solve real problems. And always being pulled onto a project on fire meant that I couldn&#8217;t do that.</p><p>So I left.</p><h2>Trading safety for more control</h2><p>The truth is, I couldn&#8217;t have fixed any of that. And as much as I complain here, most companies work the same way. They&#8217;re not evil, they just have other priorities. Failing the people who relied on my tools was the worst outcome I could picture. But to the company, failing to deliver that project was worse. If the whole team had quit but the project succeeded, that would still have counted as a good result.</p><p>So more ownership of the tools was not possible, at least not while I worked for a company that only cared about direct billable hours (which in the AEC, is most of them). <a href="https://sloanreview.mit.edu/article/why-service-businesses-are-not-product-businesses/">No company running on billable hours can protect the time and effort needed to build tools.</a> I am not saying that companies should ignore the cost of tools, but they should better weigh them against the projects, to figure which is a better use of resources.</p><p>Out on my own, I finally get to decide where the effort goes. I can actually support the things I&#8217;ve built and the people using them. But that&#8217;s always easier said than done. I now need to worry about the business case of everything I do.</p><p>There&#8217;s nowhere to hide. For all the harm office politics causes, they double as a shield, it&#8217;s so easy for me to just blame them. Now, if I stop delivering value, I don&#8217;t get paid. But ownership and exposure are the same coin. I don&#8217;t get to own more without also being the one responsible when it breaks.</p><p>None of this means project work is the enemy. It&#8217;s that the tools a team leans on need an owner who won&#8217;t get pulled away, someone who owns the problem end to end, maintenance and all. Out here, that&#8217;s the whole job.</p><p>Which brings me back to where I started. The teetering, the brace position, not knowing if this was the smartest or the dumbest thing I&#8217;ve done. I used to think that feeling meant I&#8217;d made a mistake. Now I think it just means the work is finally mine to answer for. Some days that terrifies me. I&#8217;ll still take it over drifting.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><hr></div><p><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 2: Too Many Balls in The Air]]></title><description><![CDATA[Week 2 of starting my own digital company in the AEC]]></description><link>https://www.codedshapes.com/p/week-2-too-many-balls-in-the-air</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-2-too-many-balls-in-the-air</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Fri, 24 Jul 2026 07:37:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/cC5KCATVIeQ" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-cC5KCATVIeQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cC5KCATVIeQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cC5KCATVIeQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If week 1 was fast, week 2 was a blink.</p><p>Holy shit, it went quick.</p><p>I think it&#8217;s because I&#8217;m juggling too much now. Right now that&#8217;s:</p><ul><li><p>Daily outreach</p></li><li><p>Meeting new people</p></li><li><p>Writing a new newsletter issue</p></li><li><p>Editing next week&#8217;s newsletter issue</p></li><li><p>Creating and editing 5x LinkedIn posts</p></li><li><p>Making the paid newsletter issue</p></li><li><p>Building a few software products</p></li><li><p>Building a new community (more on this soon)</p></li><li><p>Writing and assessing proposals</p></li></ul><p>And there&#8217;s actually no client work in there yet, which is crazy to even think about right now. But what actually ate my time was meeting people and prepping a proposal. Which I guess always take longer than I think.</p><p>I know it looks like too much, and it feels like it too. But it&#8217;s all work I care about, so the skill I need is triaging, instead of cutting things out. I know that everything isn&#8217;t urgent and not everything needs my best energy. So, I have to get better at protecting specific times for specific things.</p><p>This week, I moved outreach to the afternoons. The quality holds up fine at moderate energy, and it frees my mornings for the harder stuff. I also made a rule not to take meetings in the morning, unless there&#8217;s really no choice, like people in the EST timezone.</p><p>So, really, this week has been a big lesson in figuring out how to best plan and use my time effectively.</p><h2>My first proposal since going full-time</h2><p>Some of the outreach is bearing fruit, and it left me writing my first proposal since going full-time.</p><p>Compared to when I did this part-time, the stakes here feel higher. Like I don&#8217;t want to mess things up. I didn&#8217;t have to re-write a new one but I did take some time to compile and cherry pick the best bits from my old proposals into this new one.</p><p>That part was fine, the part that actually took more time was the classic problem of scoping the work and pricing it.</p><p>My first instinct was to give this new potential client choices. Because who doesn&#8217;t love choices? It was going to be a base build, then modules on top of that, each priced separately: base + A, B, C. Where the more modules he took, the bigger the bundled discount.</p><p>I was ready to hit send when I realized it was way too many choices. We are talking like 9 choices to make.</p><p>I think it was because I was scared. I wanted to hand the decision to the client instead of asserting what I thought was best. I mean who am I to assume what is best for him right ?</p><p>But I reminded myself that I know what I am doing and I should offer my opinion. Even if it&#8217;s wrong at least, I am providing some direction instead of pilling on more uncertainty.</p><p>So, I gutted the whole thing and started again. This time, no modules, just offering what I thought was the best for his situation.</p><p>I hope I&#8217;m right and but we&#8217;ll see.</p><p>Making that call felt like maturing, and it gave me more confidence to act on what I think instead of trying to please people by giving them options.</p><h2>Co-working</h2><p>The other thing I did a lot more of this week was co-working with a friend. We jumped on a call, chat a bit and got straight to work.</p><p>We did two 50-minute pomodoros each time. Did this for 3 days.</p><p>It&#8217;s been great because one thing about starting out on my own is that I don&#8217;t get to talk about the work I do as much. I mean I meet people but those are potential clients and that&#8217;s different from just working with someone.</p><div class="pullquote"><p>Subscribe to follow along for the journey!</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Selling Work That's Hard To Explain]]></title><description><![CDATA[It's always been hard telling people what I do]]></description><link>https://www.codedshapes.com/p/selling-work-thats-hard-to-explain</link><guid isPermaLink="false">https://www.codedshapes.com/p/selling-work-thats-hard-to-explain</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 23 Jul 2026 00:01:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iIkL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_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_!iIkL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iIkL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iIkL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01a499b3-17a2-4fc7-9892-a49f9fd2b07a_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;:2556665,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_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_!iIkL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!iIkL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a499b3-17a2-4fc7-9892-a49f9fd2b07a_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 aria-hidden="true" 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><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>Okay, so what&#8217;s the first thing someone does when they start a new company?</p><p>You know, the one thing that&#8217;s easy to do and makes you feel productive and in control.</p><p>.<br>.<br>.</p><p>Did you guess it?</p><p>.<br>.<br>.</p><p>They build a website. </p><p>And that&#8217;s exactly what I did, <a href="https://open.substack.com/pub/bradenkoh/p/im-starting-codedconstructs">a few weeks after going solo</a>.</p><p>But I have an advantage here. I&#8217;ve built plenty of websites before, so my problem now is not the design or the tech stack. It&#8217;s the messaging. Basically, I&#8217;m trying to answer:</p><p><em>How do I communicate what I do to others?</em></p><p>Which is a problem I&#8217;ve been circling for years. I&#8217;ve written before about <a href="https://www.codedshapes.com/p/what-happens-when-no-one-understand">what happens when no one understands what you do</a>, except back then it was a problem inside a company. Now there&#8217;s no company to hide behind.</p><h2>At first, I thought the job was to prove myself</h2><p>I&#8217;d just left a big-ish structural firm with a pile of projects and tools under my belt. I wanted to show every complex thing I&#8217;d built. Surely, that&#8217;s my value, right? I&#8217;d even done something like it before, so I had a template to copy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjZv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjZv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjZv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png" width="578" height="311.2307692307692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:578,&quot;bytes&quot;:1441173,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.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_!zjZv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!zjZv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c8d560-1b97-4b6d-a257-09a60aacdec1_3765x2028.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 aria-hidden="true" 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><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>My &#8220;portfolio&#8221; at bradenkoh.com</em></figcaption></figure></div><p>So I spent two days doing exactly that for CodedConstructs. But the more I worked on it, the more I hated it. It got to the point where I just gutted the whole thing and started again.</p><p><em>I just wasn&#8217;t sure what I was saying anymore.</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>Round 2, cutting the flash</h2><p>I didn&#8217;t hate the portfolio because I wasn&#8217;t proud of those projects. I hated it because I didn&#8217;t want to be that person. You know the type. The super-techy, know-it-all who&#8217;s always screaming &#8220;look how much value I&#8217;d bring if you&#8217;d just pay me.&#8221;</p><p>That&#8217;s the opposite of what I want <a href="https://codedconstructs.com/">CodedConstructs </a>to feel like. I want to be your partner in solving problems. I want to show that I understand the problem and can build something that fixes it. I want the site to do what I&#8217;d do in-person, ask questions, dig into the problem, before offering anything.</p><p>A flashy portfolio is the opposite of that. All it does is alienate people. What&#8217;s worse, it says nothing about whether I can build you a tool that saves your team time and effort. It&#8217;s the same mistake as <a href="https://www.codedshapes.com/p/this-is-why-they-dont-trust-us">building for the demo instead of the job</a>, just in a different medium.</p><p>In a field this abstract and confusing, I&#8217;m aiming for <em>clarity</em>. Not flash.</p><p>After some thinking, the way I got there was to <em>lead with the problem</em>, then show what it&#8217;s like to work on it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s52f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s52f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!s52f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!s52f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!s52f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s52f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:226854,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.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_!s52f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!s52f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!s52f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!s52f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F105eaacd-1059-4b26-a98d-53d66bf2b8e6_3765x2028.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 aria-hidden="true" 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><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>Of course, since the problem can be broad, I show the three ways I can help.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sPcz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sPcz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sPcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:244666,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.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_!sPcz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!sPcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b246f4c-a416-40cb-8714-4b614a7515cd_3765x2028.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 aria-hidden="true" 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><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 actually more reflective of me in real life too. I always start by trying to understand the problem first.</p><h2>Showing the process</h2><p>As part bringing more <em>clarity</em>, I wanted to show people what it&#8217;s like to work with me.</p><p>There aren&#8217;t many examples of digital work in the AEC industry, so I laid out what has worked for me in the past. Again, the goal is to take some of the blurriness out of all this digital stuff and replace it with a clearer picture of what building an effective tool actually involves. <a href="https://www.codedshapes.com/p/computational-design-isnt-magic">None of it is magic</a>, it just looks that way from the outside.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RhYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RhYC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RhYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:183797,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.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_!RhYC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!RhYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F680faccc-6420-4270-b59b-0c32baae6036_3765x2028.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 aria-hidden="true" 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><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>As simple as it looks on the website, most of that work was me iterating on how to articulate my own process.</p><h2>Examples, not a portfolio</h2><p>Cutting the traditional &#8220;portfolio&#8221; meant cutting my examples too. Which was a real loss, because examples are proof of work and they sometimes spark ideas people hadn&#8217;t considered.</p><p>What I didn&#8217;t want was the <em>show-ey</em> part. The big beautiful images that almost never represented the value of a digital tool.</p><p>So, I&#8217;ve gone against the grain and kept the examples light and text only. Along with a way to filter them by <em>pattern</em> and <em>discipline</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_!ANSt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ANSt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ANSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:295215,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.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_!ANSt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!ANSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7551daff-47f6-47a3-888a-edaaba0c47a4_3765x2028.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 aria-hidden="true" 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><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>But even with text only, I kept falling back into deep technical dives about the solution. Flashy is a hard habit to break.</p><p>So, each example followed a strict format that should be skimmable by anyone.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h_Rx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h_Rx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h_Rx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:261875,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.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_!h_Rx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 424w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 848w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.png 1272w, https://substackcdn.com/image/fetch/$s_!h_Rx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd0189-15ac-4eb2-81dc-bdf3c6dcc1bc_3765x2028.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 aria-hidden="true" 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><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 idea here is for anyone to read and hopefully identify with an example. Then, be motivated to reach out.</p><p>I want my examples to show the value and type of work I do not to overwhelm people with &#8220;awe&#8221;.</p><h2>I had to choose who not to help</h2><p>This was the hardest part of the site.</p><p>Deciding who I can&#8217;t help means focusing on areas I bring the most value to. This was particularly challenging because I love solving all types of problems.</p><p>But specificity opens more doors than being broad. Saying &#8220;I build custom tools&#8221; is vague and not helpful at all, which is roughly the reason I got fussy about <a href="https://www.codedshapes.com/p/what-do-you-actually-deliver">what I actually deliver</a> in the first place. So, I got more specific about the firms I can best help.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EaSv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EaSv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 424w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 848w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 1272w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EaSv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:204098,&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/207762759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.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_!EaSv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 424w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 848w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.png 1272w, https://substackcdn.com/image/fetch/$s_!EaSv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1d196a-8607-40e0-851c-5aa0e6674985_3738x2019.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 aria-hidden="true" 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><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>To me, it&#8217;s the small-to-medium, busy firms without the in-house capability to build tools for themselves. Big firms can afford a digital person. It&#8217;s the small-but-slammed shops that need the automation most and are least able to make it. That&#8217;s where I&#8217;ve delivered the most value.</p><p>The uncomfortable bit is that I <em>could</em> say yes to more. I&#8217;ve spent most of my career inside structural firms. I could offer structural advice, or drafting help. But that&#8217;s not the value I want to bring. The whole point is helping teams get more out of their computers, and I can&#8217;t do that while trying to be everything to everyone.</p><div class="pullquote"><p>If you&#8217;ve got something repetitive that bugging you, I&#8217;d be happy and honored to talk through how you&#8217;re framing the problem and see if a custom tool can solve the problem</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><h2>This is all a working theory</h2><p>As certain as I sound about all this, it&#8217;s still a bet.</p><p>I&#8217;ve just started my own firm, so how I position CodedConstructs is bound to change, and hopefully the site changes with it. I&#8217;m <a href="https://www.codedshapes.com/p/week-1-free-and-running-out-of-time">writing all of it down as I go</a>, messaging included.</p><p>I know a website won&#8217;t be some overnight client magnet, and most people won&#8217;t even know it exists. But it&#8217;s the one place I fully control the narrative. It&#8217;s where I get to define what CodedConstructs stands for and how I want to talk about digital work in AEC. And knowing me, I&#8217;ll keep tinkering with it forever.</p><p>Whether leading with the problem actually pulls the right people in, I honestly don&#8217;t know yet. But it&#8217;s the stance I&#8217;m taking.</p><p>Hopefully this gave you a glimpse of what CodedConstructs is about. And maybe a nudge to ask yourself the same question. How would you explain your work if you had to?</p><p>The site is live, so have a look: <a href="https://codedconstructs.com/">www.codedconstructs.com</a>.</p><div class="pullquote"><p>Thanks for reading <br>Subscribe to CodedShapes to get more articles like this delivered to your inbox</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><em><strong>Work with me:</strong> <a href="https://codedconstructs.com/contact/">https://codedconstructs.com/contact/</a></em></p><p><em><strong>Resources on Computational Design: </strong><a href="https://www.codedshapes.com/p/scripository">https://www.codedshapes.com/p/scripository</a></em></p>]]></content:encoded></item><item><title><![CDATA[Week 1: Free, and Running Out of Time]]></title><description><![CDATA[This is what I did in the first week of leaving my job and starting a new company.]]></description><link>https://www.codedshapes.com/p/week-1-free-and-running-out-of-time</link><guid isPermaLink="false">https://www.codedshapes.com/p/week-1-free-and-running-out-of-time</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Mon, 20 Jul 2026 00:33:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/h4xWJAArbsY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="callout-block" data-callout="true"><p><strong>What is this</strong></p><p>I&#8217;m going to try to write, and film, one of these every week. It&#8217;s a short log of what it&#8217;s like to leave a job and build something on my own. I am treating this as a &#8220;documenting&#8221; style but will try to make it as coherent as possible.<br></p><p>I think this journey of mine is going to be interesting, so I want to share it with everyone but I also didn&#8217;t want to disrupt my current newsletter. So, I create a new &#8220;section&#8221; on Substack.<br></p><p>And if you don&#8217;t want to follow along or read this, no problems, you can always unsubscribe to this section at the bottom while still getting the normal CodedShapes issues every week.</p></div><h2>Rules</h2><p>I adding this to my already pretty long things to do weekly, so I made some rules to prevent this from sucking up too much of my time.</p><ul><li><p>Writing and editing, can only take 1 hour</p></li><li><p>Filming and editing, can only take 1 hour</p><ul><li><p>During filming, no more than 5 re-takes.</p></li></ul></li><li><p>Publishing (in all it&#8217;s nitty gritty), can only take 30 minutes</p></li></ul><p>I am going to set a time for each and when the time is up, I&#8217;ll wrap up and publish. The whole point is for this to be rough and it&#8217;s a log, not &#8220;content&#8221;.</p><h2>Week 1</h2><div id="youtube2-h4xWJAArbsY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;h4xWJAArbsY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/h4xWJAArbsY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>It&#8217;s the end of week 1 of going independent for me.</p><p>And if I could sum it up in two words, it would be: freeing and exhausting.</p><p>Like the start of most journeys, I&#8217;m find myself wanting to do many things. Filled with excitement and busier than ever.</p><p>I got more done than I had in weeks.</p><p>Just as a summary,</p><ul><li><p>I got the company setup and all its accounting logistics and tax implications</p></li><li><p>I got the CodedConstructs site up and running</p></li><li><p>I have been doing some outreach every day</p></li><li><p>I had some meetings with new people (Just meeting interesting people)</p></li><li><p>I had some discussions about new projects to collaborate</p></li><li><p>I have been doing some product development too</p></li></ul><p>Every evening, I am exhausted. But there&#8217;s a strong sense of accomplishment each day. There&#8217;s just something about being able to own the end-to-end process that makes working on it, so great. Maybe it&#8217;s the control and also the fact that I am able to execute on my &#8220;vision&#8221; for what digital work looks like.</p><p>It&#8217;s also the small things too. Like being able to go to the gym before lunch instead of &#8220;slumming&#8221; it with the after work crowd. Or meeting people and not worrying about my lunch break ending and having to rush the end of a great conversation. Since, I just started being able to work from my &#8220;office&#8221; at home is way better than the pressure of needing to go to the an office (although I imagine, this will get lonely soon).</p><p>All of this in the first week has made imagine going back to a full time job unimaginable.</p><p>As Naval once said:</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/naval/status/977712028163833856?ref_src=twsrc%5Etfw\&quot;>March&quot;,&quot;full_text&quot;:&quot;<span class=\&quot;tweet-fake-link\&quot;>@johndurant</span> A taste of freedom can make you unemployable.&quot;,&quot;username&quot;:&quot;naval&quot;,&quot;name&quot;:&quot;Naval&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1256841238298292232/ycqwaMI2_normal.jpg&quot;,&quot;date&quot;:&quot;2018-03-25T01:01:27.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:84,&quot;retweet_count&quot;:981,&quot;like_count&quot;:4554,&quot;impression_count&quot;:0,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>But it&#8217;s not all glorious.</p><p>The elephant in the room here is that at some point, all of this has to make money.</p><p>Freedom is great and all but so is being able to pay the bills.</p><p>And it&#8217;s a sneaky one. Because now that I am alone and every decision is on me. Which leaves room for a lot of doubt and questions. No more manager or &#8220;management&#8221; to blame. Everything is on me.</p><p>Which when I am tired, can feel overwhelming.</p><p>It&#8217;s a strange to feel so free and also feel that time is running out at the same time.</p><p>It&#8217;s led me to understand burnout better now than I ever did on a salary. Because there is just an infinite things to work on at a given time. There&#8217;s just always more to do.</p><p>Actually, the hardest part might even be to trust myself more. Because well I making decisions that need to have a positive and monetary impact and a lot of that is trusting my own instincts and processes.</p><p>In a few moments of weakness I have thought of reaching out to the less savoury kind of people ~asking~ begging for a project just because it seemed easier than to stand my ground. But I&#8217;m hoping I never go through with that.</p><div><hr></div><p>That&#8217;s week one in a nutshell.</p><p>I am going to try and keep these up each week because I find it interesting to see how this unfolds.</p><p>Thanks for reading.</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 follow along for the journey!</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><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[I'm Starting CodedConstructs]]></title><description><![CDATA[A digital consultancy to help AEC teams be more efficient]]></description><link>https://www.codedshapes.com/p/im-starting-codedconstructs</link><guid isPermaLink="false">https://www.codedshapes.com/p/im-starting-codedconstructs</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 16 Jul 2026 00:00:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!egai!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_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_!egai!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!egai!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!egai!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!egai!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!egai!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!egai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ef77414-87dd-4bc7-9b4e-f74a39361109_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;:2406542,&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/206526498?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_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_!egai!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!egai!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!egai!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!egai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef77414-87dd-4bc7-9b4e-f74a39361109_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 aria-hidden="true" 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><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><div class="callout-block" data-callout="true"><p><strong>Announcement</strong><br>I&#8217;m going solo! I&#8217;m starting <a href="https://codedconstructs.com/">CodedConstructs </a>as an independent firm that focuses on consulting, creating some software products and a few other adventures I&#8217;ll share along the way.</p></div><p>I&#8217;ve spent months deliberating this and everyone tells you how scary it is to &#8220;take the leap&#8221;. But no one warns you how weird the time leading up to the jump actually is. I have pivoted between being grateful and then wanting to be rid of the job. And the best of all, teetering between full of self-doubt and full of confidence. </p><p>It&#8217;s really was a strange time to be in. </p><p>I&#8217;m allowing myself to feel all of it because I think that&#8217;s the best way forward. </p><h2>The weirdness of being a digital person in the AEC</h2><p><a href="https://www.codedshapes.com/">CodedShapes</a> has been my way of trying to make sense of this weird field. Working through story on what it actually means to be a <a href="https://www.codedshapes.com/p/youre-too-good-at-fixing-things">technology person inside an industry that doesn&#8217;t need technology to deliver its work</a>.</p><p>AI and Grasshopper are great, but at the end of the day, a building just needs a drawing printed on paper. As long as getting there isn&#8217;t too expensive, most companies actually don&#8217;t care.</p><p>Through these articles, I kept circling the same question from different angles. <a href="https://www.codedshapes.com/p/how-to-know-if-your-workflow-is-actually">Finding the right things to build</a>. <a href="https://www.codedshapes.com/p/you-dont-have-to-build-your-own-automation">Debating billable vs internal tools</a>. Hammering on the point of <em><a href="https://www.codedshapes.com/p/5-questions-that-made-me-rethink">understanding first, before building</a></em>.</p><p>All of it has been me trying to answer: <em><strong>how does digital work actually fit inside AEC?</strong></em></p><blockquote><p><em>When I say &#8220;digital&#8221; I mean everything : Building plugins, Excel macros, Grasshopper scripts, standalone applications, web applications, &#8230; everything</em></p></blockquote><p><a href="https://provingground.io/2017/02/15/positioning-computational-designers-in-your-business-4-things-to-consider/">Proving Ground put it well in 2017</a> when they wrote that computational design was largely misunderstood. That it should be treated like a problem solving methodology instead of an actual role. The article even goes on to suggest ways of working with digitally forward people at a time where &#8220;computational design&#8221; was just a new thing.</p><div class="pullquote"><p>In my view, the best indicator you have found the right fit for your team will be in how well the applicant can convey their thought process, and that it aligns with your aims and values. Ultimately, they should be interested to learn about the design challenges specific to your firm and describe a computational vision that can help lead your business to the best possible solution. - <a href="https://provingground.io/2017/02/15/positioning-computational-designers-in-your-business-4-things-to-consider/">Proving Ground, 2017</a></p></div><p>But here we are, almost a decade later and no one has a good answer. People still don&#8217;t know if the computational designer is a BIM person or an engineer or just a software developer. And even operation wise, is the role project focused? Is it just R&amp;D? Is it both? How do we budget it?</p><p>And now with AI, we&#8217;ve arguably moved even further <em>from</em> understanding what these roles are. Since it&#8217;s made tool-building more accessible, a lot more &#8220;normal&#8221; people are making tools now, which blurs this line even more. </p><p>Is a senior structural engineer that uses AI to build tools the same as computational design? I don&#8217;t think so, but some companies might.</p><p>I still believe in the vision of &#8220;<em><strong>describe a computational vision that can help lead your business to the best possible solution</strong></em>&#8221; but I just don&#8217;t think doing it from a company works anymore.</p><h2>What working inside taught me</h2><p>I&#8217;ve spent most of my career working inside structural engineering consultancies. Building tools, scripts, workflows, and digital systems around the company and it&#8217;s projects. And it&#8217;s been a bumpy ride. I&#8217;ve built <a href="https://www.codedshapes.com/p/this-is-why-they-dont-trust-us">tools that entire projects depended on</a>. And I&#8217;ve built tools that <a href="https://www.codedshapes.com/p/what-happens-when-the-person-who">never saw the light of day</a>, months of work just sitting in a folder somewhere because it wasn&#8217;t thought out properly. Or because someone thought it was a good idea to automate the small 1% of their work.</p><p>And what I have found is that even though it&#8217;s a deeply technical area, the things that actually dictate the value of computational design are <em><strong>communication and understanding</strong>,</em> which are both very human problems.</p><p>As I &#8220;climbed the ranks&#8221;, I kept pushing to understand the entire delivery chain for digital work in this industry. Not just the tool building but <a href="https://open.substack.com/pub/bradenkoh/p/the-real-cost-of-sharing-grasshopper">the scoping, the selling, the maintaining</a>, the finances, basically, everything. </p><p>But as I pushed for more ownership while working for companies, I met an equally increasing resistance that stemmed from all the classic &#8220;corporate&#8221; reasons. <a href="https://www.codedshapes.com/p/the-spreadsheet-is-never-just-a-spreadsheet">Politics, budgets and status games</a>.</p><p>It was reaching a point where the role didn&#8217;t fit the work I wanted to do anymore.</p><h2>Walking the walk</h2><p>It&#8217;s easy to complain about companies not giving me what I want. It&#8217;s much harder to do something about it. So, this is me walking the walk.</p><p>I&#8217;ve spent years writing about how computational design works (and should work) in our industry. And now I want to put that to the test on my own terms. Going independent forces me to stress-test my own philosophy, which has always been to <a href="https://www.codedshapes.com/p/are-you-thinking-about-your-script">understand first, then build</a>.</p><p>In a world where building new tools is fast, focusing on the human elements like communication and understanding seems counter-intuitive but it&#8217;s the right instinct to act on now.</p><p>The industry still doesn&#8217;t know how to position this work. And just building things quicker with AI is not going to solve that. </p><p>But the other hard truth is that I also don&#8217;t know what the answer here is either.</p><p>Starting my own consultancy forces me to find that answer because you can&#8217;t sell something you can&#8217;t explain. I can&#8217;t hide behind budgets or politics anymore, I am forced to confront the market with my ideas. I have to find the fit between what I believe and what people actually need.</p><p>Which is why it&#8217;s taken a lot of deep soul searching and incredibly difficult work to arrive at this decision. But ultimately it became clear that this was the only way forward.</p><h2>What is CodedConstructs</h2><p>To me, <a href="https://codedconstructs.com/">CodedConstructs </a>is not a completely new thing. It doesn&#8217;t change the work or who I am. It&#8217;s a clearer container for the work I&#8217;ve already been doing and want to do more of. Well, this container needs to pay my bills at some point.</p><p>I want to build tools and workflows that teams can actually adopt, maintain, and use to be more efficient. Not built for marketing or because some director decided the company &#8220;needs to do more AI.&#8221;</p><p>The work I care about sits between design, delivery, and software. And it&#8217;s always been about ensuring the tool fits the way the team actually works.</p><h2>What&#8217;s next</h2><p>Nothing changes on the CodedShapes (this newsletter) front. But it does mean I am fully open for business.</p><p>If your team has a design, modelling, documentation, or reporting workflow that feels too manual, too fragile, or too dependent on one person, <a href="https://calendly.com/braden-codedconstructs/30-minute-chat?month=2026-07">I&#8217;d be happy to chat</a>. Even if it&#8217;s just to think through what makes sense, that conversation is free. </p><p>If it doesn&#8217;t work, I&#8217;ll tell you and I&#8217;ll never take payment from you before the next steps are clear. </p><div class="pullquote"><p>Subscribe to follow me on my solo journey! Let&#8217;s see how I do in the next few months</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[Has Computational Design Ruined My Career?]]></title><description><![CDATA[A decade of uncertainty brought me here]]></description><link>https://www.codedshapes.com/p/has-computational-design-ruined-my</link><guid isPermaLink="false">https://www.codedshapes.com/p/has-computational-design-ruined-my</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 09 Jul 2026 00:01:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!h_3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_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_!h_3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h_3p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h_3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1ac556b-3b1f-4805-860f-aac5d4379b6f_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;:2734404,&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/204992136?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_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_!h_3p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!h_3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ac556b-3b1f-4805-860f-aac5d4379b6f_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 aria-hidden="true" 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><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 the first few years after graduating, this single question kept me up at night the most.</p><p>I was lucky (and maybe not so lucky) because early in my career, I got a job at a structural engineering company that just started a digital team, and I was their first computational design graduate.</p><p>The concept was a team that knew engineering <em>and</em> code, helping create tools and workflows that made everyone else in the company more efficient. Grasshopper was all the rage back then and this company wanted to use that as an advantage. Well, and normal programming to build proprietary tools.</p><p>But really, no one knew what that actually meant. Like what progressing in the role looked like. What the team structure was going to be. How to discuss salary. Or even how to budget the team. It was all so new to everyone.</p><p>And as a graduate, I couldn&#8217;t help but worry about my future.</p><p>Especially when the rest of my cohort from university were discussing their careers. They talked about getting to senior level. About being fast-tracked to manager. Or even negotiation tactics on how to get the salary they thought they should be getting.</p><p>They looked to the future with certainty while I didn&#8217;t even know what my next year would look like. Does &#8220;senior&#8221; even mean anything in a field of less than a 100 people?</p><p>So, again, the question kept haunting me.</p><blockquote><p><em>Am I wasting my time by doing computational design?</em></p></blockquote><p>I wanted someone to tell me what the next step was. To show me what it meant to &#8220;climb the ranks.&#8221; To give me a promotion checklist to work on. Most importantly, I wanted someone to tell me that I was learning useful stuff for the future.</p><p>But as uncertain as things were, the work was too interesting to give up. I was coding, I was scripting, I was exploring digital concepts with clients and directors. It was one of the most interesting times of my career.</p><p>So, I soldiered on, hoping the company would overcome the growing pains of starting a new digital team.</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 valuable.</em></p><p><em>If you&#8217;re new to CodedShapes, welcome! You might also 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>A few projects and tools (and years) later...</h2><p>We still didn&#8217;t know a damn thing.</p><p>And like anything new, the interesting bits started to go stale. And this idea of being a digital person in this structural company started to really weigh on me.</p><p>I got promoted to senior. Cool, but again, no one knew what that meant. Every fortnight, we had meetings about budgets and R&amp;D initiatives.. We had directors chasing us to create concepts that never saw the light of day.</p><p>On paper, cool stuff but <a href="https://www.codedshapes.com/p/why-measuring-computational-design">no one knew how all of that got translated into value for the company</a> and into our roles. Every performance review was tense as I kept pushing for a clearer direction and more pay (as does everyone).</p><p>At some point, I stopped waiting for the moment when the path would become obvious. And kept questioning whether I had made a terrible career decision.</p><h2>Then AI showed up</h2><p>At first, it was amazing.</p><p>I ignored everyone who said &#8220;AI would take our jobs&#8221; because I found myself performing at a higher level. I was executing at a speed that wasn&#8217;t possible before. Tools and workflows got created much quicker because of it. Maybe this was a way of proving my value and finally getting some direction. Maybe, this will bring back the glory days.</p><p>But then, engineers, drafters, &#8230;. everyone started using it.</p><p>And not just chatting with it, they started <a href="https://open.substack.com/pub/bradenkoh/p/your-tools-dont-last-because-its">building their own automations, creating custom tools</a>, connecting AI directly to their workflows. When the digital team couldn&#8217;t respond to them because of budgets or politics, they simply used AI.</p><p>Suddenly, the threat seemed real.</p><p><a href="https://www.codedshapes.com/p/i-built-it-for-the-team-somehow-i">If people can build their own tools now, why would they need me?</a></p><p>In fact, a quick google tells you that <a href="https://www.oneusefulthing.org/p/the-twilight-of-the-chatbots">domain experts make the </a><em><a href="https://www.oneusefulthing.org/p/the-twilight-of-the-chatbots">best</a></em><a href="https://www.oneusefulthing.org/p/the-twilight-of-the-chatbots"> use of AI</a>. If you&#8217;re an expert drafter or engineer, you can use AI to build something amazing because you know the field so well.</p><p>So, if my value is connecting people to digital tools, and AI can now do that, what is my value?</p><p>If I had focused on being a structural engineer from the beginning, I could be using AI right now to build tools because I would&#8217;ve have been a domain expert.</p><p>Instead, I&#8217;m in this weird middle ground, knowing a lot about software and the AEC industry, but not enough in either domain to be a true expert. If I had <a href="https://www.codedshapes.com/p/a-week-of-tutorials-and-i-still-couldnt">stuck to a typical engineering career and just learnt to code as a hobby</a>, would I be in a better position?</p><p>Almost a decade later, I guess it&#8217;s the same question that still keeps me up at night.</p><h2>But there&#8217;s no such thing as certainty</h2><p>When I was a graduate, I wanted someone to show me the path to senior.</p><p>Then, I wanted to know how to climb the ranks. To know what was next apart from making tools and concepts.</p><p>Now, with AI so good at executing and people building their own tools, how do I move forward?</p><p>The good news is, as humans, we&#8217;re good at recognizing patterns. And the pattern here is that my career has <em>always</em> been uncertain. AI is just the latest version of the same feeling&#8230; I think.</p><p>And as intoxicating as it is to daydream about <a href="https://www.codedshapes.com/p/there-is-no-promised-land">&#8220;if I just stuck to engineering, my life would be better&#8221;</a>, the truth is, I wouldn&#8217;t be here if it wasn&#8217;t for this weird intersection.</p><p>I wouldn&#8217;t have started this newsletter or delivered <a href="https://www.codedshapes.com/p/my-three-biggest-failures-in-computational">all the incredible projects and tools in the past</a> if I had just been a regular engineer.</p><h2>And you might be feeling this too</h2><p>Maybe not about computational design. But about <em>something</em>.</p><p>Maybe it&#8217;s the job market or the economy. Maybe, like me, it&#8217;s the thought that AI is coming for our jobs.</p><p>But as the saying goes, &#8220;the only constant is change&#8221;.</p><p>Which means, I&#8217;ll never get the certainty I crave.</p><p>Which as uncomfortable as it feels (all the damn time), it&#8217;s a good thing. It&#8217;s what I&#8217;ve had to remind myself while writing this. Certainty was never the thing that moved me forward anyway. It was <a href="https://www.codedshapes.com/p/when-did-you-last-try-something-new">following what was valuable and interesting</a> at the time.</p><p>Whenever I waited for the path to become clear, nothing happened. But every time I just did the work because it was interesting, it opened up new pathways for me.</p><div class="pullquote"><p>If you&#8217;re thinking about bringing technology into a project, I&#8217;m happy to talk through how you&#8217;re framing the problem and if it&#8217;s the right way forward<br>The conversation is always free</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><em>P.S. If you can&#8217;t tell, this article is more for me than it is for you. I&#8217;m dealing with a lot of uncertainty right now and writing this has reminded me how much I&#8217;ve had to navigate to get here.</em></p><p><em>P.P.S. I&#8217;ve got an announcement next week. Let&#8217;s just say I&#8217;m done waiting for the path to become clear.</em></p>]]></content:encoded></item><item><title><![CDATA[Your Tools Don't Last Because It's Nobody's Job]]></title><description><![CDATA[If you have internal tools, you know how this ends]]></description><link>https://www.codedshapes.com/p/your-tools-dont-last-because-its</link><guid isPermaLink="false">https://www.codedshapes.com/p/your-tools-dont-last-because-its</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 02 Jul 2026 00:01:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7GfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_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_!7GfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7GfU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7GfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d495b6ac-db83-4af4-993c-11cea84a05d3_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;:2851254,&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/203786372?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_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_!7GfU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!7GfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd495b6ac-db83-4af4-993c-11cea84a05d3_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 aria-hidden="true" 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><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>Meet Nate.</p><p>He&#8217;s a senior structural engineer. The kind of person that&#8217;s always looking for ways to make delivery less painful.</p><p>He was working on a high-rise project which has concrete columns. It was a 23 floor building with about 20 or so columns per level. What engineers then typically do to assess the columns, is a technique called a &#8220;column load rundown&#8221;.</p><p>You take results from the analysis model, put them into a design program, and check that every column works. The problem though, is you have to do this for <em>each</em> column on <em>every</em> floor. On this project, that&#8217;s more than 400 columns. And every time there&#8217;s a design change, you do it again.</p><p>It is as tedious as it actually sounds.</p><p>Which is why it&#8217;s known as a &#8220;rite of passage&#8221; for graduate engineers. Because it&#8217;s labour intensive and considered as &#8220;engineering grunt work&#8221;, most companies make graduates do them. That solves the cost issue but it still takes a long time to do them.</p><p>So, most companies have some sort of workflow to speed this up. Not fully automated but not entirely manual either. Generally, enough for new graduates produce results in a decent amount of time but still too tedious for senior engineers to use.</p><p>In this company, Nate built that workflow. It was an Excel spreadsheet that would take the results from an analysis model and through some inputs, it would design all the columns per floor. That meant, the graduates on this project only had to do this 23 times instead of 400+ times. What used to take three days now took about four hours.</p><p>But the spreadsheet wasn&#8217;t perfect. It only supported one analysis program and it only handled single-storey columns. And since Nate is busy with other projects all the time, <a href="https://www.codedshapes.com/p/what-happens-when-the-person-who">the spreadsheet fell behind</a> with each new requirement it couldn&#8217;t handle.</p><p>Not to mention, <a href="https://www.codedshapes.com/p/the-spreadsheet-is-never-just-a-spreadsheet">fixing a spreadsheet he built for other teams isn&#8217;t in his KPIs</a>. It won&#8217;t get him promoted. Upper management only cares about how <em>billable</em> he is, not what tools he&#8217;s made. It&#8217;s not something he can justify spending a Tuesday on when there are deadlines to hit.</p><p>And so, the spreadsheet remains out of date. People still use it because it&#8217;s still better than doing the rundowns manually. <a href="https://www.codedshapes.com/p/does-your-tool-still-fit-the-way?r=yraxj">But they start working around it, adding band-aids to cover for the things it can&#8217;t do.</a></p><p>In fact, there&#8217;s a new graduate working on this project, her name is Rey, and she&#8217;s using AI to build a new column rundown spreadsheet because she can&#8217;t get Nate&#8217;s to work.</p><p><a href="https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples?r=yraxj">But we all know how that goes...</a></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>The tension of being billable vs internally useful</h2><p>Nate&#8217;s story, unfortunately, represents most internal tools ever built in the AEC (Architecture, Engineering, Construction) industry. Unless it&#8217;s a company&#8217;s core business offering, <a href="https://www.codedshapes.com/p/youll-never-see-me-saying-automation?r=yraxj">tools like these always follow a similar stor</a>y.</p><p>Nate wasn&#8217;t trying to build a product. He was just trying to get through a painful process faster. He saw a problem, and he built something that fixed it. Which is most people in this industry. No one is thinking about &#8220;internal tooling&#8221; or &#8220;automation strategy.&#8221; Everyone just wants something that makes their lives easier.</p><p>Not to mention, building something that solves <em>your exact problem</em> is fun and creative. Chatting to AI or even building a new spreadsheet is more fun than doing a column rundown for 400+ columns over and over again.</p><p>But the minute you build something useful that everyone else wants, there&#8217;s a tension on your time that didn&#8217;t exist before. You now have to teeter between being billable and being internally useful because you now accidentally own what you&#8217;ve built</p><p>Doing a column rundown one by one is slow, but you&#8217;re making progress. And you can charge that time to the project because that&#8217;s just what it takes to get it done. But if you work on Nate&#8217;s tool, how do you charge your time to something that helps on <em>all</em> projects?</p><p>It becomes a battle of <em>solving today&#8217;s problem</em> vs <em><a href="https://www.codedshapes.com/p/your-script-doesnt-need-to-work-on">solving it in a way that lasts</a></em>.</p><p>And companies usually only rewards the first because anytime that isn&#8217;t charge to projects is considered overhead. And when the company looks to promote Nate, it&#8217;ll be because of his projects, not because of the spreadsheets he made. <a href="https://www.codedshapes.com/p/youre-too-good-at-fixing-things">Nobody gets promoted for maintaining an Excel sheet.</a></p><p>So, <a href="https://www.codedshapes.com/p/i-built-it-for-the-team-somehow-i?r=yraxj">you build something useful, and now you&#8217;re accidentally responsible for a product. With no time, no incentive, and no support to keep it alive.</a></p><p>If we look at pure software development, there&#8217;s a reason why &#8220;product management&#8221; exists as a completely separate role. It&#8217;s the work of tracking what&#8217;s broken, deciding what to improve, and checking its alignment with the current business.</p><p>It&#8217;s <em>maintenance</em>, and it&#8217;s treated as real work.</p><p>AEC has nothing like this. <a href="https://www.codedshapes.com/p/writing-a-script-isnt-the-same-as">The person who builds the tool </a><em><a href="https://www.codedshapes.com/p/writing-a-script-isnt-the-same-as">is</a></em><a href="https://www.codedshapes.com/p/writing-a-script-isnt-the-same-as"> the product manager</a>, the support team, the developer, and they&#8217;re also a full-time engineer with billable targets. Which is why most of these tools die.</p><h2>The Rebuild Reflex</h2><p>With AI in the mix now, building things is faster than ever. You can get a working macro, a script, even a small app in a few a hours. The barrier to <em>creating</em> something has basically collapsed.</p><p>Which means the ownership problem gets worse.</p><p>Before AI, building something took enough effort that most people wouldn&#8217;t bother. They&#8217;d work with whatever tools they had, even if those tools were somewhat broken. But now, instead of wrestling with Nate&#8217;s semi-broken spreadsheet, anyone can just build their own version. I call this the <em>rebuild reflex</em>. It&#8217;s when it feels easier to rebuild something from scratch than to understand and maintain what already exists.</p><p>And project deadlines accelerate this. You&#8217;re even more inclined to build rather than maintain because the <em>known effort</em> of creating something new feels safer than the <em>unknown effort</em> of debugging someone else&#8217;s thing. Even if it&#8217;s objectively slower, it feels more in your control.</p><p>So, instead of one well-maintained tool, you end up with a dozen half-working ones. All doing roughly the same thing but uniquely for each project.</p><p>And well, from a numbers point of view, individual productivity goes up because everyone has a new tool that <a href="https://www.codedshapes.com/p/how-i-actually-know-if-my-scripts">solves their problem</a>. But what companies miss is the drift in quality and standards. When everyone does things their way, there&#8217;s no consistent bar for delivery anymore. How do you standardize the way people do things if they are all on unique tools ?</p><p>Not to mention, a graduate and a senior can both ask AI to build a column rundown spreadsheet. But the senior knows which features actually matter. They know enough to hone in on where normal spreadsheets fail. They know what &#8220;correct&#8221; means in context.</p><p>But a graduate who just started might just listen to the AI, even when it&#8217;s wrong. And if their manager is too busy to do a thorough review, that could lead to a real problem. I don&#8217;t even want to think about what happens when that graduate-made spreadsheet ends up in the hands of <em>other</em> graduates. (Yes, I&#8217;ve seen this happen.)</p><div class="pullquote"><p>If you&#8217;ve got something manual and repetitive, come chat with me to see if we can build something to ease that burden. <br>The chat is always free. </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><h2>The Missing Role</h2><p>So what did Nate&#8217;s team actually need? Well, they needed someone who <em>owned</em> the tool. Someone who could filter through requests, decide what changes mattered, and actually had the <em>time</em> to make them.</p><p>In other words, a product owner.</p><p>Now, I know that sounds like a role most 20-person AEC firms can&#8217;t justify. And that&#8217;s kind of true because the reality is that most firms don&#8217;t have the volume of tools or the budget to warrant a full-time hire for that.</p><p>But that doesn&#8217;t mean the work doesn&#8217;t need to happen. It just means you have to be intentional about <em>how</em> it happens. Because if you make &#8220;being billable&#8221; compete against &#8220;working on internal tools&#8221; for the average person, being billable will always win. Which is why the tools die.</p><p>One option is working with someone external who can fill that role for you. Someone who helps develop and maintain your tools without pulling your billable staff off projects. That&#8217;s a lot of what I do for my clients. It means you don&#8217;t have to keep someone fully resourced on just the tools, and there&#8217;s no battle between being billable and internal development.</p><p>Not to mention I work with you to figure out the direction of the tools, I don&#8217;t just come in and assume control, we&#8217;ll still work together on it.</p><p>If that sounds like something that could help, reply to this email or book a time to chat through the button below.</p><div class="pullquote"><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[You're Too Good At Fixing Things]]></title><description><![CDATA[Is fixing that thing still the best use of your time ?]]></description><link>https://www.codedshapes.com/p/youre-too-good-at-fixing-things</link><guid isPermaLink="false">https://www.codedshapes.com/p/youre-too-good-at-fixing-things</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 25 Jun 2026 00:01:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hnA_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_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_!hnA_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hnA_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hnA_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc4c582d-268b-4976-ad37-5af43e720a7b_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;:3062382,&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/202795325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_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_!hnA_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!hnA_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4c582d-268b-4976-ad37-5af43e720a7b_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 aria-hidden="true" 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><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>Being a &#8220;digital&#8221; person in the AEC (Architecture, Engineering, Construction) is a weird place to be. Especially, if you work for a consultancy.</p><p>To put it simply, there are two modes of operating. Fire-fighting or tool building.</p><p>Fire-fighting is solving problems on projects. Scripting, pulling data, fixing models, whatever it takes to get the job done as quick as possible. These are where tools like Grasshopper, Dynamo or Python shine because no one cares about how robust your solution is. They just want results.</p><p>Tool building is the polar opposite. It&#8217;s when you&#8217;ve seen a problem enough times that you decide to invest in a proper tool, something reusable. It&#8217;s more like conventional software development, and it&#8217;s probably why I got into this field in the first place.</p><p>But the problem though is that these two operating modes are not equal. Working on projects is billable to clients. Tool building, even though more beneficial in the long run, isn&#8217;t.</p><p>So, there&#8217;s always a bias towards fire-fighting.</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>The Competence Trap</h2><p>If you&#8217;ve been doing this for a while, you know how this plays out. You start out as someone who can solve problems quickly. You&#8217;re good with Grasshopper or Dynamo or whatever the tool is. People notice and love having you on their projects because you&#8217;re efficient and deliver at a high quality.</p><p>You start earning a reputation of putting out fires. You solve problems well, deliver at a high quality and let&#8217;s face it, you&#8217;re also cheap. So, to some extent, putting out fires becomes your value.</p><p>So, what happens when you want to build something? You&#8217;ve been fire-fighting long enough to see where a proper tool would help everyone. But the team doesn&#8217;t see you as the person who builds things, they see you as the person who fixes things.</p><p>And those are two very different roles, even if they use the same skills.</p><p>You know that if you could free up a week or two, you&#8217;d be able to build something that would make things just way more efficient. A true proper tool that could solve the pain points that you&#8217;ve been seeing so often on projects.</p><p>But every time, you sit to start, you get interrupted. Someone, somewhere needs your help. You&#8217;re just too good at putting out fires. And because it&#8217;s urgent and billable, you say yes.</p><h2>Why &#8220;Just Block Time&#8221; Doesn&#8217;t Work</h2><p>All the time hacks in the world can&#8217;t save you here. You can&#8217;t just &#8220;carve out time&#8221; or try one of those calendar-blocking things. If a project needs you, it doesn&#8217;t care when you&#8217;ve blocked your calendar or what AI tools you&#8217;re using. It needs you to put out those fires now.</p><p>And if you do manage to protect a few hours, building and fire-fighting require completely different kinds of energy. You can&#8217;t fix someone&#8217;s Revit model all morning and then design a new tool in the afternoon.</p><p>Well, you can. You just won&#8217;t do it well. If you&#8217;re like me, you&#8217;d be tempted to rush the tool building process because you don&#8217;t know when is the next time you will get to it.</p><p>Building requires a clear head, a longer time horizon, and the mental space to think about problems that aren&#8217;t screaming at you. You really do need the space to just sit with the problem.</p><div class="pullquote"><p>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to be more efficient with technology</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 Helps</h2><p>The antidote, as you might guess, is simple.</p><p>If you can&#8217;t carve out time within a day, you have to carve out whole days or even weeks.</p><p>And that means choosing which fires to fight and which to let burn. I said it was simple but it definitely isn&#8217;t easy.</p><p>Essentially, you have to say no. Which means letting people down. And being okay with people seeing you as the &#8220;bad guy&#8221; because you didn&#8217;t help them. That&#8217;s unfortunately, the cost of setting boundaries. You have to learn to undo the reputation that got you where you are.</p><p>I don&#8217;t know about you, but that&#8217;s the hardest part for me. Even though fire-fighting is stressful, there&#8217;s a camaraderie to it. You have people around you trying to solve the same problem and when you do, you feel like a hero.</p><p>That elated sense of accomplishment when you fixed something under pressure or delivered when the timeline was ridiculous is unparalleled.</p><p>When you&#8217;re building things that prevent the next ten fires, nobody even knows it happened. The system rewards the dramatic rescue, not the prevention. And unfortunately, making people more efficient is less dramatic than rescuing them from projects.</p><h2>Balancing Tools and Projects</h2><p>I&#8217;ve definitely not figured this out. I still have weeks where every day is reactive. But I am trying to get better at protecting that all too important tool-building time.</p><p>Also, I have noticed that if you&#8217;re only valuable because you fix things, that&#8217;s a trap. I mean, my value isn&#8217;t speed or being &#8220;on-call&#8221; all the time. It should be my expertise and that means I should be working on things that bring the most value.</p><p>That could be fire-fighting if the project was really high profile and valuable. Or it could be tool-building because there is something vital that needs to be built.</p><p>The point here is that if I see something that I can build that prevents fires, I should do that, instead of wanting to work on projects all the time. Because it&#8217;s all too easy to get swept up by the urgency of projects.</p><p>The art is in balancing the billable and urgent projects with building things that actually make a long term difference.</p><div><hr></div><p>If you&#8217;ve been in the same spot as me, I hope this article helped you think through things a bit more and if you&#8217;ve been wanting to build something for a while now but are stuck in fire-fighting mode, reach out by either replying or emailing me at <a href="mailto:braden@bradenkoh.com.">braden@bradenkoh.com.</a> Maybe we&#8217;ll find something awesome to work on together.</p><p>As always, </p><p>Thanks for reading.</p><p>~Braden </p>]]></content:encoded></item><item><title><![CDATA[When Did Your Best Tool Become a Liability?]]></title><description><![CDATA[Don't wait until it's too late.]]></description><link>https://www.codedshapes.com/p/does-your-tool-still-fit-the-way</link><guid isPermaLink="false">https://www.codedshapes.com/p/does-your-tool-still-fit-the-way</guid><dc:creator><![CDATA[Braden Koh]]></dc:creator><pubDate>Thu, 18 Jun 2026 00:01:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1pHx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_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_!1pHx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1pHx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1pHx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56693c59-2688-4c5c-8284-eb38b5ca045a_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;:2500189,&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/201821978?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_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_!1pHx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 424w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 848w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_3300x1858.png 1272w, https://substackcdn.com/image/fetch/$s_!1pHx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56693c59-2688-4c5c-8284-eb38b5ca045a_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 aria-hidden="true" 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><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 ten years ago, a steel roof panel fabrication company built an internal tool that changed how they worked. With some inputs and a button, the tool turned an engineer-designed Excel spreadsheet into a 3D model and drawings. It became an integral part of their client delivery process.</p><p>For what they needed at the time, it was perfect. They delivered faster and more consistently than they ever had before.</p><p>But over the decade, things changed. The company grew and started taking on more custom projects from clients. They expanded from one product line to five. They are now also looking to migrate to Tekla Structures, a more modern program than what they were using. And all this while, there were no updates to the tool. It still used the same templates and workflows from a decade ago.</p><p>I was brought in because they wanted to explore migrating their tool to Tekla. I thought it was going to be straight forward, after all, most companies don&#8217;t have such a strong workflow. But what I found instead, was a tool that was poorly designed, full of hard-coded variables and worst of all deeply entwined with old processes. The kind of thing where changing one thing breaks everything else, a glass cannon, if you will.</p><p>The tool also only worked for one out of five product lines. The templates that once standardized their process now blocked the custom work their clients were asking for. And moving to Tekla meant an overhaul of 15 years of accumulated process decisions and assets.</p><p>Needless to say, the quote was expensive. And sadly but unsurprisingly, they didn&#8217;t accept it.</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>How tools drift</h2><p>So this is actually one of the most common ways internal tools become a problem. The tool was right when it was built. It met the needs of the entire business. In fact, it even enhanced their delivery.</p><p>But time doesn&#8217;t stop and neither do the needs of the business. As they grew, <a href="https://www.codedshapes.com/p/the-cost-of-inheriting-other-peoples?r=yraxj">the people that worked on the tool left</a> and it was never maintained nor updated. <a href="https://www.codedshapes.com/p/what-happens-when-the-person-who">When that happens, the context for why the tool was built the way it was goes with them.</a> The tool bifurcated from what the business needed it to do. Yet, they kept using it because it was easier to workaround it than to update it, at least, until now.</p><p>In my experience, there are three ways a tool falls out of alignment with the people using it.</p><h4><strong>The process changed but the tool didn&#8217;t.</strong></h4><p>The team refines how they work. They adopt new standards, restructure how they deliver projects, maybe even expand into a new line of business. But the tool stays locked in time.</p><p>Sometimes it&#8217;s because nobody budgeted for updates or maintenance. But most of the time it&#8217;s the sunk cost fallacy, companies think once they invested in building the tool, they should only reap the rewards. That they&#8217;ve invested three months into development, so why would they keep putting money into it?</p><h4><strong>Success expanded the scope.</strong></h4><p>Counterintuitively, sometimes success is <em>why</em> internal tools fail. I&#8217;ve seen cases where the first release was so well-received that requests flooded in. And instead of redesigning and integrating those properly, new features just got tacked on. And on. And on. Until updating it means untangling years of organic growth that was never structured to scale.</p><p>The tool kept taking on more responsibility without the proper foundations to support it. <a href="https://www.codedshapes.com/p/what-do-you-actually-deliver?r=yraxj">Making a tool for one person and making a tool for a company are very different endeavors.</a> So, it becomes more brittle as time passes, <a href="https://www.codedshapes.com/p/your-script-doesnt-need-to-work-on">making both the usage and maintenance of the tool progressively harder.</a></p><h4><strong>The team outgrew it.</strong></h4><p>Tools work best when there&#8217;s a solid process behind them. The fabrication company built templates for their tool, which is smart because the more standardized the process, the easier it is to automate on top of it. That meant for repeat clients, they could save about 50% of turnaround time.</p><p>But adding templates also meant tightly coupling the tool to their old program. And as the company took on more custom work and expanded their product lines, they outgrew those templates. Every time they tried to update them, something broke. So they stopped trying and just worked around it instead.</p><p>Now, the templates that once sped up their delivery, now hindered the work they actually needed to do. The tool went from working <em>for</em> them to working <em>against</em> them.</p><div class="pullquote"><p>Subscribe to CodedShapes and I&#8217;ll send you my free guide on how to actually apply technology 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>Why it&#8217;s hard to notice</h2><p>These three things happen when nobody&#8217;s monitoring the alignment between the tool and the company. It also doesn&#8217;t help that the tool doesn&#8217;t give you any indication of misalignment.</p><p>The tool technically still works and since it&#8217;s too fragile to update, people just work around it. They add a manual workaround here, a workaround there. Each one doesn&#8217;t feel like a big deal. But, over time, these workarounds then become the <em>default mode of operating</em>.</p><p>The fabrication company only found out about this misalignment when market pressure forced them to move. By then, fixing it was expensive and an operational nightmare, when it could have been a series of small, incremental updates spread over years.</p><h2>Functional vs alignment</h2><p>So, it comes down to what I call functional vs alignment.</p><p>Most tools <em>work</em>, they are functional. You put in the inputs and it spits out a result. It does exactly what it was designed to do.</p><p>But that&#8217;s the baseline, it&#8217;s what any tool should do at its minimum. The better question is whether the tool is <em>aligned</em> to the way you work. As in, when you have new processes, does the tool <em>work the way we want it to</em>?</p><p>&#8220;Functional&#8221; is a technical question. &#8220;Alignment&#8221; is then a people and process question. It&#8217;s about whether the tool matches the way the team actually operates <em>right now</em>.</p><p>A tool can pass every technical check and still be <a href="https://www.codedshapes.com/p/this-is-why-they-dont-trust-us">the wrong tool for the job</a>. And depending on how far the tool has drifted from the current process, it becomes a burden rather than an advantage.</p><p>That&#8217;s much harder to find because you can&#8217;t test for it. There&#8217;s no error message that says &#8220;this tool no longer fits your process.&#8221; And in fact, what people don&#8217;t always realize is that <a href="https://www.codedshapes.com/p/there-is-no-promised-land?r=yraxj">the more you build now, the more you have to maintain</a>.</p><p>Misalignment is dangerous precisely because it&#8217;s not visible until it&#8217;s already expensive to fix.</p><h2>What actually fixes this</h2><p>The instinct is usually to rebuild. A clean slate with new requirements and fresh energy. That&#8217;s what the fabrication company wanted. They didn&#8217;t want to deal with the complexity of an old, poorly designed tool. So the idea, was to migrate what made the old tool work into a new one.</p><p>Which for them, even though they declined my offer, is the best move. Because the old tool has diverged too far from the original design. But if they simply rebuilt the tool and not maintained it, they would be repeating this cycle over again.</p><p>The good news, is that there are two things anyone can do to break the cycle. They are simple but like most things, they aren&#8217;t easy.</p><h4><strong>Check the fit regularly.</strong></h4><p>This is the biggest lever you have. Any time an existing tool causes friction or you find yourself making a workaround, ask: <em>does this tool still fit our process</em>?</p><p>This single question combined with having regular review sessions will ensure that the tool is aligned with how any business is moving. If there&#8217;s friction between the tool and the <em>way you&#8217;re working</em>, it&#8217;s a signal that the tool might be out of date and it&#8217;s time to put in a fix while it&#8217;s small.</p><p>And if you can document everything diligently, you end up with a history of how both the tool and your process have evolved, which is incredibly useful the next time someone asks &#8220;why does it work this way?&#8221;</p><h4><strong>Make room for small changes.</strong></h4><p>If the person closest to the tool can see the drift but can&#8217;t do anything about it, you&#8217;re just watching the problem grow. It doesn&#8217;t always mean rebuilding. Sometimes people just need the room to make incremental changes without it turning into a budgetary affair.</p><p>I have seen this time and time again when drafters make manual workarounds for internal Revit plugins. Whether the plugin really should just be updated but the company didn&#8217;t want to invest in the plugins anymore until it was causing them too much trouble.</p><p>If you budget for maintenance from the beginning, smaller adjustments made earlier will cost a fraction of what they cost later. Let the problems accumulate and the effort / time it takes to fix them will compound.</p><h2>When the tool has already drifted too far</h2><p>Okay, what if you&#8217;re already in trouble? The workarounds have calcified and incremental updates just makes things worse.</p><p>Then, unfortunately, you do have to rip off the band-aid and rebuild. But this time you have the chance to do it right, with proper design, documentation, and communication. You give the new tool a better chance of surviving longer than the old one.</p><p>It&#8217;s expensive but there are some suggestions on how to ease the cost of it. Like building features incrementally or rolling out new updates over a period of time rather than a hard switch between the old and new.</p><h2>The hard part was never building it</h2><p>Building the right tool is a moment in time. The requirements are clear, there&#8217;s energy and momentum. People are excited, you have AI, and it can even be fun.</p><p>The hard part is keeping it the right tool as time goes on. I keep coming back to maintenance because I&#8217;ve seen tools that had good intentions and design decay from the harsh reality of time and changing business needs. If a tool is critical to your business, it should evolve with the business. Not stop the day it launched.</p><p>And I get why companies don&#8217;t prioritize this. Tool maintenance isn&#8217;t a full time job, it needs attention regularly but not constantly. The problem is that hiring someone just for that is hard to justify. Which is why the default is to only work on it during their &#8220;free time&#8221;. Maintenance, as important as it is, gets squeezed in-between projects.</p><p>That&#8217;s a lot of what I do. Yes, I build tools but I also stay close to the work after we&#8217;re done. After we build something, we have what I call a &#8220;Hypercare phase&#8221;. A dedicated time each month specifically for the kind of alignment work that we&#8217;ve seen here. It&#8217;s not squeezed into free time nor is it only when something breaking, it&#8217;s built into the engagement from the start.</p><p>If you&#8217;ve got a tool that still works but doesn&#8217;t quite fit anymore, or if you&#8217;re about to build something, I&#8217;d love to hear about it. Simply reply to this email or use the button below to book a call.</p><div class="pullquote"><p>If you&#8217;re thinking about bringing computational design into a project, I&#8217;m happy to talk through what you&#8217;re working on. </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></p><p>Thanks for reading,</p><p>Braden</p>]]></content:encoded></item></channel></rss>