<?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[Noah ]]></title><description><![CDATA[Industrial AI, fleet intelligence, and the messy reality of making ML work on real-world hardware. Notes from a systems engineer in cleantech ]]></description><link>https://www.noahtucker.ai</link><image><url>https://substackcdn.com/image/fetch/$s_!JhjZ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0b54c9-c5a9-47a2-a504-5481205942bb_1280x1280.png</url><title>Noah </title><link>https://www.noahtucker.ai</link></image><generator>Substack</generator><lastBuildDate>Fri, 23 Oct 2026 19:04:10 GMT</lastBuildDate><atom:link href="https://www.noahtucker.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Noah Tucker]]></copyright><language><![CDATA[en-gb]]></language><webMaster><![CDATA[noahtuckernt@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[noahtuckernt@substack.com]]></itunes:email><itunes:name><![CDATA[Noah Tucker]]></itunes:name></itunes:owner><itunes:author><![CDATA[Noah Tucker]]></itunes:author><googleplay:owner><![CDATA[noahtuckernt@substack.com]]></googleplay:owner><googleplay:email><![CDATA[noahtuckernt@substack.com]]></googleplay:email><googleplay:author><![CDATA[Noah Tucker]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[When AI makes you the bottleneck]]></title><description><![CDATA[Controlling all of your AI agents without losing your sanity]]></description><link>https://www.noahtucker.ai/p/when-ai-makes-you-the-bottleneck</link><guid isPermaLink="false">https://www.noahtucker.ai/p/when-ai-makes-you-the-bottleneck</guid><pubDate>Wed, 16 Sep 2026 18:45:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aM9G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.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_!aM9G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aM9G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aM9G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:591144,&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.noahtucker.ai/i/214063737?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.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_!aM9G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!aM9G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153462d6-1aa2-46c4-9cf3-f1bf667785fd_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Ping. Ping. Ping. I would spend all day tab hopping between a dozen Claude and ChatGPT sessions. It felt like babysitting a group of needy kids. Jumping into one tab, trying to remember what I was working on, struggling to context switch, and then having to provide new input to each model. Tabs would keep pinging up requiring my attention and it felt like an increasingly difficult game of whackamole.</p><p>For the first few weeks of this, I felt a strange mix of awe and burnout. Awe at the volume of work I was achieving. Burnout at the sheer pace and mental taxation. It came down to how much information my brain was being forced to process. Usually the execution of a task (be it coding or otherwise) allowed enough time to mentally process the question of &#8220;What next?&#8221;. Not so anymore. The blocker was now my ability to keep up with the models!</p><p>For the first six months of building with AI, we were firmly in the &#8220;token maxing&#8221; era. Like I used to say to my team: &#8220;every single task you are about to do, ask yourself: can AI do this for me?&#8221; Of course, for some tasks there will be no real net gain; it&#8217;s faster/easier/better to just do it yourself. Or so it may seem. But the mere act of considering opens your eyes to the possibilities. And seeing more of the world unlocks more options, more skill and more leverage.</p><p>But eventually the problem flipped. The challenge was no longer getting the models to do enough. It was keeping up with them.</p><h3><strong><span>From coder to manager</span></strong></h3><p>Over the past year, I&#8217;ve had to get skilled at building software with AI agents. I didn&#8217;t originally train as a software engineer, and at first, I thought this would be a hindrance, but the more I build the more I realise that &#8216;systems engineering&#8217; is the right lens here too. Everything is systems.</p><p>I&#8217;m lucky, really - coding is probably the highest level of &#8216;permissionless leverage&#8217; (borrowing a concept from Naval), and until recently I used to wish I had studied software instead of engineering, but now I know I made the right choice. My systems experience gives me the ability to consider different lenses, different layers of abstraction. I think this is really the skill of a systems thinker - to be able to transcend levels of detail and only get into the weeds when required.</p><p>People say code has become commoditised. And I agree to some extent - boilerplate code has. But not architecture, taste, or product.</p><p>I liken building with AI to people management. You are still held responsible for the output of your team. And just like your confidence in their ability, independence, and output is built over time, such is the case with your AI team.</p><p>Your job is fundamentally this: give your AI team direction, and enough rope to manoeuvre, err and self-correct, and learn, but not enough that they can actually hang themselves and cause major disruption to the project. And we already have an excellent framework for delivering this kind of feedback: management! So praise, castigate, encourage, dissuade. Regular feedback (often accompanied by &#8220;remember this&#8221;, or &#8220;and update CLAUDE.md&#8221; to ensure persistence) is key.</p><p>Training your team is just as important with AI as it is with people. Going back to the classical &#8220;intern with a PhD&#8221; analogy - you wouldn&#8217;t expect your intern to understand your way of working on day one. Or, for that matter, <em><strong>why</strong></em> you are trying to achieve what you are.</p><p>The <em>why</em> is super important. Give someone a specific instruction and they will probably be able to execute it, but the moment they hit an unexpected snag, they will have to come back for more instructions. Tell someone <em>why</em>, and they have a mandate. A higher-level reason from which they can deduce the <em>what</em>, and adapt to changing circumstances.</p><p>Now of course there are limits here, and it&#8217;s important to control the level of autonomy (not giving them too much rope!).</p><h3><strong><span>Autonomy requires a feedback loop</span></strong></h3><p>After about GPT-5.4, I found the models were good enough to write code by themselves that I didn&#8217;t necessarily need to review (clearly this depends on the maturity of the codebase being worked on - I was building a POC here).</p><p>And to enable this, I had already worked out that they needed a concrete feedback loop to be able to validate their output. This can be tests (unit, contract, E2E), or even browser automation with frameworks like Playwright, which the agent can use to control a browser and actually click through the different UI elements (pretty astonishing the first time you see it).</p><p>This was not merely trusting the model more. It was giving it a way to work out for itself when it was wrong, and to self-correct. So, I was trusting the <em>system</em> itself.</p><p>I&#8217;m a big believer in learning compounding from different domains. Systems engineering had already taught me that autonomy and validation go hand in hand. If you want something to operate independently, you need to give it an environment in which it can observe the consequences of its actions and catch its own failures.</p><h3><strong><span>The attention problem</span></strong></h3><p>But despite this invaluable feedback path, I still found myself getting really mentally worn out.</p><p>To this end I&#8217;ve been working on ways to remove myself as a blocker.</p><p>One good way I&#8217;ve found is by using <strong>proposals</strong>. These are similar to the kinds of plans that used to be necessary in order to get good model results for long-running tasks. The difference is that proposals are HTML documents, which means they can be much more graphical and intelligible, and can be as dynamic / interactive as needed.</p><p>Proposals serve a dual purpose: both as an agreed set of objectives and plan for the models (which they can track implementation against), but also crucially as a human-focussed idea aimed at clarifying human understanding.</p><p>I created a skill which knows how I prefer these proposals constructed and formatted (executive summary in a few sentences at the top, section 1 is the idea, section 2 is the evidence, section 3 is the implementation plan and section 4 is the actual progress ledger). I like to work on a proposal as a co-author with the model until I&#8217;m happy with it, then set it to a status of &#8216;accepted&#8217; (from draft). It can then be queued for implementation.</p><p>This idea was inspired by Jeff Bezos&#8217;s description of Amazon&#8217;s six-page memo culture: before discussion begins, meeting participants spend the start of the meeting reading the memo in silence. The LLM&#8217;s job is to make the proposal easily digestible so that people don&#8217;t waste valuable brainpower on deciphering.</p><p>The benefit of working this way is asynchronicity.</p><p>Because my proposal skill is constructed to split the work into phases and tasks within phases, the effort of orchestration and planning is handed over to the model. Phase 0 always involves a front-loaded examination of the codebase to prove the viability of the proposal and surface any questions at the start. The AI is instructed that it should resolve any ambiguity at the start, and that it&#8217;s not allowed to ask questions (unless critical) at later stages.</p><p>This way, I can spend five minutes answering the front-loaded questions (always with a multiple-choice tool), and the agent can then go about implementing the rest independently. This could mean 2-3 hours of uninterrupted work, allowing me to focus on other things.</p><p>The aim is to consolidate the points where my human judgment is needed, rather than allowing them to arrive unpredictably throughout execution.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L-80!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L-80!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!L-80!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!L-80!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!L-80!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L-80!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:575704,&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.noahtucker.ai/i/214063737?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.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_!L-80!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!L-80!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!L-80!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!L-80!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2522b8-86a8-45a3-82ad-1848bb39bddc_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h3><strong><span>Delegating supervision itself</span></strong></h3><p>What makes this even more powerful is my &#8216;orchestrate&#8217; plugin. I built this to hand over a few processes to the AI that were causing me unnecessary overhead.</p><p>Firstly, the choice of model. My skill defines the capability needed for each role, then maps an appropriate model to it. As at the time of writing, I&#8217;m finding best results with Sonnet Max thinking for research/low-level implementation, Opus High for orchestration, and Fable Medium for adversarial review - more on that in a second.</p><p>The second thing is dynamic team structure. This is the &#8216;agent graphs&#8217; hype that people have been talking about lately, and it is incredibly powerful. Imagine being able to spin up the ideal team for any task at hand. For a particular task, you might want a project manager, two junior software engineers, one senior, one lead, and one quality analyst. That is the kind of organisation you can represent and execute as a dynamically constructed agent graph.</p><p>My &#8216;orchestrate&#8217; skill spins up a team structure where the junior engineer (a cheap model) does the groundwork and first draft. Then the orchestrator (a medium model) checks the work and can discuss with them and change their direction or provide feedback as necessary. Finally, once a solution is ready to be implemented, it gets &#8216;signed off&#8217; by the lead engineer (an expensive model), who does an adversarial review: purposefully attacking the solution with the aim of trying to expose flaws in it, just like an adversary.</p><p>This also creates a tiered escalation path. The first agent should try to resolve problems itself; if it can&#8217;t, or if validation or review fails, the issue moves up to a stronger model. Only genuinely consequential ambiguity should make it all the way back to me. Human attention sits at the top of the escalation tree, not in every loop.</p><p>The clever thing about this is that the orchestrator can decide how many of each role is required, what they should work on in parallel, and how many review loops to facilitate before acceptance.</p><p>You have now taken yourself out of the low-level work, and used the power of different models, with different prompts, to reduce the chance that one model&#8217;s blind spots pass straight through the system unchecked.</p><p>So why not just make the lead engineer write all the code? For the same reason Google isn&#8217;t just made up of staff engineers. Cost!</p><p>One even more powerful trick is to use a completely different model provider for the adversarial review. These days I use Codex Sol, because the models can talk to each other by invoking the CLI tool. Using a different model family and provider can further reduce exposure to correlated failure modes (although they will inevitably share some training data and failure modes).</p><p>At this point I had delegated not just the implementation, but increasingly the supervision of the implementation too. Now I had unlocked hours of uninterrupted running, including overnight, with my team of Claudes working autonomously while I slept.</p><h3><strong><span>The organisation matters more than the individual model</span></strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TCYP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TCYP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TCYP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:512727,&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.noahtucker.ai/i/214063737?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.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_!TCYP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!TCYP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef4638b2-eb43-48d7-8fa7-1a8d2bda5486_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 is also a clear lesson on vendor lock-in.</p><p>Because these models evolve at such an unprecedented pace, it&#8217;s critical to keep trying and testing new models, model families, effort levels and prompts. By having the team structure and cross-vendor adversarial review described above, you harden your position and reduce exposure to the fragility that comes when a model&#8217;s quality suddenly degrades.</p><p>The important thing becomes the role the system needs, rather than the specific model currently filling it. Thus, the model becomes an interchangeable component, while the organisation and the harness around it become the durable assets.</p><p>The progression for me has therefore been less about getting better at prompting, and more about repeatedly asking how I can remove myself from the next loop.</p><p>First, the models could write the code. Then feedback loops allowed them to validate it. Proposals allowed ambiguity and human judgment to be front-loaded. Orchestration allowed the models to start supervising and reviewing one another.</p><p>The constraint has changed. When AI cognition and execution become abundant, the scarce resource becomes human attention.</p><p>That means the core question is no longer simply how much work I can get AI to do. It&#8217;s how much <em><strong>useful</strong></em> work the whole system can produce, for each unit of attention I have to give it.</p>]]></content:encoded></item><item><title><![CDATA[I let an AI talk to my car]]></title><description><![CDATA[Building an OBD-II bridge so a model could read my car directly - and what it taught me about where the intelligence belongs.]]></description><link>https://www.noahtucker.ai/p/i-let-an-ai-talk-to-my-car</link><guid isPermaLink="false">https://www.noahtucker.ai/p/i-let-an-ai-talk-to-my-car</guid><dc:creator><![CDATA[Noah Tucker]]></dc:creator><pubDate>Wed, 03 Jun 2026 21:18:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c0MI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.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_!c0MI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c0MI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c0MI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5455,&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.noahtucker.ai/i/200505522?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.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_!c0MI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!c0MI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f53d740-136a-48dd-b1ed-d540494786db_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://github.com/noahtuckernt999/obd-ii-mcp">OBDII-MCP on Github</a></p><p>Recently, I replaced my car&#8217;s battery on a hunch. It felt like the car was struggling to turn over on cold starts, but there was no clear sign because there were no fault codes. I consulted AI and it came to the same conclusion. But this made me think: why am I in the diagnostic loop here, providing indirect, second-hand evidence to the AI? Why can&#8217;t the model just talk directly to the car, read the actual voltage data and perform any required tests?</p><p>Unfortunately, I didn&#8217;t have the tech for that. So I decided to build it.</p><p>I decided to build an MCP server that would bridge the gap between the model and the hardware. I started with a cheap Bluetooth OBDII dongle (OBDII is the automotive standard which defines diagnostic services and modes), which provided the bottom of the stack. This would allow serial Bluetooth communication between my laptop and the vehicle, and would implement the low-level CAN framing and request/response for me out of the box. This in turn meant that I wouldn&#8217;t need to implement a driver; the ELM327 Bluetooth dongle is the driver, providing the interface with a known and documented command set. I did, however, notice at this stage that these chips have a somewhat limited bandwidth - which would limit how many parameters (and at what frequency) I would be able to stream at the same time, and would shape the architecture.</p><p>On top of the ELM327 transport layer, I built out a PID (parameter IDs, such as motor RPM, or battery voltage) querying layer, used by OBDII. I then built a service layer on top of this that would expose tools to the MCP server.  &#8220;python-OBD&#8221; would have handled most of the bottom half, but I&#8217;d already written my own by the time I properly looked at it, and since mine worked and I understood it end to end, I kept it. (It&#8217;s also GPL, and I wanted this MIT-licensed).</p><p>So the architecture stack looked like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K7S_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K7S_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 424w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 848w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K7S_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png" width="1456" height="1156" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1156,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111610,&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.noahtucker.ai/i/200505522?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.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_!K7S_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 424w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 848w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!K7S_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666996a5-1408-4419-afe8-1f0bd16a7787_2040x1620.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>While building the MCP tools I came to the realisation that there would be no need to implement diagnostic taste or logic here. I watched the model chain PID reads and reason about them without any hardcoded logic from me. Instead of building something like &#8220;check_charging_system()&#8221;, I designed purposefully thin primitives such as read a PID, list supported PIDs, read DTCs, open a stream. I had answered my own question: the intelligence no longer belongs in the application, but belongs in the model. I just needed a safe toolset for the model, which I provided by building exclusively read-only commands into the PID layer.</p><p>In order to make the MCP server testable (without relying on having the hardware in the loop), I built a light Streamlit application which enabled streaming selected PIDs, and built a way to record the stream to a JSON file, then to replay from the stream. I used the streaming feature to visualise the battery voltage, and then applied an electrical load (winding down all four windows at once). I proved the end-to-end integration by seeing the battery voltage dip in the graph at the same time:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f1bE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f1bE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 424w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 848w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 1272w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!f1bE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png" width="1343" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:1343,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76031,&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.noahtucker.ai/i/200505522?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.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_!f1bE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 424w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 848w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 1272w, https://substackcdn.com/image/fetch/$s_!f1bE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158900d6-883a-45a0-ae5f-b0e2729befec_1343x590.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 also recorded a session driving around the block, to prove the ability to record and replay the diagnostic session - an invaluable feature for diagnosing actual dynamic driving data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t4kX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t4kX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 424w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 848w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 1272w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!t4kX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png" width="1010" height="454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:1010,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98446,&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.noahtucker.ai/i/200505522?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4adf1aa-600f-4502-ae0e-33cdd761f756_1024x458.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_!t4kX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 424w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 848w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 1272w, https://substackcdn.com/image/fetch/$s_!t4kX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fceae9a2f-845c-467e-86e9-3809ccaabccd_1010x454.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At this point the project had crossed an important threshold: the AI was no longer just helping me reason about the car from photos and descriptions. It had a structured, read-only, interface into the vehicle itself.</p><p>So now I had something that worked well for my specific car, and for the default list of PIDs that I had pulled from online. But to make this project useful for other car models and manufacturers, I thought it would be useful to implement a discovery functionality. Effectively I wanted the LLM to ask the car &#8220;which PIDs do you support?&#8221;. This would pair nicely with the general MCP design philosophy - allowing auto-discovery rather than hardcoding capability. OBDII already supports this with so called &#8220;Mode 01 PID discovery&#8221;. So I built support for this for both the MCP client and the Streamlit dashboard, enabling users to connect to the car, ask what PIDs are supported, and then select what they wanted to see from the dynamic list generated in the dashboard (or indeed the LLM could do this itself over MCP).</p><p>Clearly there are limitations to this approach - I won&#8217;t claim that this tool is the answer to all car troubleshooting: far from it. While working on this project I also had to replace the car&#8217;s rear windscreen wiper motor, and when doing so I needed to take physical voltage readings at different points in the wiring loom and feed these into the model. The car doesn&#8217;t expose this over OBD. Equally, performing a simple voltage under load test (especially without knowing the load current) doesn&#8217;t give you a complete battery health test. But had I had this tool I could certainly have made a much more informed decision, especially by doing a few variations of load tests (combined with AI&#8217;s ability to pull datasheets and infer specific load currents).</p><p>Reflecting on this build made it clear to me that the reasoning boundary has shifted, and will continue to do so. As AI models get more capable, what real value is there in hardcoding &#8220;diagnostic intelligence&#8221; into the application? The new approach should be to provide the model with the right tools and harnessing, and then to get out of its way.</p><p>I thought back to how early waves of frontier model releases killed early AI companies, which relied on products that were fundamentally little more than an AI wrapper. How should today&#8217;s applications be built to prevent them becoming obsolete in six months? One approach appears to be to build with the rate of change in mind, and to fully expect that most of the reasoning should be done in the LLM layer. Thus, if reasoning is no longer the competitive moat, then perhaps it is data, domain expertise, harnessing and tooling.</p><p><a href="https://github.com/noahtuckernt999/obd-ii-mcp">OBDII-MCP on Github</a></p>]]></content:encoded></item><item><title><![CDATA[Notes from five years of being outmatched]]></title><description><![CDATA[How being the least expert person in the room teaches you to compress]]></description><link>https://www.noahtucker.ai/p/notes-from-five-years-of-being-outmatched</link><guid isPermaLink="false">https://www.noahtucker.ai/p/notes-from-five-years-of-being-outmatched</guid><dc:creator><![CDATA[Noah Tucker]]></dc:creator><pubDate>Sat, 16 May 2026 14:43:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u7_3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.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_!u7_3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u7_3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u7_3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1057435,&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.noahtucker.ai/i/198004827?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.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_!u7_3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!u7_3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03abaa46-1872-4319-9bbd-f440d8ccef3f_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 corner problem. &#8220;What if we moved the gusset by 5mm towards the vertical member?&#8221; By this point I was struggling to keep up with visualising the complex 3D geometry in my head, and it took me a good 30 seconds to remember what a gusset was again&#8230; and suddenly the conversation had moved on and someone else was offering technical observations about why that particular solution wouldn&#8217;t work, receiving nods of understanding from the room. The issue was that I was only a few months into real engineering, and despite being the work package manager for the battery pack we were discussing, I wasn&#8217;t fluent enough in the technical concepts to contribute much of substance. I kept my mouth shut.</p><p>Over the past five years of my career, I&#8217;ve often been in rooms where I&#8217;ve been outmatched. It&#8217;s become clear to me that fluency - the ability to use the jargon - and deep understanding are not the same thing. Every time I thought I had a rock-solid mental model and could speak the jargon, some new concept would present itself that everyone else was seemingly already familiar with, and which meant little to me. This, as I have come to appreciate, is what it costs to have responsibility beyond your experience, alongside genuine experts. It&#8217;s how I&#8217;ve spent the last five years at Sunswap - the cleantech start-up I joined as one of the first employees - and it&#8217;s how I&#8217;ve developed the ability to learn and compress fast.</p><p>Being outmatched isn&#8217;t an overstatement. I&#8217;ve worked alongside engineers with decades more experience than me, and it&#8217;s a specific, daily, uncomfortable cognitive experience. A feeling of not being able to keep up, processing slower than everyone else, and often slight embarrassment at stalling the progress of discussion. And yet, as I&#8217;ve progressed in my career, I&#8217;ve come to a crucial realisation: this is exactly the room I want to be in - the one in which I&#8217;m outmatched. </p><p>That doesn&#8217;t necessarily mean being outmatched on every front. I&#8217;m a jack of all trades, master of some - but in the domain at hand, I&#8217;m outmatched. My thesis is simple: there is no greater motivational driver for learning than imposter syndrome. It&#8217;s a quality I see in all those I respect most: only those who are blind to their true ability have the complete confidence to never self-assess.</p><p>My solution: <em>learn fast</em>. Learning the language of the domain came first. In school, I would roll my eyes at having to rote learn terminology. There were more interesting things to be getting on with, but perhaps I wasn&#8217;t fully appreciating the power of compression (forgivable, in fairness, for a 14-year-old). Now that I work in AI there&#8217;s an obvious parallel: context window optimisation. Just like LLMs - which can only process a fixed number of tokens at once, with quality degrading as the context grows - people can only process so much information in one chunk. Being able to use precise and domain-specific language is effectively a context compression hack: the information conveyed is succinct and specific enough that the meaning carries through with very low cognitive load. Naming a concept allows you to refer back to it with ease, without convoluted explanations. I remember always being struck by one particular colleague who would focus hard on picking the right words, so much so that he actually spoke quite slowly. At the time I thought this was over the top, but I later came to realise that this is evidence of an incredibly valuable and rare skill: the art of concept compression in real time, and the ability to distil meaning into its purest form.</p><p>Another instrument is a <strong>mental model</strong>. Take the example of a &#8220;sacrificial element&#8221; - a purposefully weak link in a chain that allows you to control which section will fail first. We used this in the battery pack design with our fusing architecture. We knew the sacrificial fuse would fail first in an electrical fault, so we deliberately located it outside the main pack area, allowing the pack to stay serviceable without invasive repairs. By labelling the concept in two words, everyone conjures up the appropriate mental model, which means it occupies the minimal amount of &#8220;context tokens&#8221; possible and enables faster discussion. Or (to appropriately compress the idea): compression.</p><p>But labels only work if there&#8217;s something real underneath them. Mental models have to be discovered first, then labelled - not the other way round. They have to be earned, like achievements in a video game. A few years ago, having discovered Charlie Munger (who popularised the concept of mental models) and Farnam Street (an online community dedicated to the subject), I attempted to create a giant poster of the most common mental models, hung it on my staircase, and tried to memorise it - an effort that quickly proved unsuccessful. Mental models are like a one-way function: you can easily calculate the output from the input, but not vice versa. It&#8217;s the same reason why book summaries don&#8217;t work long term. Your brain is effective at compressing concepts, but only once the underlying understanding is there. Without the work, the label has nothing underneath to attach itself to. However, I&#8217;ve found mental models to compound and pop up across domains, which is what makes them so powerful.</p><p>Beyond language and models, there&#8217;s <strong>first-principles thinking</strong>. A truly deep understanding of the domain space. Things like: what really <em>is</em> voltage? Every engineer will claim to understand voltage. Few can explain what physically causes it: an imbalance of charge at the particle level. My cheat code for first-principles thinking has been YouTube. Channels like 3Blue1Brown, AlphaPhoenix and Ben Eater have been invaluable in refining my models over the years. The videos worth watching I watch three or four times. Now I share them with my team. First-principles thinking is compression at the foundation: knowing what a concept physically is, so everything above it can be rebuilt. After all, if you can&#8217;t explain it at a whiteboard, do you really understand it?</p><p>The good news I&#8217;ve found is that compression compounds. I first noticed this two years in. By year three, after a concerted effort to deepen my electrical knowledge, it took me by surprise how fast new domains were becoming accessible. Not only are concepts transferable across domains, but more deeply, the framework for operating in ambiguity and getting up to speed quickly becomes a powerful weapon. Over the past couple of years I&#8217;ve found the same with AI. Ultimately, everything is systems. The skill of moving fluidly between levels of model complexity transfers everywhere. Now I use AI the same way, as a tutor for whatever domain I&#8217;m currently outmatched in. The compression habit just found a new instrument.</p><p>So being outmatched is the formation I&#8217;d recommend, if you can tolerate the discomfort. Studying compression won&#8217;t make you a compressor. Being in a room where you are outmatched will. This is the signal I look for now - if I&#8217;m not outmatched, I&#8217;m not at the limit, and there&#8217;s no room to grow. Every new expert colleague who joins Sunswap is an opportunity to be outmatched, and to learn from the best. Compression compounds.</p>]]></content:encoded></item></channel></rss>