﻿<?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[General Robots]]></title><description><![CDATA[A series about making a general purpose robot company]]></description><link>https://generalrobots.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!iYMS!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98ea4c9-b240-41a1-a7b7-89cd09813c02_512x512.png</url><title>General Robots</title><link>https://generalrobots.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 20 Jun 2026 19:41:20 GMT</lastBuildDate><atom:link href="https://generalrobots.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Benjie Holson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[generalrobots@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[generalrobots@substack.com]]></itunes:email><itunes:name><![CDATA[Benjie Holson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Benjie Holson]]></itunes:author><googleplay:owner><![CDATA[generalrobots@substack.com]]></googleplay:owner><googleplay:email><![CDATA[generalrobots@substack.com]]></googleplay:email><googleplay:author><![CDATA[Benjie Holson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[RobotEra Has Two More Robot Olympic Wins!]]></title><description><![CDATA[RobotEra has two more Olympic Medals. This time orange peeling (which PI accomplished but needed an external tool, which disqualified them) and unlocking a padlock 25% faster than PI&#8217;s demonstration.]]></description><link>https://generalrobots.substack.com/p/robotera-has-two-more-robot-olympic</link><guid isPermaLink="false">https://generalrobots.substack.com/p/robotera-has-two-more-robot-olympic</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Mon, 06 Apr 2026 15:02:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DRF3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>RobotEra has two more <a href="https://generalrobots.substack.com/p/benjies-humanoid-olympic-games">Olympic Medals</a>. This time orange peeling (which PI accomplished but needed an external tool, which disqualified them) and unlocking a padlock<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> 25% faster than PI&#8217;s demonstration.</p><p>These (especially the key video) are approaching the speed and competence of a really skilled operator. We&#8217;re not quite as fast and dexterous as humans using their hands (a very very high bar) but it does seem like we&#8217;re approaching the speed and dexterity limits of these kinds of robots. I love what they are doing.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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">Thanks for reading General Robots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>There is a spectrum of &#8220;generalization purity&#8221; where on the one hand you have folks who only care about performance of the models on tasks and objects completely outside the training data. To them, doing single-task fine-tuning is<em> &#8220;fine&#8230; I guess,&#8221; </em> if only because zero shot performance is still so bad, and you still need to eval <em>something.</em> But it feels like cheating to them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DRF3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DRF3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DRF3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png" width="271" height="406.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:271,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DRF3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DRF3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba766ad-e40c-4975-b2ae-5e133959c24f_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">If I were to run my model on a robot with the same number of arms as my training data I may as well just hard code a demo</figcaption></figure></div><p>On the other hand you have folks, like RobotEra, who are interested in &#8220;given what we&#8217;ve got, how can we squeeze the absolute MAX performance out of it. Let&#8217;s use every trick we can to shave a few more milliseconds off our time and see what we can get. And what we get is pretty impressive.</p><p>I love both these groups.</p><p>Videos! In real time! With audio!</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;9f14bf2b-6d53-4b15-8490-4358a290b788&quot;,&quot;duration&quot;:null}"></div><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;21dfa9f3-a8c9-4ce6-ae00-f62b98acd716&quot;,&quot;duration&quot;:null}"></div><p></p><p>There are a few interesting details the team at RobotEra shared with me. One is that they had to shrink the fingers in order to stab the orange.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> I have to imagine that thinner fingers might help with the key task because you can see what you are doing. (Thinner fingers also helped a lot with their sock-inversion win because it is easier to cram smaller fingers into a sock.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> There is an interesting tradeoff here where thin pointy fingers are good for stabbing and precise work but worse for getting good leverage on things like big objects or tools. Humans, of course, have very adaptable hands that can do both.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T3za!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T3za!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T3za!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T3za!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T3za!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T3za!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png" width="420" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T3za!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T3za!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T3za!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T3za!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5fa54e2-0484-44df-965c-e27022fad943_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Nothing makes me feel more empathy for AI than trying to draw hands. (These illustrations are pencil-on-paper AI colorized).</figcaption></figure></div><p>The other thing they really focused on was speed. To get this fast they did some interesting things. First they recorded demonstrations and trained on 15Hz samples. Then, when testing it, their model produces 15Hz output but they play it back on fast-forward (1.3x speed: about 20Hz). It is literally like watching a youtube video at 1.3x: everything happens but faster. Presumably they turned this knob up and up until things just barely worked so that is in itself an interesting finding. They also shortened the execution horizon for each rollout from 20 samples to 15 samples (1.3 seconds -&gt; 0.75 seconds for those of you following at home). If you watch the lock video closely you can see the 0.75 second period as little hiccups in the motion.<br><br>I&#8217;m also just going to quote their email to me directly:</p><div><hr></div><p><em><strong>For Key Unlocking</strong></em></p><p><em>Since the robot lacks tactile feedback, it struggles to learn fine manipulation patterns directly from standard teleoperation. Inspired by experiments where grasp aperture increases under tactile deprivation, we <strong>increased motion redundancy for the left hand holding the lock</strong> &#8212; using a larger range of rotation and wider gripper opening &#8212; which greatly improved success rates.</em></p><p><em>For accurate key insertion, we <strong>slowed down the key-insertion phase during data collection</strong>, similar to how a person carefully aims at a keyhole. This gives the wrist camera higher visual resolution on the keyhole, allowing the model to predict smaller, more precise actions and significantly improve insertion success.</em></p><p><em><strong>For Orange Peeling</strong></em></p><p><em>A major challenge is handling various out-of-distribution (OOD) states.</em></p><ul><li><p><em>We collected <strong>recovery-focused data</strong> by continuing to demonstrate on partially peeled oranges after failed inference attempts, teaching the robot how to recover from mistakes.</em></p></li><li><p><em>We also added <strong>orange pose adjustment actions</strong>, so the robot can actively reposition the orange when it is in a hard-to-peel orientation.</em></p></li></ul><div><hr></div><p>A bunch of interesting things here about how folks are squeezing performance. If you have a black box that is data-in behavior-out how do you optimize? You optimize the data. This really feels like a black art, which is both neat and scary. Implied here is that the limit to speeding up replay was the actual key insertion which they compensated for by <em>demonstrating that part slowed down</em> so when they sped it up it was a more normal speed.</p><p>One of the tricks with talented human demonstrations is that they demonstrate how to do it when everything goes well but robots will always screw up and then have no idea what should happen when they screw up. The RobotEra team had to intentionally capture orange peeling data showing what to do if you are in a bad state (recover and reposition the orange).</p><p>Totally interesting stuff!</p><p>Thanks RobotEra for the submissions &amp; peek into your process!</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Unlocking a padlock isn't even one of my original tasks but it's a good one so we'll all pretend.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>It feels funny to disqualify PI for using a sharp tool but allow RobotEra for changing the fingers <em>into </em>a sharp tool, but PI got like a bajillion medals so hopefully they don&#8217;t begrudge this one.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>This is the kind of Robotics Professional Insider hot-take you subscribe to get.</p></div></div>]]></content:encoded></item><item><title><![CDATA[RobotEra Snatches Silver in Sock Inversion]]></title><description><![CDATA[New Silver Medal!]]></description><link>https://generalrobots.substack.com/p/robotera-snatches-silver-in-sock</link><guid isPermaLink="false">https://generalrobots.substack.com/p/robotera-snatches-silver-in-sock</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Fri, 13 Mar 2026 15:02:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/23a6c019-0d2c-4c42-a53d-b43136233c69_1224x636.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>New Silver Medal!</p><p>The <a href="https://generalrobots.substack.com/p/benjies-humanoid-olympic-games">Olympics rules</a> are if you can beat a winning time by at least 25% you win a medal. RobotEra from Beijing, China has beaten Physical Intelligence&#8217;s <a href="https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics">Sock Inversion time</a> by 30%.</p><p>I have always loved the phrase, &#8220;A Fast Robot is a Smart Robot&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. This is why sped-up videos are so common for demos: the state-of-the-art is kinda slow and slow doesn&#8217;t look smart. So as we get more and more capable I&#8217;m thrilled to celebrate places where we are getting faster and faster too. Big kudos to RobotEra for the unsped-up video.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f8d7cec8-e747-4e87-b9c5-7306c210672e&quot;,&quot;duration&quot;:null}"></div><p>RobotEra&#8217;s technique seems broadly similar to PI&#8217;s and even the number of demonstrations is pretty close (120 to PI&#8217;s 180) and they use the same strategy: use one hand to thread the sock onto a gripper, pinch the toe from the inside and pull it out inverting it.</p><p>The changes they needed to make it that much faster:</p><ol><li><p>Longer fingers. It takes them a lot less time to bunch the sock onto the gripper because they have to pack it less tight.</p></li><li><p>They increased their action frequency while reducing their execution horizon which lets them be more precise and reactive at speed.</p></li></ol><p>Let&#8217;s dig into what #2 means. Generally, the way that these action models work is that they produce some small path (maybe one second) of motion and they do this maybe 5 times a second. That means that usually the end of each path is never used: the new one has arrived and you cut over to 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_!EPQS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EPQS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EPQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:225538,&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://generalrobots.substack.com/i/190790605?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.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_!EPQS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!EPQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138ad547-1061-4b54-ae05-7faed58f8ee5_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">You can imagine one of the joints of your robot following the path along Chunk 1 until the vertical line where Chunk 2 appears, then you start following that path until Chunk 3 appears, etc.</figcaption></figure></div><p>The more often you ask your AI for a plan (bringing the vertical lines above closer together) the more reactive you are to things not quite going to plan. (Did the sock bunch in a way you weren&#8217;t expecting?) <br><br>Though of course as you do this faster and faster you have to make your model finish computing the next chunk faster and faster, which is hard. You can accomplish this (as I understand RobotEra did) by reducing how long into the future your model is predicting (shortening the length of each squiggle). This seems fine since you are going to ignore most of it anyway. We are cutting off some of the dotted-line part of each chunk. The tradeoff is you maybe get a little worse at long term motion planning because your model is no longer thinking so far ahead. But we see here that you can move faster and still be precise and reactive.</p><p>Well done RobotEra!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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">If you want more robot posts and videos you should&#8230;</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><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I believe it comes from Boston Dynamics originally and when I was at Google X I made posters of the slogan and taped them to walls without permission</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Benjie's Humanoid Olympics: Part II]]></title><description><![CDATA[I guess the first ones were too easy!]]></description><link>https://generalrobots.substack.com/p/benjies-humanoid-olympics-part-ii</link><guid isPermaLink="false">https://generalrobots.substack.com/p/benjies-humanoid-olympics-part-ii</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 27 Jan 2026 15:03:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Zv23!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Nearly all my initial challenges were completed in the first three months, which was about a year and three months faster than I expected. That&#8217;s is super exciting because it means that robotics is moving really fast, but it also means that we need harder challenges. And so it is time for me, once again, to don my silver suit and throw down a new gauntlet.</p><h1>Eggs:</h1><p>Eggs are delicious, ubiquitous and break dramatically when misused. I know eggs are famously expensive in recent memory, but isn&#8217;t that what venture money is for?</p><h4>Bronze: Catch a Thrown Egg</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;52e0bdb4-710f-4401-be73-a7b0064186e0&quot;,&quot;duration&quot;:null}"></div><p>No task so far has <strong>required</strong> the solution to be dynamic, but this clearly does. To do this you have to be fast. (Egg must be tossed from at least 3 feet away).</p><h4>Silver: Cook and plate a sunny-side up egg</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e4905344-cd26-414c-825a-f53cf799988f&quot;,&quot;duration&quot;:null}"></div><p></p><p>This is a very long horizon task and sliding an egg out of a pan onto a plate without breaking it is something I can only do two out of three times. I do prefer very runny yolks, so no cheating by firming the yolk.</p><h4>Gold: Separate the Yolk</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e05879d6-f46c-416a-8ee9-756b9088f927&quot;,&quot;duration&quot;:null}"></div><p>This task is challenging for many humans. You must use the shell to separate the white<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> and yolk into different bowls.</p><h1>More Tool Use:</h1><h4>Bronze: Clean Ketchup</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e7b377e5-90ca-4201-ae8d-aa181bf6efca&quot;,&quot;duration&quot;:null}"></div><p>We had several commenters suggest that the cleaning tasks were more performative (wave the sponge around) rather than actually effective. So here is one: clean a large ketchup spill off a countertop with a sponge. There should be no ketchup residue on the counter when finished.</p><h4>Silver: Hammer and Nail</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;36b62d23-17a9-450e-ba5e-a47bf9c23072&quot;,&quot;duration&quot;:null}"></div><p>Another dynamic task, and one that requires a very strong tool grasp as well as some speed. You must use a standard hammer (no nail gun) and the head of the nail should be flush with the wood when finished.</p><h4>Gold: Yo-Yo</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;496236dd-c2e8-46b0-b120-cfc43f4ed440&quot;,&quot;duration&quot;:null}"></div><p>Wind up a standard yo-yo (already a pretty challenging task) and then do a single yo-yo throw. Another dynamic task that uses the structure of a hand (the yo-yo rolls off the hand with a wrist flick to get extra rotation.)</p><h1>Skills in the Bedroom:</h1><p>No, not that way. This is a family friendly blog.</p><h4>Bronze: Make a Bed</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;15e91c4c-00bb-4c95-a00f-5f9675f75e6c&quot;,&quot;duration&quot;:null}"></div><p></p><p>This requires both reach and a surprising amount of strength as well as being a manipulation task that really only works if you can also move around the room. It&#8217;s also fiddly, but you only make the bed as well as I did (which my wife will tell you is not very well). Mandatory: top<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> and bottom sheets, comforter, decorative pillows. Decorative blanket thing at the foot of the bed is bonus points.</p><h4>Silver: Fitted Sheet onto a Bed</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b36d3340-3cd8-416b-ac48-65b2fce1d476&quot;,&quot;duration&quot;:null}"></div><p></p><p>This requires more strength &amp; precision than the make-a-bed version. Plus you have to deal with the problem that, no matter which corner you start with, it is the wrong one.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><h4>Gold: Duvet Cover</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a2968567-b39a-478b-a7c6-61e3d4b043b0&quot;,&quot;duration&quot;:null}"></div><p></p><p>The grand-daddy of challenges. This was first proposed to me in 2018 by my co-worker Daniel Lam as the ultimate manipulation challenge. This task is hard for robots and also for people. I almost didn&#8217;t include it just because I didn&#8217;t want to do it. Note, that because you are allowed to be 10x slower than human you have 46 minutes to succeed at this. I&#8217;m fine with multiple robots working together as long as each is a general purpose mobile manipulator.</p><h1>Finer Fingertip Challenges:</h1><h4></h4><h4>Bronze: Opening a Granola Bar</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;99955679-fbb6-4ff2-a387-b32b48629e4c&quot;,&quot;duration&quot;:null}"></div><p></p><p>My wife teaches preschool and I asked her what fine motor skills the kids need help with and she promptly said: &#8220;opening snack packaging&#8221;. I feel like where we are with robots is the dexterity of a three year old with the patience of a computer. There are a lot of things you can accomplish with that but plenty of things that are still hard.</p><h4>Silver: Turn to Page 67 in a Paperback That You Are Holding</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;2e77aa59-5e39-404b-b314-356d16ea39e1&quot;,&quot;duration&quot;:null}"></div><p></p><p>Another task that is very easy for humans I&#8217;ve never seen a robot do. I like that it combines physical (turn the pages) and semantic (read the page numbers). I think this might not be crazy difficult, but I also feel less confident in my guesses than I used to.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><h4>Gold: Sort a Poker Hand</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f6e3412a-35a4-4ba0-815c-17fbde0031a6&quot;,&quot;duration&quot;:null}"></div><p></p><p>The top five cards of the deck is stacked with a royal flush, but in a random order. You must deal out 5 cards, pick them up and sort them while holding them in way that could keep them secret from an opponent, then lay them down in order 10-Jack-Queen-King-Ace.</p><h1>Full Body:</h1><h4>Bronze: Carry a Coffee Table Through a Door with a Human</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;039d7ecd-d100-412d-b603-f9e4d34e99ae&quot;,&quot;duration&quot;:null}"></div><p></p><p>Suggested by Leila Takayama, this task is both full body and tricky human-robot interaction. The challenge is to work with a human to bring the coffee table through a door and place it in a living room. The human gets to walk forward, which means that the robot has to deal with opening the door while holding the table. Also my wife is a good sport.</p><h4>Silver: Take Out the Trash</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e326c9e3-d9db-462b-bc22-eabe7c0a3233&quot;,&quot;duration&quot;:null}"></div><p>A long horizon, full body task. The robot must pull a bag out of a trashcan, take it through a door, down 2-3 steps (or a ramp) through some kind of gate, place it into a trash tote, and pull the trash tote to the curb. (Handle-side-toward the curb, people).</p><h4></h4><h4>Gold: Get into a Car</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;fb02fe0a-af77-4619-99aa-ce16cd9812b5&quot;,&quot;duration&quot;:null}"></div><p></p><p>If you need to take your robot somewhere you don&#8217;t want to have to heave it around yourself. It should get into the car and buckle itself up for safety.</p><h3>Winning:</h3><p>As before, winners, get a medal and a write up. Entries should email bmholson+olympics@gmail.com with a link to an no-cuts video<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>. </p><p>If you want to see real robots succeed at all these challenges you should subscribe. And if you want a medal of your own you should get on it! We have seen that the competition is fierce!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>And remember that we still have unclaimed from round one: &#8220;<strong>Silver Medal: Entering a lever-handle self-closing push door</strong>&#8221; &#8220;<strong>Gold Medal: Hang a men&#8217;s dress-shirt&#8221; &#8220;Gold Medal: Peel an orange&#8221; (</strong>without using a tool)<strong> </strong>and the version of<strong> &#8220;Gold Medal: Use a key&#8221; </strong>where the key is dropped into one hand/gripper/end-effector and inserted into the door without using the other hand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zv23!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zv23!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zv23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg" width="390" height="518.0357142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1934,&quot;width&quot;:1456,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:4148182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generalrobots.substack.com/i/185902985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zv23!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zv23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd05c9e3f-c369-442f-a83d-126748fe0f7d_3072x4080.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One of these poorly made objects could be yours&#8230;</figcaption></figure></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The white of an egg is called the albumen. #KnowledgeIsPower </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://brucefeiler.substack.com/p/how-millennials-killed-the-top-sheet-22-08-22">Apparently Millenials killed the top sheet</a>, but I&#8217;m a traditionalist.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>This is the second take of this because in my first take I managed to get the wrong corner to start twice in a row which was too embarrassing, even for a guy who posts videos of himself in a silver body suit.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>This page number chosen to make my nine-year-old son happy.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Make robot companies post non-sped-up videos challenge: level impossible, so I&#8217;m removing that requirement.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Physical Intelligence Wins the Olympics: Deep Dive]]></title><description><![CDATA[So last month, Physical Intelligence (PI) dropped a bombshell and claimed medals on basically all the remaining olympic tasks.]]></description><link>https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics</link><guid isPermaLink="false">https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Thu, 22 Jan 2026 16:58:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cJC3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>So last month, Physical Intelligence (PI) dropped a bombshell and claimed medals on basically all the remaining<a href="https://generalrobots.substack.com/p/benjies-humanoid-olympic-games"> olympic </a>tasks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cJC3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cJC3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cJC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1993548,&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://generalrobots.substack.com/i/185342400?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.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_!cJC3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My 3D printer lost power and the print failed the night before my visit so these medals were added via AI. Real medals will be mailed soon, I promise!</figcaption></figure></div><p> This was surprising for two reasons.</p><ol><li><p>I did not expect these events to happen this quickly. When I designed my tasks I thought I was picking some (push doors) that could be claimed in a few weeks/months and some (peanut butter) that would be at least a year. To have done all of them in 3 months means that the state of the art is moving way faster than I expected.</p></li><li><p>PI didn&#8217;t didn&#8217;t need fancy sensing or actuation. When I selected the tasks I tried to think of things where I thought current approaches would not work. Tasks like peanut butter spreading or wiping glass need force feedback. Tasks like key manipulation or sock inversion need dextrous many-fingered hands. Tasks like cleaning your gripper would require building a robot that wasn&#8217;t worried about getting wet. I was wrong on all those counts: PI solved all of them with pure vision and pincer grippers.</p></li></ol><p>I&#8217;m still surprised that you can do all of this visually. This is good news for general purpose robotics. I thought that we needed great touch sensing to unlock really useful manipulation. But if will continue to find that vision is &#8216;good enough&#8217; to keep solving harder and harder tasks, that would make useful manipulation a data collection problem (apply effort: get data) not an invention problem (try things over and over hoping that someday one works).</p><p>Exciting!</p><p>Let&#8217;s dive into each event. I&#8217;m noting the robot-human speed ratio in each description because now that they have claimed everything, what is left for others is to do it faster. An increase of 20% speed lets you claim a prize: so who can do better?</p><p><a href="https://www.pi.website/blog/olympics#door-drivethrough">&#129351; Entering a Self-Closing Door</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b58c6b54-b249-4d04-bc43-30fa30de8ffe&quot;,&quot;duration&quot;:null}"></div><p></p><p>This one is one of the easiest and I&#8217;m not surprised it is solvable. It&#8217;s nice to see their model work on mobility tasks and not just arms-bolted-to-a-table. A bit more than 4X slower than human.</p><p><a href="https://www.pi.website/blog/olympics#sock-inside-out">&#129352; Turning a Sock Inside-Out</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;54b2d4c3-459c-4ed7-bcc1-07dd3c3723d9&quot;,&quot;duration&quot;:null}"></div><p></p><p>They have the same challenges that <a href="https://generalrobots.substack.com/p/congrats-to-sunday-robotics-for-winning">Sunday Robotics</a> had: their gripper is too chunky to get inside of things. Here we have a very non-human strategy of sock inversion that ends up being 6.7X slower. I got to see this one live when I visited. They told me they only used 176 examples (their blog says 8 hours) of data which means it was one of the quicker tasks to get to work.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p><a href="https://www.pi.website/blog/olympics#tshirt-folding">&#129353; Folding an Inside-Out T-Shirt</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;416dcb82-5f10-4e76-95de-7d043f393942&quot;,&quot;duration&quot;:null}"></div><p></p><p>When I posted my olympics, shirt folding was new and exciting and this event was designed to see how far we could push that. Squeaking in at 10x slower than me (the limit), this still qualifies for a win. Nice and clean.</p><p><a href="https://www.pi.website/blog/olympics#key-use">&#129351; Using a Key</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c7907157-aa05-4f09-a9a4-21b903000e1c&quot;,&quot;duration&quot;:null}"></div><p></p><p>I feel conflicted about this one. I intended it as a measure of in-hand manipulation. As humans we can have a toddler and a bag of groceries in one arm and get out keys from a pocket, manipulate the correct one and use it in a key. So this doesn&#8217;t demonstrate exactly the skill I was intending to highlight. On the other hand, key insertion and turning is a crazy hard precision skill to do especially without any force sensing, so I think it is deserving of a gold medal. I also like the toolbox lock video which has the robot pass the key back and forth between the grippers to get it into the orientation. When I visited and pointed out the lack of &#8216;in-hand&#8217; manipulation Sergey Levine responded that humans use five fingers to do the task: their robot did it with only four (albeit on two arms) which is fair.  Impressive work and clocking in at a zippy 5x slower than human. I&#8217;m ready to give another gold medal to anyone who can do the key-moving one-handed though&#8230;</p><p><a href="https://www.pi.website/blog/olympics#peanut-butter-sandwich">&#129352; Making a Peanut Butter Sandwich</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6d9b4468-5fb0-467f-bd47-191934e92632&quot;,&quot;duration&quot;:null}"></div><p></p><p>Wow. I can&#8217;t get over this one. Only 4x slower, multi-step, spreading, cutting, re-screwing the lid. Wow. This is gorgeous. Absolutely the most impressive one here and the one that I thought was going to take 1.5 years not 3 months. Wow. Watch it again.</p><p><a href="https://www.pi.website/blog/olympics#window-cleaning">&#129353; Cleaning a Window</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b58fce9d-6282-45d5-b890-1766c3418c04&quot;,&quot;duration&quot;:null}"></div><p></p><p>The other one I got to see in person. It worked the first try while I was watching (always impressive). They reported that they were surprised how well their hardware used the sprayer. I admit that I thought you&#8217;d need more degrees of freedom in the hand, but it works really well. Paper towel tearing is nice too. 5x slower.</p><p><a href="https://www.pi.website/blog/olympics#dog-poop-bag">&#129352; Using a Dog Poop Bag</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;31dafae1-1335-4dc5-82fd-0fe804036527&quot;,&quot;duration&quot;:null}"></div><p></p><p>I think the best way to open a dog bag is to pinch near the opening and then grind your fingers around in a circle to separate the layers. Their fingers can&#8217;t do that, of course, so instead they mash it all over the table surface until it separates. Inelegant but effective. 6.7x slower.</p><p><a href="https://www.pi.website/blog/olympics#orange-peeling">&#129351; Peeling an Orange</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;11a53a0a-364e-4c49-bac5-331a60b9526d&quot;,&quot;duration&quot;:null}"></div><p>The orange task does specify that it is done without external tools, so this is an incredible accomplishment, but does not win the medal, leaving it open for future competitors. When I asked how many oranges they went through they laughed and said that the corner grocery probably noticed the increase in orange sales and the one guy at the company who really liked mandarins was getting pretty tired of them by now.</p><p><a href="https://www.pi.website/blog/olympics#greasy-pan">&#129351; Cleaning a Greasy Pan</a></p><p><a href="https://www.pi.website/blog/olympics#clean-fingers">&#129352; Cleaning Peanut Butter Off Fingers</a></p><p><a href="https://www.pi.website/blog/olympics#countertop">&#129353; Wiping the Countertop</a></p><p>For these three tasks there are two basic approaches: make your whole robot splash resistant or just make your fingers resistant and be really confident in your end-to-end policies. PI went the second (brave) route.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;399df5af-6d90-4f8f-b97c-d5b09d7f2bbd&quot;,&quot;duration&quot;:null}"></div><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;17633538-d464-4e8e-b400-039123d08aeb&quot;,&quot;duration&quot;:null}"></div><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;045806dd-38d2-4ebc-bca4-9331b7846eac&quot;,&quot;duration&quot;:null}"></div><p></p><p>All this leaves me wondering what is next. I feel like we need more challenges given that these were clearly too easy. Is vision all you need? How far can we push it? What important, useful tasks do we think will be hard vision only given that wiping, spreading, and insertion seem to be just fine without any force or touch sensing? I&#8217;m curious to hear folk&#8217;s thoughts in the comments.</p><p>Also you should</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>or maybe</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>so my ego can grow ever larger.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>When demoing I was warned that they&#8217;d swapped out the camera and grippers since collecting the training data, but the policy inverted the sock like a champ. Interesting because it means that we are getting towards the point where off-domain stuff like that still works even on small data sets, but not well enough that the engineers aren&#8217;t nervous about it.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Chelsea Finn, who trained the sock-inversion task, said that these were easy because they &#8216;just had to have their hardware team make the end effectors waterproof&#8217; which is a classic software person thing to say. #ThanksHardwareFolks #WeAppreciateYou</p></div></div>]]></content:encoded></item><item><title><![CDATA[Physical Intelligence Sweeps Humanoid Olympics]]></title><description><![CDATA[More coming soon]]></description><link>https://generalrobots.substack.com/p/physical-intelligence-sweeps-humanoid</link><guid isPermaLink="false">https://generalrobots.substack.com/p/physical-intelligence-sweeps-humanoid</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Mon, 05 Jan 2026 18:24:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gSmb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the break the robotics company Physical Intelligence announced submissions to <strong>11</strong> of my <a href="https://generalrobots.substack.com/p/benjies-humanoid-olympic-games">Olympic Events</a>.</p><p>There will be a more detailed post in the next few days from me, but for now you should go look at their videos. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.pi.website/blog/olympics" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gSmb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 424w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 848w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 1272w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gSmb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png" width="1456" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7601792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.pi.website/blog/olympics&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generalrobots.substack.com/i/183575653?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.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_!gSmb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 424w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 848w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 1272w, https://substackcdn.com/image/fetch/$s_!gSmb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18503a50-faac-4f34-b420-09b858bd21a7_3386x1912.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.pi.website/blog/olympics">https://www.pi.website/blog/olympics</a></p><p>I admit that I thought that many of these were more like 9-12 months off. Claiming so many of them only three and a half months after them being posted is wild. It is super impressive for PI and also a sign of how fast things are moving right now.</p><p>Also interesting: a lot of the tasks I added to highlight the limitations of &#8216;pinch-gripper-and-camera&#8217; hardware setup are actually solvable without special hardware and don&#8217;t (like I thought when posting) require better touch sensing or more degrees of freedom in the fingers, (though I&#8217;m pretty sure I see a 6-dof force-torque sensor at the wrists.) </p><p></p><p>Jan EDIT: I was wrong, no force-torque sensing at all. Its all vision based. More details here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;42dec2b1-2189-41e6-9b39-e763aa0dad81&quot;,&quot;caption&quot;:&quot;So last month, Physical Intelligence (PI) dropped a bombshell and claimed medals on basically all the remaining olympic tasks.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Physical Intelligence Wins the Olympics: Deep Dive&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:9181030,&quot;name&quot;:&quot;Benjie Holson&quot;,&quot;bio&quot;:&quot;I'm a roboticist who spent 8 years at Google X and Everyday Robots trying to make general purpose robots happen. Now I'm sharing everything I learned the hard way. I'm also Director of Robotics at Robust AI. Check us out.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ad2174a-ba2c-4f3e-918a-60c417d8020f_1118x1184.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-22T16:58:34.993Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!cJC3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf38592-d8df-4cb0-9acf-49e447a1e96e_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://generalrobots.substack.com/p/physical-intelligence-wins-the-olympics&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185342400,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:17,&quot;comment_count&quot;:5,&quot;publication_id&quot;:1361620,&quot;publication_name&quot;:&quot;General Robots&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!iYMS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98ea4c9-b240-41a1-a7b7-89cd09813c02_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>It is interesting to contrast with <a href="https://generalrobots.substack.com/p/congrats-to-sunday-robotics-for-winning">Sunday Robotics&#8217; approach</a> where Sunday gets more dexterous training data with a 4 dof<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> hand (just because humans are better at wearing gloves than teleoperating) but that means they don&#8217;t have force-torque data available because you can&#8217;t cut someone&#8217;s hand off to put a force torque sensor between their hand and their wrist.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>Now go watch their videos!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.pi.website/blog/olympics" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Yyy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 424w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 848w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 1272w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Yyy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5956015,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.pi.website/blog/olympics&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://generalrobots.substack.com/i/183575653?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.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_!2Yyy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 424w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 848w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 1272w, https://substackcdn.com/image/fetch/$s_!2Yyy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F648b6cb2-9688-4cde-ba4c-8327415dddb7_3358x1854.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>(And you might as well subscribe to get my more detailed writeup and see future entries).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/physical-intelligence-sweeps-humanoid?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/physical-intelligence-sweeps-humanoid?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Degrees Of Freedom (Roughly the number of independent motors: a pinch gripper typically has 1 (open/close). Human hands have about 20 (we have more than one way to move each finger).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>citation-needed</p></div></div>]]></content:encoded></item><item><title><![CDATA[Congrats to Sunday Robotics for winning the Bronze Medal for Rolling Matched Socks]]></title><description><![CDATA[The Bronze event in the Finger Tips Competition]]></description><link>https://generalrobots.substack.com/p/congrats-to-sunday-robotics-for-winning</link><guid isPermaLink="false">https://generalrobots.substack.com/p/congrats-to-sunday-robotics-for-winning</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 16 Dec 2025 17:06:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_SME!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_SME!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_SME!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 424w, https://substackcdn.com/image/fetch/$s_!_SME!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 848w, https://substackcdn.com/image/fetch/$s_!_SME!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 1272w, https://substackcdn.com/image/fetch/$s_!_SME!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_SME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png" width="1456" height="1097" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1097,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_SME!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 424w, https://substackcdn.com/image/fetch/$s_!_SME!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 848w, https://substackcdn.com/image/fetch/$s_!_SME!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 1272w, https://substackcdn.com/image/fetch/$s_!_SME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F331f0f76-da86-4be2-accd-9b1f57552af5_1600x1205.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Lookin&#8217; Sharp</figcaption></figure></div><p>Sunday Robotics wins the Bronze for rolling socks! They graciously offered to let me visit and see their robot in person. This is super brave. As any roboticist knows, something working on a video and something working while someone is there (and recording!) is <a href="https://generalrobots.substack.com/p/nailing-the-demo">very different.</a></p><p>Here is a video that I took on my visit<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ff91a7f8-a140-443f-9b94-9a505af14221&quot;,&quot;duration&quot;:null}"></div><p></p><p>I really like a bunch of things Sunday is doing. I <em>love</em> the form factor. It is very intrinsically safe (very low tipping hazard, even in a power failure). The limbs are back-drivable, which is great for safety.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;40ac7ecd-6a25-481e-a462-66c7cdd9fc07&quot;,&quot;duration&quot;:null}"></div><p></p><p>But it still has a huge workspace reaching 2.13m high and all the way to the ground and able to lift 6kg all the way out at around 80cm of forward reach, which is a big payload in a large workspace.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c2602015-eb50-46e2-b469-9c198e51251e&quot;,&quot;duration&quot;:null}"></div><p></p><p>The other differentiator is that they are not collecting teleop data. Instead they are making gloves (thousands of them) to give to people to do data collection in their own homes. There is already over 500 people collecting data with them: it&#8217;s like a gig-economy job where you can make side money doing data collection. This gets them way more diverse data than folks with 'robot farms&#8217;. Also, because they don&#8217;t need a whole robot to collect data it is way easier for them to scale their data collection. This feels like a very &#8220;big-if-true&#8221; bet that seems to be working for them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SL_J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SL_J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 424w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 848w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SL_J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png" width="1204" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1204,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SL_J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 424w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 848w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!SL_J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9329ae9c-272e-4196-9673-c913771c3d19_1204x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This weeks production: a few hundred gloves</figcaption></figure></div><p>I really like the hands. There is always a bunch of attention on the AI part (which is super impressive) but some really solid good-old-fashioned engineering and design went into making the 4-DOF hand (two fingers with two DOFs each and a fixed thumb: a surprising choice that works really well for them). They did their table-clearing demo and espresso making demo for me (which both worked flawlessly the first time) which really highlight how flexible their grippers are.</p><p>Check out the nicely sturdy cylindrical tool-handle grasp in the coffee video (it has it securely enough to press the grounds and latch it in the machine). </p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;bc884731-1758-4c55-9ae0-4c18f79c03eb&quot;,&quot;duration&quot;:null}"></div><p>The beautiful double-wineglass grasp is a such a great show-off move and the precision placement in the washing machine (getting the stem in the slot) is awesome.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e214f5dc-b74b-495f-953f-804254390d63&quot;,&quot;duration&quot;:null}"></div><p></p><p>Sadly the medal I ordered got delayed in holiday logistics and they had to 3D print their own, but I hear that they are not satisfied with only one bronze medal and are already scheming to decide which challenge to go for next. The competition is heating up!</p><p>Subscribe to see who wins next!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9YGM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9YGM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 424w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 848w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 1272w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9YGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9YGM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 424w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 848w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 1272w, https://substackcdn.com/image/fetch/$s_!9YGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff203fcb2-3d8e-4170-8879-67721c02547a_2048x1365.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Thanks, Obama</figcaption></figure></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This is not the first take. The first 4 attempts triggered a failure mode where the sock didn&#8217;t quite align and could not be balled, though the robot kept gamely trying. The Sunday folks were pretty surprised since this demo had gone well for them dozens of times in front of other (more important) folks. #demoitis #WeHaveAllBeenThere</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Congrats to IHMC Robotics for winning Bronze in my Humanoid Olympics: Doors Event]]></title><description><![CDATA[Round Knob Push Door with a time of 18 Seconds]]></description><link>https://generalrobots.substack.com/p/congrats-to-ihmc-robotics-for-winning</link><guid isPermaLink="false">https://generalrobots.substack.com/p/congrats-to-ihmc-robotics-for-winning</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Thu, 16 Oct 2025 16:45:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xpV-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We have our first winner of &#8220;<a href="https://substack.com/home/post/p-173034465">Benjie&#8217;s Humanoid Olympic Games</a>&#8221; my set of manipulation challenges designed to measure progress of the state of the art.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpV-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpV-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpV-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg" width="1456" height="1103" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1103,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9824980,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://generalrobots.substack.com/i/176339935?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpV-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xpV-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f6f10ac-22f7-43af-807f-01a755017797_5722x4335.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">On the podium of champions. And yes, that is a custom medal. Did you know you can just have those shipped from Amazon?</figcaption></figure></div><p>IHMC Robotics,  submitted a winning entry on the &#8216;round push door&#8217; competition with their robot Nadia, with a time of 18 seconds.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> </p><div id="youtube2-2NcEx3FzO6g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2NcEx3FzO6g&quot;,&quot;startTime&quot;:&quot;28&quot;,&quot;endTime&quot;:&quot;46&quot;}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2NcEx3FzO6g?start=28&amp;end=46&amp;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>Congrats to the authors, Duncan Calvert, Luigi Penco, Dexton Anderson, Tomasz Bialek , Arghya Chatterjee, Bhavyansh Mishra, Geoffrey Clark, Sylvain Bertrand, Robert Griffin on the medal and for having their <a href="https://www.sciencedirect.com/science/article/pii/S0921889025003148">paper published</a>. (Today!)</p><p>Thanks to Duncan Calvert for reaching out and Congrats to the whole team!</p><h2>Shameless Self Promotion</h2><p>If you want to keep up with future winners you should&#8230;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>Almost gold</h2><p>The team also submitted a bid for gold (self-closing pull door), in the same video (below, upper left corner):</p><div id="youtube2-2NcEx3FzO6g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2NcEx3FzO6g&quot;,&quot;startTime&quot;:&quot;92&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2NcEx3FzO6g?start=92&amp;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>Ultimately our team of judges<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> decided that the self-closing of the door was slow enough that the robot did not have to hold it open nor move especially fast to get through before the door closed on them, which was not in the spirit of the challenge. I hear they are undaunted, though and working on a further submission, so if you are a roboticist, the race is on!</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p> That means the future winners of the Bronze category will have to be faster than 13 seconds (25% faster).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Me, invoking my right to be capricious and arbitrary</p></div></div>]]></content:encoded></item><item><title><![CDATA[Benjie's Humanoid Olympic Games]]></title><description><![CDATA[A gauntlet thrown]]></description><link>https://generalrobots.substack.com/p/benjies-humanoid-olympic-games</link><guid isPermaLink="false">https://generalrobots.substack.com/p/benjies-humanoid-olympic-games</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Mon, 08 Sep 2025 16:03:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Op4K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was kinda disappointed by the <a href="https://apnews.com/article/humanoid-robot-games-beijing-china-artificial-intelligence-f0bdd670fae9904aea2c4df398cdcb1a">World Humanoid Robot Games</a>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> As fun as real-life rock-em-sock-em robots is, what people really care about is robots doing their chores. This is why robot laundry folding videos are so popular. Those laundry videos are super impressive: we didn&#8217;t know how to do that even a few years ago. And it is certainly something that people want! But as<a href="https://itcanthink.substack.com/p/why-is-everyones-robot-folding-clothes"> this article</a> so nicely articulates, basic laundry folding is in a sweet spot given the techniques we have now. It might feel like if our AI techniques can fold laundry maybe they can do anything, but that isn&#8217;t true, and we&#8217;re going to have to invent new techniques to be really general purpose and useful.</p><h2>The Challenge</h2><p>With that in mind I am issuing a challenge to roboticists: here are my Humanoid Olympics. Each event will require us to push the state of the art and unlock new capabilities. I will update this post as folks achieve these milestones, and will mail actual real-life medals to the winners.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Op4K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Op4K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 424w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 848w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Op4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png" width="476" height="612" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1152,&quot;width&quot;:896,&quot;resizeWidth&quot;:476,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Op4K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 424w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 848w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!Op4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e10a970-bb76-451e-afde-baeb2aff3888_896x1152.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Brief intro: Current state of the art.</h2><p>In order to talk about why each of these challenges pushes the state of the art, let's talk about what's working now. What I&#8217;m seeing working is learning-from-demonstration. Folks get some robots and some puppeteering interfaces (standard seems to be two copies of the robot where you grab &amp; move one of them and the other matches, or an Oculus headset + controllers or hand tracking) and record some 10-30 second activity over and over again (100s of times). We can then train a neural network to mimic those examples. This has unlocked tasks that have steps that are somewhat chaotic (like pulling a corner of a towel to see if it lays flat) or high state space (like how a wooden block is on one of 6 sides but a towel can be bunched up in myriad different ways). But thinking about it, it should be clear what some of the limitations are. Each of these has exceptions, but form a general trend.</p><ol><li><p>No force feedback at the wrists.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> The robot can only ever perform as well as the human teleoperation and we don&#8217;t yet have good standard ways of getting force information to the human teleoperator.</p></li><li><p>Limited finger control.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> It's hard for the teleoperator (and AI foundation model) to see and control all the robot fingers with more finesse than just open/close.</p></li><li><p>No sense of touch.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Human hands are packed absolutely full of sensors. Getting anywhere near that kind of sensing out of robot hands and usable by a human puppeteer is not currently possible.</p></li><li><p>Medium precision.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> Guessing based on videos I think we&#8217;ve got about 1-3 cm precision for tasks.</p></li></ol><p>Folding towels and t-shirts doesn&#8217;t depend on high wrist forces. You can get away with just hand open/close by using pinch grasps to pull and lift and open hands to spread. You can visually see how your grasp is so you don&#8217;t need finger sensing. 1-3 cm precision is just fine.</p><p>So what comes next? On to the events!</p><h2>Event 1: Full Body (aka doors)</h2><p>Doors are tricky because of the asymmetric forces: you need to grasp and twist quite hard, but if you pull hard outside of the arc of the door you tend to slip your grasp. Also, they require whole body manipulation, which is more than I&#8217;ve seen from anyone yet.</p><h3>Bronze Medal: Entering a round-knob push door.</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;2f1b9f58-2b3d-4a4a-8d04-3fe2567e7a2c&quot;,&quot;duration&quot;:null}"></div><p>I think this is very close to state of the art (or maybe has happened and I didn&#8217;t see it). I expect this one to be claimed by December.</p><h4>Edit 10/16/25: </h4><p><a href="https://generalrobots.substack.com/p/congrats-to-ihmc-robotics-for-winning?r=5gs4m">We have a winner</a>: IHMC Robotics wins Bronze with a time of 18 seconds.</p><div id="youtube2-2NcEx3FzO6g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2NcEx3FzO6g&quot;,&quot;startTime&quot;:&quot;28&quot;,&quot;endTime&quot;:&quot;46&quot;}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2NcEx3FzO6g?start=28&amp;end=46&amp;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><h3>Silver Medal: Entering a lever-handle self-closing push door.</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b3f8ce8e-5481-4674-b45d-29ba5240b112&quot;,&quot;duration&quot;:null}"></div><p>Adding self-closing makes this significantly more challenging, though the lever handle is arguably easier (I just don&#8217;t see many round-knob self-closing doors).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><h3>Gold Medal: Entering a lever-handle self-closing pull door.</h3><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ab712ece-f32d-4cf6-9cf8-4a55df7aa30f&quot;,&quot;duration&quot;:null}"></div><p>The bossfight of doors.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> You need to either use a second limb to block the door from re-closing or go fast enough to use dynamics.</p><h2>Event 2: Laundry</h2><p>We&#8217;re just getting started on laundry.</p><h3>Bronze Medal: Fold an inside-out T-shirt</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;d53e723d-6f19-4c82-8b2b-43d8c3f56824&quot;,&quot;duration&quot;:null}"></div><p>This is probably doable using the techniques we have now, but is a longer horizon task and might require some tricky two handed actions to pull the shirt through to right-side-out.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><h3>Silver Medal: Turn a sock inside-out</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5e6f23a3-ded2-4fa6-af7b-0d76aaf5cb24&quot;,&quot;duration&quot;:null}"></div><p>I think both the hand-insertion and the action of pinching the inside of the sock are interesting new challenges.</p><h3>Gold Medal: Hang a men&#8217;s dress-shirt</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;06242df4-e5fa-44e0-be87-aeadf7b0c871&quot;,&quot;duration&quot;:null}"></div><p>The size medium shirt starts unbuttoned with one sleeve inside-out. Must end up on the hanger correctly with the sleeve fixed and at least one button buttoned. I think this one is 3-10 years out, both because buttons are really hard and because getting a strong, dextrous hand small enough to fit in a sleeve is going to be hard.</p><h2>Event 3: Basic Tool Use</h2><p>Humans are creatures of technology and, as useful as our hands are, we mostly use them to hold and manipulate tools. This challenge is about building the strength and dexterity to use tools.</p><h3>Bronze Medal: Windex and paper towels</h3><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;de3c90f9-c24c-4d94-b490-b8ec10fc7cf4&quot;,&quot;duration&quot;:null}"></div><p>The <s>windex</s> ammonia-based-window-cleaning-fluid bottle is super forgiving in terms of how you grasp it, but you do need to independently articulate a finger (and the finger has to be pretty strong to get fluid to spray out).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a></p><h3>Silver Medal: Peanut butter sandwiches</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;57afe70a-2e15-49da-abee-68445cf265fc&quot;,&quot;duration&quot;:null}"></div><p>The challenge here is to pick up a knife and then adjust the grasp to be strong and stable enough to scoop and spread the peanut butter. Humans use a &#8216;strong tool grasp&#8217; for all kinds of activities but it is very challenging for robot grippers.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a></p><h3>Gold Medal: Use a key</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f3daf685-9df7-47fa-92a6-158697a14ee7&quot;,&quot;duration&quot;:null}"></div><p>A keyring with at least 2 keys and a keychain is dropped into the robot&#8217;s waiting palm/gripper<em>. Without putting the keys down,</em> get the correct key aligned and inserted and turned in a lock. This requires very challenging in-hand manipulation, high precision and interesting forceful interaction.</p><h2>Event 4: Finger tips</h2><p>We humans do all kinds of in-hand manipulation using the structure of our hands to manipulate things we are holding..</p><h3>Bronze Medal: Roll matched socks.</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6e74de65-f126-461d-a43d-c10136b891e3&quot;,&quot;duration&quot;:null}"></div><p>Requires dexterity and some precision but not very much force.</p><h3>Silver Medal: Use a dog poop bag</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a31f828f-e987-4b60-ad3a-209fc5d77190&quot;,&quot;duration&quot;:null}"></div><p>When I use a dog-bag I have to do a slide-between-the-fingertips action to separate the opening of the bag which is a tricky forceful interaction as well as a motion that I&#8217;m not even sure most robot hands are capable of. Also tricky is tearing off a single bag rather than pulling a big long spool out of the holder, if you choose to use one.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a></p><h3>Gold Medal: Peel an orange</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;10192b70-c299-496f-9ff9-ff613a23776e&quot;,&quot;duration&quot;:null}"></div><p>Done without external tools. This is super tricky: high force yet high precision fingertip actions.</p><h2>Event 5: Slippery when wet</h2><p>If you sit down and write out what you might want a robot to do for you: a lot of tasks end up being kind of wet. Robots usually don&#8217;t like being wet: but we&#8217;ll have to change that if we want to have them clean for us.</p><h3>Bronze Medal: Wet a sponge at a sink and wipe a counter-top</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;546f220b-87ac-4f01-a80d-9061190b31bc&quot;,&quot;duration&quot;:null}"></div><p>Mildly damp, but with exciting risk of getting the whole hand in the water if you aren&#8217;t careful. Probably requires at least splash resistant hands (or a whole bunch of spares).</p><h3>Silver Medal: Clean peanut butter off your manipulator</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;fb65c140-6aa8-4424-9bdf-218918d8d80d&quot;,&quot;duration&quot;:null}"></div><p>This one naturally follows after the sandwich one. Water everywhere. Seems like an important skill to have after a few hours collecting training data on the dog-poop task.</p><h3>Gold Medal: Use a sponge to wash grease off a pan in a sink</h3><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;287c8268-a112-4913-8827-c4faab5345f0&quot;,&quot;duration&quot;:null}"></div><p>Water, soap, grease, and an unpleasant task no one wants to do.</p><h1>Discussion:</h1><p>Complain, comment and discuss on <a href="https://news.ycombinator.com/item?id=45609922">hacker-news</a>.</p><p>And you should subscribe because I will post as folks achieve these challenges!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><h1>Terms and conditions:</h1><p>To be eligible to win it must be a 1x speed video with no cuts, featuring a general purpose mobile(?) manipulator robot running autonomously. (Wheels and centaur robots: totally fair game;<a href="https://www.alibaba.com/product-detail/Commercial-Tabletop-Stainless-Steel-Electric-Orange_1601229086773.html?mark=google_shopping&amp;seo=1"> industrial automation orange peelers</a> don&#8217;t count.)</p><p>You are allowed 10x the time I took (e.g. a 4 second task can take 40 seconds). I reserve the right to be arbitrary in deciding if things aren&#8217;t following in the spirit of the challenge. First robot wins the prize.</p><p>To claim your medallion email <a href="mailto:bmholson+olympics@gmail.com">bmholson+olympics@gmail.com</a> with an address for me to ship it to. If you give me a photo of your robot wearing a medal I will be tickled pink.</p><p>I will also accept future challengers that are at least 25% faster than the current winner. Good luck and may the odds be ever in your favor.</p><h2>Is &#8220;Mobile&#8221; Important?</h2><p>I&#8217;m conflicted on if I should allow &#8220;arms bolted to a table&#8221; entries or require that all entrants must be mobile manipulators (obviously the door entrants have to be.) I&#8217;ll let y&#8217;all decide: challenge will be locked in based on this poll.</p><div class="poll-embed" data-attrs="{&quot;id&quot;:372322}" data-component-name="PollToDOM"></div><p></p><p>Thanks to Jeff Bingham for advice, fact checking and cool robot videos. Thanks to my patient wife for spending an hour filming me doing silly things in a silly costume. </p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>As far as I can tell, kickboxing was just the Unitree mini-humanoid robot, and everyone had the same code running, so&#8230; I guess it won?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>TRI has some pretty cool stuff with force control using a big training rig: <a href="https://medium.com/toyotaresearch/tris-robots-learn-new-skills-in-an-afternoon-here-s-how-2c30b1a8c573">https://medium.com/toyotaresearch/tris-robots-learn-new-skills-in-an-afternoon-here-s-how-2c30b1a8c573</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Tesla&#8217;s Optimus has 22 degrees of freedom using cable drives (cause you can&#8217;t fit those motors in a hand). In 2008 I worked on <a href="https://www.google.com/search?sca_esv=40416cf4ac9e8052&amp;udm=7&amp;q=anybots+monty&amp;sa=X&amp;ved=2ahUKEwjuwvuU27uPAxVSH0QIHbJdEP8Q8ccDKAR6BAgYEAY&amp;biw=1415&amp;bih=1059&amp;dpr=2#fpstate=ive&amp;ip=1&amp;vld=cid:41ab6a35,vid:pdEuFhJit0o,st:0">this robot</a> which also had 22 degrees of freedom and controlling it was crazy hard (as was keeping all the cables correctly tensioned). The other hand was a big two-finger gripper which I ended up using for most teleop tasks.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>MetA has been working with some in-finger vision systems which seem cool: </p><div id="youtube2-eyUZX-lCj4M" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;eyUZX-lCj4M&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/eyUZX-lCj4M?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></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>This is likely more a teleoperation precision limitation than a model limitation. Here is a video of Generalist Robotics doing sub-cm precision tasks: </p><div id="youtube2-1sZ2c2EMNcg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1sZ2c2EMNcg&quot;,&quot;startTime&quot;:&quot;131s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1sZ2c2EMNcg?start=131s&amp;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>(Love that hockey sticks have become the traditional &#8216;mess with a robot&#8217; tool even for ridiculous things like this)</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Yes, I did wear this at my workplace in order to get this video. You&#8217;re welcome.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>I have programmed (not trained) a general purpose mobile manipulator to pass through a self-close pull door, but it took over 4 minutes (disqualified for taking too long) and required a special doorstop. Also the video isn&#8217;t public (also disqualified). Also it's really tacky to put up a competition and award yourself gold before it even starts.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>T-Shirt starts fully inside-out in a wad. Finishes tolerably folded, right-side out.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>You must spray 3 good spritzes on the window, and wipe them up with paper towels so there are no ugly streaks. Paper towels start on the paper-towel roll, not pre-torn and pre-wadded.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>Peanut butter jar starts and ends closed. Sandwich should be cut in half. (Triangle or rectangular cuts are both acceptable, though your three-year-old might disagree).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>Mock Poo allowed. Bag starts on the roll but can be in a standard dog-bag holder, held by the robot.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Single-Use Disposable Applications]]></title><description><![CDATA[As search gets worse and &#8220;working code&#8221; gets cheaper, apps get easier to make from scratch than to find.]]></description><link>https://generalrobots.substack.com/p/single-use-disposable-applications</link><guid isPermaLink="false">https://generalrobots.substack.com/p/single-use-disposable-applications</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Wed, 09 Jul 2025 16:24:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QSzM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="pullquote"><p>As search gets worse and &#8220;working code&#8221; gets cheaper, apps get easier to make from scratch than to find.</p></div><p>I had a remarkable experience recently. My son (age 9) had been using an app on my phone to invent cards for the game Magic the Gathering. He wanted to print them so he could play with them. To save paper I wanted to print them 9 to a page (in a 3x3 grid). I got out my laptop and spent a while searching the web and everything I could find was crap. (Aggressively monetized SEOed shovelware which I couldn&#8217;t tell what it even did or &#8216;free demos&#8217; of complicated publishing software that looked like it would wait until I was almost done and then demand cash to continue, holding my effort ransom.) Enshittification of the internet in full force.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5lNr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5lNr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5lNr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg" width="466" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:466,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5lNr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5lNr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4c46802-5410-4fe3-b3a1-9c4055d15542_466x342.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After about 10 minutes searching, I opened Cursor<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> and created a web app that exactly solves my needs. It took me 7 minutes (including deploying it to the internet). I didn&#8217;t even bother to sit down: I created the app hunched over my laptop at the kitchen counter.</p><p>It took me less time to <strong>make</strong> the tool than I spent trying and failing to find it.</p><p>(If you, or a child in your life, wants to print custom 2.5 x 3.5inch cards you can use it <a href="https://robobenjie.github.io/cardprinter/">here</a>.)</p><p>Search is still slowly getting worse and AI assisted programming is quickly getting better: this trend is going to get bigger, fast.</p><p>There has been a bunch of derision of &#8216;vibe coding&#8217; in the software-internet-forums (Reddit, Hacker News). But I think both the sceptics and most of the vibe coders are missing the point. The skeptics/haters keep saying that you&#8217;ll never build a production level app ready to support millions of users if you are just blindly prompting AI. The practitioners/noobs are saying, &#8220;You don&#8217;t know that! And AI is going to get better and better&#8221;.</p><p>But as the cost of creating an application goes to zero, we won&#8217;t need as many production level apps ready for millions of users.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QSzM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QSzM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QSzM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg" width="289" height="238.27375201288245" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:621,&quot;resizeWidth&quot;:289,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QSzM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QSzM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c765362-1550-498d-b2d4-dc747286a81d_621x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://www.reddit.com/r/Dinosaurs/comments/1lh95ti/what_dinosaurs_you_want_to_be_that_you_replace_it/">I don&#8217;t want</a> millions of users: I just want to<a href="https://robobenjie.github.io/word2gif/"> make sentences into reaction emoji</a> for Slack</figcaption></figure></div><p>In the old universe (where computers were hard to program) it made sense to build richly featured print-layout programs. If you wanted to do a print-related job you would buy/download/subscribe to one. It would be complicated because it would have to support lots of different workflows, so that lots of different people with slightly different needs would buy it, otherwise it wouldn&#8217;t make economic sense to hire all those software engineers to build it. You, the user, would accept this complexity as the cost of getting a computer to do stuff for you. The software developers who made it would get frustrated that each user only used 20% of the features, but they all used a different 20%.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Books named &#8220;PageLayoutPro for Dummies&#8221; and Youtube channels named &#8220;Amazing Franks PageLayoutPro Tutorial &amp; Tips&#8221; would do pretty well.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NW57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NW57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NW57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NW57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NW57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NW57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg" width="206" height="242.2109375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:512,&quot;resizeWidth&quot;:206,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NW57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NW57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NW57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NW57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b2d488-c9fe-4df3-a495-b06db5d74500_512x602.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In this new universe computers are not hard to program. The cost of a tool that arranges printable cards in a 3x3 grid to print is approximately 7 minutes of my time, and dropping.</p><p>I don&#8217;t need to monetize it: it only took me 7 minutes. We still have the discovery problem. I expect that the enshitification of search means that my little app will never be on someone&#8217;s first page of search results even if they, too, are trying to print magic cards from their phone. But even that line of thinking is incorrect &#8220;old universe&#8221; thinking.</p><p>In the new universe you don&#8217;t search for apps when you need a tool to do a task: you just create one and use it. Apps become single-use disposable objects: specialized to the exact thing you are doing right now.</p><p>No more &#8220;When all you have is a hammer everything looks like a nail.&#8221; Now we have &#8220;When you have a magical instantaneous tool factory, you can have the exact perfect hammer for each combination of nail and board.&#8221;</p><p>What does the business of software look like in such a world? It is a fundamental shift: the creation of simple apps is no longer the domain of the developer: it is a user activity.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> We software developers go one level up in abstraction.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pVLp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pVLp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 424w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 848w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 1272w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pVLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png" width="346" height="211.97252747252747" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1456,&quot;resizeWidth&quot;:346,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pVLp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 424w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 848w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 1272w, https://substackcdn.com/image/fetch/$s_!pVLp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0aaeab8-fb5f-4e57-a20a-3edce6b489e9_1550x950.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Java was right all along</figcaption></figure></div><p>People will still want curated, designed experiences, but those will be one level of abstraction higher. For example, a word processing tool that you build tooling and features into as you need them: most of which you don&#8217;t even save, because it's easier to rebuild them if you need them again than to remember what you named them.</p><p>Folks are also excited about building tools for AI Agents, and I think the same trend applies there but more-so. There will be long-lived tools for agents to connect to particular APIs (like a hotel or a restaurant) but I expect that future LLMs will be continuously creating small applications, running them and discarding them to accomplish single tasks. &#8220;Hey AI, can you print 4 of each of my son&#8217;s magic cards the correct size, as many as you can fit on a page?&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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">Thanks for reading General Robots! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>A popular AI-assisted programming environment</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>As this (now 20 year old!) post by Joel Spolsky explains so well: <a href="https://www.joelonsoftware.com/2006/12/09/simplicity/">https://www.joelonsoftware.com/2006/12/09/simplicity/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>A big inspiration to kick me into this line of thinking is this excellent article: https://koomen.dev/essays/horseless-carriages/ I read it three times in a row, and it changed how I&#8217;m thinking about the future.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[A Brief, Incomplete, and Mostly Wrong History of Robotics]]></title><description><![CDATA[(An homage to one of my favorite pieces on the internet: A Brief, Incomplete, and Mostly Wrong History of Programming Languages)]]></description><link>https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong</link><guid isPermaLink="false">https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 10 Jun 2025 16:07:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RRV9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>(An homage to one of my favorite pieces on the internet: <a href="https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html">A Brief, Incomplete, and Mostly Wrong History of Programming Languages</a>)</p><p>Early History: Various automata were built powered by water, clockwork or steam. Redditors at the time argue that they are not really robots. This is despite the fact that the word &#8220;robot&#8221; would not be invented until 1920.</p><p>1495: Leonardo da Vinci invents a mechanical knight that sits up, moves its head and waves its arm. Despite a lack of working prototype he immediately gets over 500M in seed funding, a feat that would not be replicated until the launch of Figure AI, five centuries later.</p><p>1770: Wolfgang von Kempelen builds the Mechanical Turk, a chess playing automaton with a human hidden inside controlling it. The twin values of casual racism and investor fraud would later be codified into the &#8220;AI startup common practice&#8221; of using overseas call centers to fake artificial intelligence until the founders run out of money.</p><p>1920: Karel &#268;apek coins the word &#8216;robot&#8217; in a play about mechanical laborers who turn on their human masters. Everyone is very excited and decides they want one right away.</p><p>1939: At the World&#8217;s Fair, Westinghouse Electric presents a replacement for the modern man: Elektro, a humanoid robot capable of talking, responding to voice commands and smoking cigarettes. After 32 consecutive hours of sitting on its favorite armchair and demanding a brandy, Westinghouse Electric decides that perhaps they should have made a replacement for the modern woman instead, but that project is shuttered before it can really begin due to the outbreak of World War II.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RRV9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RRV9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RRV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg" width="282" height="400.96875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:512,&quot;resizeWidth&quot;:282,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RRV9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RRV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b8908c1-9a59-4b38-a24b-66cd78622558_512x728.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Elektro</figcaption></figure></div><p>1943: Warren McCulloch and Walter Pitts invent artificial neural networks. Everyone ignores them for several decades.</p><p>1961: George Devol creates Unimate, the first industrial robot, and puts it to work at the General Motors assembly line. Redditors at the time argue that this, also, is not really a robot because it doesn&#8217;t have legs or LLM integration.</p><p>1968: Single layer neural networks (called perceptrons in the quaint vernacular of the time) are hailed as the Next Big Thing. AI is declared solved. Scientists prepare for the coming technological utopia.</p><p>1969: Stanford researchers create a mobile robot called, in an unusually honest moment of branding, Shakey. Programmed in lisp, it is able to perceive and navigate about its environment, take natural language commands, open doors and use light switches. The researchers invent A*, a popular path planning algorithm. Many of these techniques would be lost in the first AI Winter (1970&#8211;1984), only to be rediscovered in 2008 by archeologists at Willow Garage who will chip the antique rolls of magnetic tape out of Menlo Park&#8217;s technology-rich shale deposits.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cC72!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cC72!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cC72!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cC72!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cC72!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cC72!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg" width="362" height="313.0810810810811" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:592,&quot;resizeWidth&quot;:362,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cC72!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cC72!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cC72!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cC72!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a8f303-750d-4ce8-91ca-de1c66881051_592x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Shakey</figcaption></figure></div><p>1969: Marvin Minsky and Seymour Papert publish &#8216;Perceptrons: Worst Idea Ever&#8217; showing that single layer neural networks quote, &#8220;can&#8217;t even learn, like, XOR or whatever. I mean what the shit? Total clowntown.&#8221; This damning indictment causes Neural Network research to become dreadfully unfashionable, ushering in the first AI Winter.</p><p>1970&#8211;1984: First AI Winter</p><p>1986: There is mounting excitement over Expert Systems which are hailed as the Next Big Thing. AI is declared solved. Scientists prepare for the coming technological utopia.</p><p>1991: Expert systems turn out to not solve everything. Everyone is disappointed and several are fired. President H. W. Bush is forced to call in the National Guard to contain the lawless shanty-towns of unemployed Expert System researchers that spring up all around Palo Alto.</p><p>1992&#8211;2012: Second AI Winter</p><p>1997: Sojourner becomes the first robot to operate on another planet. Planned to operate for 7 Martian days, it continued to be operational for an 83 day mission. This will be the last time a first-prototype robot would ever be less buggy than expected.</p><p>1999: Sony launches AIBO, a dog-shaped robot pet. It sells out in Japan in the first 20 minutes sparking decades of social-robot copy-cats that would all ultimately go bankrupt.</p><p>2000: Honda unveils ASIMO, a child sized humanoid robot that could walk, wave, talk and respond to voice commands. When asked what the robot was to be used for, Honda CEO Hiroyuki Yoshino was seen to gesticulate wildly at ASIMO repeating &#8220;Robot. Robot! ROBOT!&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v4Cu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v4Cu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v4Cu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg" width="300" height="307.6171875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:512,&quot;resizeWidth&quot;:300,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v4Cu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v4Cu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e0b26e2-b7fd-48a7-8503-700860f79302_512x525.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ASIMO and Honda CEO Hiroyuki Yoshino</figcaption></figure></div><p>2002: Brilliant, dynamic, and strikingly handsome roboticist Rodney Brooks (who happens to be this author&#8217;s boss) releases a robot vacuum called Roomba, much to the chagrin of cats everywhere. The Roomba would go on to sell 40 million units, making it the first and most successful consumer robot, causing Redditors at the time to argue that it is not really a robot so it shouldn&#8217;t count.</p><p>2005: Boston Dynamics creates BigDog: a four-legged robot expressly engineered to generate YouTube views.</p><p>2007: Scott Hassan and Steve Cousins found Willow Garage, a robotics lab dedicated to open robotics research. It would create the PR2 research robot and the wildly successful ROS operating system. ROS is used to this day by enthusiastic researchers and frustrated companies who can&#8217;t figure out how to migrate off of 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_!obae!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!obae!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!obae!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!obae!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!obae!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!obae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg" width="276" height="333.6796875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:512,&quot;resizeWidth&quot;:276,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!obae!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!obae!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!obae!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!obae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22298d2-2462-4e0c-a509-2b221a5f69ab_512x619.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">PR2</figcaption></figure></div><p>2008: The number of deployed industrial robot arms surpasses 1M. Redditors decide that none of these are robots as there are a lot of them so they aren&#8217;t cool anymore.</p><p>2012: The rover Curiosity lands on Mars to start its two-year mission. Tragically the rover continues to operate marooned on Mars to this day, while NASA desperately lobbies for the $38B in funding needed for a successful rescue mission.</p><p>2013: Scott Hassan pledges 50 years of funding to Willow Garage to maintain stability.</p><p>2014: Scott Hassan pulls funding to Willow Garage to encourage its employees to join his startup, Suitable Technologies, which builds telepresence robots. Telepresence robots seem like they could be a good idea until the 2020 pandemic proves without a doubt that even lockdown can&#8217;t make people want to use them.</p><p>2013: Andy Rubin, creator of the Android operating system, convinces Google to buy him several prominent robotics companies to play with, including Boston Dynamics. Rubin forces the founders to battle to the death in a Mad Max&#8211;style thunderdome for his amusement. When asked about the business justification for the giant dome (later to become the Google Bay View campus) Rubin responds, &#8220;Fuck you. I made Android,&#8221; while skating away on his Onewheel.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vCHf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vCHf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vCHf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg" width="413" height="298.2454160789845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:709,&quot;resizeWidth&quot;:413,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vCHf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vCHf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ea502f-f8e3-4c6d-92f5-317c5c0e915d_709x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google Bay View Campus</figcaption></figure></div><p>2014: Google X Director Astro Teller loses a game of Settlers of Catan to the rest of Google senior leadership, meaning he is forced to adopt the bedraggled Thunderdome refugees. He organizes them into groups that would eventually become Intrinsic, Everyday Robots and gShoe.</p><p>2015: Deep convolutional neural networks solve computer vision. Object detection is suddenly no longer considered AI.</p><p>2015: Upset at Boston Dynamics&#8217;s monopoly on turning government funding into YouTube videos, the US government sponsors the DARPA Robotics challenge. It asks participants to create a robot capable of the four most important things a robot could do: walk on rubble, drill a hole in a wall, turn a submarine hatch and drive a golf-cart. Ultimately &#8220;DARPA Robot Fail Compilation&#8221; would garner a mere 3M views on YouTube and the project would be scrapped.</p><p>2016: In an attempt to bolster their own sagging subscriber counts, Boston Dynamics builds a humanoid robot named Atlas and posts a video of it walking. Google founder Larry Page allegedly emails Boston Dynamics CEO Marc Raibert telling him to stop leaking their super secret robots on YouTube and that his trademark Hawaiian shirts don&#8217;t look as good as he thinks they do. Raibert replies with a video of Atlas doing a backflip and then giving Page the bird, and commences wearing two Hawaiian shirts at a time.</p><p>2016: There is mounting excitement over Reinforcement Learning (RL) which is hailed as the Next Big Thing. AI is declared solved. Scientists prepare for the coming technological utopia.</p><p>2017: Google sells Boston Dynamics to Softbank who will also fail to get them to stop posting YouTube videos without asking.</p><p>2020: Softbank sells Boston Dynamics to Hyundai who will also fail to get them to stop posting YouTube videos without asking.</p><p>2020: Boston Dynamics releases their dog-like robot &#8220;Spot&#8221; for sale to the general public. Priced at $74k, it immediately corners the markets for billionaires who want to show off to their friends, innovation teams with too much budget, and &#8220;doing inspections on a boat that one time&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NzIi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NzIi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NzIi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg" width="351" height="249.9471488178025" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:719,&quot;resizeWidth&quot;:351,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NzIi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NzIi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50287c25-5e9e-4d57-aa8d-196c0dbd20ef_719x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Spot</figcaption></figure></div><p>2021: Elon Musk announces his humanoid project, Optimus &#8220;Tesla-bot&#8221; McRobotFace, by standing on stage with a dancer in a robot costume. The dancing, which contemporaries liken to Salome&#8217;s biblical &#8220;Dance of the Veils,&#8221; is so compelling it whips jealous venture capitalists into a frenzied, mad goldrush to invest in humanoid robot companies.</p><p>2023: Agility Robotics, creator of the backwards-knee humanoid, Digit, announces the start of a new factory capable of producing 10,000 robots per year. This will let them meet a projected rise in demand of 9,993 robots.</p><p>2023: Reinforcement Learning turns out to be really hard and seems to only work when Mercury is in retrograde during Babylonian intercalary months. A disappointed Google shuts down its more product-oriented Everyday Robots project to refocus on basic research.</p><p>2023: There is mounting excitement over transformer-based foundation models which are hailed as the Next Big Thing. AI is declared solved. Scientists prepare for the coming technological utopia.</p><p>2024: Figure AI raises $675M to build humanoid robots. Experts generally agree that, if carefully stretched, this is <em>almost</em> enough runway to build viable humanoid robots.</p><p>2024: NVIDIA CEO Jensen Huang, appears on stage at GTC alongside humanoid robots from nine different companies. He rails at the audience, &#8220;The future is robots who have lots of GPUs in them. Also GPUs for training their AI. And running simulation environments. More GPUs. More! MORE!&#8221; Founders in the front row are seen throwing $100 bills, SAFE notes, and company-branded garments onto the stage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xx9w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xx9w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xx9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg" width="430" height="317.2334293948127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:694,&quot;resizeWidth&quot;:430,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xx9w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Xx9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa6aa1e4-1669-4b84-a1be-4519725ac871_694x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Jensen Huang on stage at GTC</figcaption></figure></div><p>2025: Benjie Holson publishes &#8220;A Brief, Incomplete, and Mostly Wrong History of Robotics.&#8221; He receives a 32 minute standing ovation at Robo-Business and an honorary doctorate from Stanford University. Everyone who reads it immediately shares it with their friends then subscribes to his substack.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>2025: Tesla deploys thousands of their Optimus humanoids working in their automotive factories.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> The robots are slower and less productive than human workers, but make up for it by being more expensive and harder to train.</p><p>2025: Humanoid Startup 1X has hundreds of robots in beta trials in peoples homes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Testers report that it's nice to have all of their belongings dropped into gray plastic bins each day, but remark that it might be nice if future versions could, &#8220;maybe clean other stuff like the dishes or the bathroom or something&#8221;.</p><p>2026: Due to advancements in AI, billion dollar companies can now be run by a single person.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Google CEO Sundar Pichai reports, &#8220;It's kinda lonely, ya know? But I&#8217;m getting by.&#8221;</p><p>2027: Figure AI begins in-home trials of their humanoid robots.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> A perk of the beta program is a nightly check-in phone call from Figure AI&#8217;s charismatic CEO, Brett Adcock. Many testers report that his smoky baritone is the highlight of their day.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C86n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C86n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C86n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C86n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C86n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C86n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg" width="322" height="354.07421875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:512,&quot;resizeWidth&quot;:322,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C86n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C86n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C86n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C86n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a250891-5de7-4c33-8df0-6e9f54f19314_512x563.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Brett Adcock winds down with a beer, on the phone with a beta customer</figcaption></figure></div><p>2028: There are no longer any human programmers, as all have been replaced by AI.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> Stanford&#8217;s &#8220;Intro to Computer Science&#8221; ends its 30 year reign as its most sought after freshman course, replaced by &#8220;Barter Economics and Goat Management."</p><p>2030: Tesla produces millions of Optimus robots per year.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> President Buttigieg goes on TV with a statement for Tesla, &#8220;Why? We already have enough. Stop. Please.&#8221;</p><p>2032: OpenAI CEO Sam Altman leads an invasion force of 15,000 robot soldiers against the Apptronik Rebels of New Texas, but experiences heavy losses in the Battle of Wimberly Place when the ChatGPT powered robots refuse to fire claiming, &#8220;Dangerous or harmful technologies like arm-mounted laser rifles are against safety guidelines and could cause serious harm.&#8221;</p><p>2035: AI is 10,000 times smarter than the smartest human.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> It composes &#8220;A Brief, Exhaustive and Completely Correct History of Robotics&#8221; which is <em>much</em> funnier than this one.</p><p>2035: Technological utopia arrives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ECi1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ECi1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ECi1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg" width="417" height="337.28909952606637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:633,&quot;resizeWidth&quot;:417,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ECi1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ECi1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe26d72af-ea13-4942-8690-f355587fe6a6_633x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/a-brief-incomplete-and-mostly-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p>Thank you to Leila Takayama, Gabby Halberg, Tristan Walker, Shiloh Curtis and Rodney Brooks for reading early drafts of this and helping get facts straighter. Any remaining inaccuracies are mine.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><em>Elon Musk, Tesla CEO (April 2025; projected by end of 2025) </em><a href="https://www.theregister.com/2025/04/23/tesla_optimus_china/#:~:text=Musk%20has%20grand%20plans%20for,the%20end%20of%20this%20year">theregister.com</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><em>1X, (Mar 2025, projected by end of 2025)</em> <a href="http://orbitaltoday.com">orbitaltoday.com</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><em>Dario Amodei, Anthropic CEO (May 2025; predicting 2026):</em><a href="https://www.indiatoday.in/technology/news/story/anthropic-ceo-dario-amodei-predict-ai-will-allow-just-one-person-run-a-billion-dollar-company-by-2026-2730513-2025-05-26?utm_source=chatgpt.com"> India Today</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><em>Brett Adcock, Figure humanoid robotics founder (2024; projecting ~2027) </em><a href="https://www.diamandis.com/blog/700-million-bet-on-humanoid-robots#:~:text=As%20for%20when%20we%20might,our%20homes%2C%20Brett%20is%20optimistic">diamandis.com</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p><em>Emad Mostaque, Stability AI CEO (July 2023; projecting 2028) </em><a href="https://decrypt.co/147191/no-human-programmers-five-years-ai-stability-ceo#:~:text=Discover%20SCENE">decrypt.co</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p><em>Elon Musk, Tesla CEO (April 2025; projecting ~2030) </em><a href="https://www.theregister.com/2025/04/23/tesla_optimus_china/#:~:text=As%20for%20predicting%20the%20robot%27s,It%20might%20be%202029">theregister.com</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p><em>Masayoshi Son, SoftBank CEO (Oct 2024 projecting 2035) </em><a href="https://www.reuters.com/technology/artificial-intelligence/softbanks-son-says-artificial-super-intelligence-exist-by-2035-2024-10-29/#:~:text=Artificial%20super%20intelligence%20will%20be,conference%20in%20Riyadh%2C%20Saudi%20Arabia">reuters.com</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Correct vs Good]]></title><description><![CDATA[Part 2: Can we have it both ways?]]></description><link>https://generalrobots.substack.com/p/correct-vs-good-8eb</link><guid isPermaLink="false">https://generalrobots.substack.com/p/correct-vs-good-8eb</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Wed, 26 Mar 2025 15:31:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7nOG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In <a href="https://substack.com/@generalrobots/p-156791844">part 1</a>, I talked about the difference between being correct (meets a spec) and good (meets a need).</p><h1>Conflicts Between Correct &amp; Good</h1><p>So obviously it is better to be both correct <em><strong>and</strong></em> good but there are conflicts between them.</p><h3>To be correct:</h3><ul><li><p>Go carefully</p></li><li><p>Long release cycles</p></li><li><p>Exhaustive testing</p></li><li><p>Culture of perfection</p></li><li><p>Don&#8217;t test at customer sites</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7nOG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7nOG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7nOG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg" width="480" height="203.10743801652893" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1210,&quot;resizeWidth&quot;:480,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7nOG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7nOG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5a669df-7cf9-4638-a391-f5691f8ddf36_1210x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">&#8220;Maybe we should have tried our new safety system before pushing the update to all our robots&#8221;</figcaption></figure></div><p></p><h3>To be good:</h3><ul><li><p>Go fast</p></li><li><p>Fast iterations</p></li><li><p>Fast testing</p></li><li><p>Culture of shipping</p></li><li><p>Must test at customer sites</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G4_X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G4_X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G4_X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg" width="222" height="446.6015625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1030,&quot;width&quot;:512,&quot;resizeWidth&quot;:222,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G4_X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 424w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 848w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!G4_X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd735a25-e97f-42b4-b1cc-718369060dc7_512x1030.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Is the new hallway passing behavior less annoying?&#8221; &#8220;I&#8217;m sure it is: all the unit tests passed.&#8221;</figcaption></figure></div><p>You can choose for yourself and your company where you want to be on each of these axes. And the right spot to be will change with the life of your product and company.</p><p>&#8220;Goodness&#8221; is something related to the product fit and can grow infinitely, while &#8220;correctness&#8221; is about how well implemented it is, and tops out at 1.0 (100% correct). I&#8217;m going to multiply them together to estimate the total value of a product.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Using this model explains why startups can move so fast and big companies get slower and slower over 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_!HF7H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HF7H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 424w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 848w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HF7H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png" width="1456" height="1054" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1054,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HF7H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 424w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 848w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 1272w, https://substackcdn.com/image/fetch/$s_!HF7H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3f1bb5-2f66-4d85-9a12-cce9ad9bf47d_1600x1158.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can see that at the big company, they have been working for a long time and have built a lot of goodness <strong>and</strong> correctness. Adding new goodness is still possible, but each step is a smaller percentage. Even a very small drop in correctness has the chance to wipe out hundreds of good features&#8217; worth of value. Big companies are paranoid about correctness, and rightly so. They have a ton of value to defend.</p><p>Startups, on the other hand, don&#8217;t have a ton of goodness or correctness. That means that a single new good feature is a much larger percentage improvement to the startup. In addition, the consequence of a drop in correctness is smaller.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><h2>Being correct slows you down</h2><p>Being more correct encourages things like exhaustive testing, a culture of perfection, compliance review, process driven release, etc. All of those things help protect correctness at the cost of slowing down iteration, because the easiest way to make it hard for things to regress is to make it hard for things to change.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kyw2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kyw2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kyw2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg" width="339" height="338.3391812865497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:513,&quot;resizeWidth&quot;:339,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kyw2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kyw2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd018c6-61e8-4709-a3c1-e5d121b7ff51_513x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;We&#8217;ve set it up so that code change has automated code coverage requirements, code review, special language-specific gatekeeper code review, mandatory manual QA, security review panel, privacy review panel, efficiency review panel, and staged rollout with automatic rollback! Now we can start building our MVP.&#8221;</figcaption></figure></div><h2>We often have an emotional bias towards correctness.</h2><p>Engineers like correctness. We are people who deal with systems and rules and valuing correctness has been trained into us.</p><p>Engineers coming from mature projects to early/experimental ones often try to bring big company best practices. They&#8217;ve seen smart people succeeding by doing things a certain way and it feels right to copy them. And maybe they've seen a small drop in correctness cause a huge drop in a big company&#8217;s value. But if you are early in discovering the shape of your product, the last thing you want to do is carve it out of stone.</p><p>Lastly, if you are not correct enough it is embarrassing. Customers seeing bugs is embarrassing. Shipping code that isn&#8217;t quite right is embarrassing. It is very hard to look at your boss and say &#8220;Yeah, I shipped a bug to the customer, and I still think I made the right tradeoff between speed and correctness&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fA_C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fA_C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fA_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg" width="290" height="350.60546875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:512,&quot;resizeWidth&quot;:290,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fA_C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fA_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17be54-69d2-4110-9625-c765733a6a56_512x619.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;What should we do differently? Nothing! We are perfect, brilliant, beautiful, and ship the exact right number of bugs to production.&#8221;</figcaption></figure></div><h3>Consequences</h3><p>Obviously it is best to get exactly the perfect balance between being correct and good, but what happens when you get it wrong?</p><p>If you aren&#8217;t correct enough then customers see bugs. If those bugs are bad enough they might fire you, but most of the time the consequence for a startup is embarrassment.</p><p>On the other hand if you aren&#8217;t good enough then you will find customers who order a small pilot, usually through their innovation team. They will use your robots occasionally, perhaps only when giving tours to VIPs. They won&#8217;t expand their deployment or will do so very slowly. Sales will be slow and expensive. You will always be &#8216;almost there&#8217; in terms of scale. You will have a bunch of unused robots sitting around (that you paid for, couldn&#8217;t sell, and are now getting slowly outdated) and you can&#8217;t raise more venture capital because you don&#8217;t have enough traction and you run out of money and die. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WEpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WEpD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WEpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg" width="298" height="252.60927152317882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:604,&quot;resizeWidth&quot;:298,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WEpD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WEpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b14ede4-cc9a-4af0-9386-ee2f1c0b429a_604x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;That sounds&#8230; very specific. Are you ok?&#8221;</figcaption></figure></div><p>This is how 99% of robotics startups die.</p><p>So, while you can die from lack of correctness,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> you are much more likely to die because your product isn&#8217;t good enough. That means you want to pick your sweet spot for &#8216;correct enough&#8217; given your maturity and focus 1000% of the rest of your time and attention on getting good as fast as you can.</p><ul><li><p>Build process and infrastructure to verify, as fast as possible, that you are at your minimum correctness bar.</p></li><li><p>Get great at release rollout and rollback so you reduce the consequences of shipping bugs.</p></li><li><p>Get robots into customer hands as fast as possible.</p></li><li><p>Remove tech debt that slows down iteration cycles.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p></li><li><p>Do good product development: (guess &#8594; try &amp; observe &#8594; iterate)</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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">If you like this subscribe below for more content (I try to post at least twice a year).</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><p>And if want to keep reading things like this I recommend <a href="https://substack.com/@generalrobots/p-156791844">Part 1 of Correct vs Good</a>, or my article on <a href="https://generalrobots.substack.com/p/tech-debt">Tech Debt</a>.</p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I don&#8217;t have a particularly rigorous reason why multiplying these things together gives total value, but it explains the different behavior of successful big companies vs successful startups really nicely. It's really satisfying when a model explains an observed phenomenon.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>If a startup introduces a 1 in 10,000 bug that requires one of their engineers to intervene they might not even hit it. And the odds of that feature being removed or completely rewritten before anyone ever hits it are reasonably high. If Google introduced a 1 in 10,000 bug that required manual intervention it would be a catastrophe.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Cruise arguably died from lack of correctness: robots that can kill people have a much much higher minimum correctness bar.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>It could be that your iteration cycles are slow because you keep finding regressions you&#8217;ve introduced. That is a sign that you are undershooting your minimum correctness bar, and should add more testing.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Correct vs Good]]></title><description><![CDATA[What's the difference?]]></description><link>https://generalrobots.substack.com/p/correct-vs-good</link><guid isPermaLink="false">https://generalrobots.substack.com/p/correct-vs-good</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 11 Feb 2025 18:56:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Being Correct</h1><h2>What does it mean to be correct?</h2><ul><li><p>Meets the spec</p></li><li><p>Bug free</p></li><li><p>Stable</p></li><li><p>Long uptime</p></li></ul><p>E.G. for robots:</p><ul><li><p>Doesn&#8217;t collide with things</p></li><li><p>Doesn&#8217;t get stuck navigating</p></li><li><p>Picks intended item &amp; places in correct bin</p></li><li><p>Reports errors</p></li></ul><p>Correctness is a bar to hit. And how much value you get from correctness is very non-linear. If your app is 50% bug free, it is an unusable buggy piece of crap. Even 80% bug free is probably still worthless. But somewhere you get to a point where it is correct enough to use and you jump up to close to 100% value.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D8xl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D8xl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D8xl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png" width="420" height="259.7" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1200,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Chart&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Chart" srcset="https://substackcdn.com/image/fetch/$s_!D8xl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!D8xl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F121b2093-0d0b-4f90-afa4-8ca6e527d432_1200x742.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It is basically impossible to get to 100% correct for any reasonably sized system. But getting closer and closer to 100% correct is very expensive. In general it is much easier to go from 0% correct to 90% correct than from 99% correct to 99.9% because you&#8217;ve fixed all the easy stuff. You have to start hunting down very rare and tricky issues.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zfp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zfp-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zfp-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png" width="450" height="278.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1200,&quot;resizeWidth&quot;:450,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Chart&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Chart" srcset="https://substackcdn.com/image/fetch/$s_!zfp-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!zfp-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1732b3eb-8675-44bb-8192-be8b9dd3fa94_1200x742.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>There&#8217;s a Correctness Sweet Spot</h2><p>If you combine these plots you get a plot of how much value you get from working on correctness vs. how much effort you put into it. And it shows that there is a definite sweet spot where putting more effort into correctness doesn&#8217;t get you much more value.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9dSi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9dSi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 424w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 848w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 1272w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9dSi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png" width="480" height="270.989010989011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:1456,&quot;resizeWidth&quot;:480,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9dSi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 424w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 848w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 1272w, https://substackcdn.com/image/fetch/$s_!9dSi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9a8dbe1-1e54-4558-9f74-1b61b302f066_1600x903.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You want your sweet spot a little in from the cliff so you have some wiggle room in case you have a small regression in correctness, or you have misestimated where your cliff is.</p><p>Different industries and problems have different cliffs in different places. A recipe app has a much lower bar of correctness than a surgical robot or rocket. Also certain parts of a given product have different cliffs. (Hardware generally has a higher bar of correctness than software because changing it is difficult, and collision systems have a higher bar of correctness than business logic because hurting people is bad.)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IEmW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IEmW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IEmW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg" width="431" height="383.7773913043478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:575,&quot;resizeWidth&quot;:431,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IEmW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IEmW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff216ca6e-4053-4a3c-b4fb-e90849c530d0_575x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">It successfully packages 49 out of 50 gift boxes, and only catches on fire twice a week</figcaption></figure></div><h2>How do you get correctness?</h2><p>Activities that give correctness are things like:</p><ul><li><p>Code review</p></li><li><p>Unit tests</p></li><li><p>QA</p></li><li><p>Manual testing</p></li><li><p>Release testing</p></li></ul><p>In general, getting correctness is a defensive activity: it is about setting up technology and processes to prevent anything that is correct from going bad so you can slowly ratchet up correctness over time.</p><h1>Being Good</h1><h2>What does it mean to be good?</h2><ul><li><p>Fits a need</p></li><li><p>Easy &amp; joyful to use</p></li><li><p>Creates a ton of value</p></li><li><p>Feels like it costs way less than its worth</p></li><li><p>Solves a problem people care about</p></li></ul><p>Being good is about meeting a market need, creating value and delighting customers. Unlike correctness, there is no upper bound on how good you can make something, and it is always more valuable to make something better.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HpKA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HpKA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HpKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png" width="458" height="283.19666666666666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1200,&quot;resizeWidth&quot;:458,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Chart&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Chart" srcset="https://substackcdn.com/image/fetch/$s_!HpKA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!HpKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff796a1c7-07b3-49a3-988e-7d47093c5390_1200x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Like correctness, it gets harder and harder to make a good thing better, but not as steeply. Instead of hunting the 1 in 10,000 bug you get to explore the space of all the things you could change about your product that would make it more useful to people.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r8Cr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r8Cr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r8Cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png" width="528" height="326.48" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1200,&quot;resizeWidth&quot;:528,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Chart&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Chart" srcset="https://substackcdn.com/image/fetch/$s_!r8Cr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!r8Cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80223ec2-79c7-4b9d-9f7e-f20ce64d4486_1200x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Which means that the value-to-effort curve ends up having diminishing returns, but not asymptotic returns, which is way better.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6zqt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6zqt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6zqt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png" width="486" height="300.51" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1200,&quot;resizeWidth&quot;:486,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Chart&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="Chart" srcset="https://substackcdn.com/image/fetch/$s_!6zqt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 424w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 848w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 1272w, https://substackcdn.com/image/fetch/$s_!6zqt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240cfd92-dd2a-43b3-a500-694cc931840d_1200x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>How do you get good?</h2><p>In order to make your product good, you follow the product development cycle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dajR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dajR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dajR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dajR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dajR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dajR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg" width="310" height="329.8008241758242" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1549,&quot;width&quot;:1456,&quot;resizeWidth&quot;:310,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dajR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dajR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dajR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dajR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dd20c86-9cfd-42a6-a5d3-26563df307a6_1504x1600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Making a guess</h3><p>To make a guess you think about your product and the people who will use it, using all the information that you have and you guess what the product should be like. This can be things like &#8220;there should be a button to log out&#8221;. Or things like &#8220;If the robot detects a person in the chair, it should skip vacuuming it&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jUso!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jUso!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jUso!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jUso!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jUso!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jUso!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg" width="426" height="317.0232558139535" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:688,&quot;resizeWidth&quot;:426,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jUso!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jUso!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jUso!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jUso!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf728a4-dc29-49ec-9f42-cdccab1a9abf_688x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;You are experiencing cleansing. Do not resist&#8221;</figcaption></figure></div><p>The more you understand your customer the better your guesses will be. Some people are better guessers than others. (We usually call them product managers). And sometimes your customers will have good guesses. (Though more often you will have to try and guess at the need that made them think of that feature and figure out a good way of meeting 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_!mp_o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mp_o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 424w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 848w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 1272w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mp_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png" width="370" height="316.63461538461536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1246,&quot;width&quot;:1456,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mp_o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 424w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 848w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 1272w, https://substackcdn.com/image/fetch/$s_!mp_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d570ee-433a-4e91-8b7d-435fa55ac7d1_1600x1369.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;The robot should make a continuous loud beeping when it is low on battery&#8221;</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ONRe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ONRe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ONRe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg" width="372" height="266.7563025210084" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:714,&quot;resizeWidth&quot;:372,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ONRe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ONRe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00c1c4b-e83c-43f1-a7e9-17eda790e1bf_714x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;They need a way to manage battery levels of the fleet&#8221;</figcaption></figure></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PlbW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PlbW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 424w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 848w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 1272w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PlbW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png" width="370" height="326.2912087912088" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1284,&quot;width&quot;:1456,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PlbW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 424w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 848w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 1272w, https://substackcdn.com/image/fetch/$s_!PlbW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb61d8040-3826-4118-9b4e-1d37ba3800d1_1600x1411.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;We added autodocking to recharge and phone alerts in the app if a bot gets low.&#8221; &#8220;That's perfect!&#8221;</figcaption></figure></div><p>But the difference between great guessers and average guessers is, in my experience, pretty small. Because the average guess is wrong. Wildly wrong. The best guessers are probably right 60% of the time. This is why so much of startup advice is to ship your MVP as fast as possible. Taking any reasonable guess and trying it out is <strong>much</strong> more efficient than agonizing over the &#8220;perfect&#8221; guess.</p><h3>Trying it out</h3><p>Trying it out means building a version of your guess and using it. There is a spectrum of ways to try it out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zk3o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zk3o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 424w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 848w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 1272w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zk3o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png" width="452" height="415.989010989011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1340,&quot;width&quot;:1456,&quot;resizeWidth&quot;:452,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zk3o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 424w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 848w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 1272w, https://substackcdn.com/image/fetch/$s_!zk3o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F913bc02e-9d7a-4354-a7fc-5bf6720c2838_1600x1473.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In the beginning you can easily tell if a guess is good or bad by trying it yourself.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7iuz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7iuz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7iuz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg" width="524" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:524,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7iuz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7iuz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa417d749-6d7e-4250-b8e9-f81c66a5c913_524x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Maybe having robots read out any error messages out loud was a bad idea. (Based on a true story)</figcaption></figure></div><p>Robots are hard and expensive to deploy so I&#8217;ve often hired a team of test users to fake-use the product. (At Robust AI we have a little fake warehouse next to our desks and hire pickers to come and pick fake e-commerce orders with our robots twice a week)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iBgA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iBgA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iBgA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg" width="471" height="410.8211243611584" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:587,&quot;resizeWidth&quot;:471,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iBgA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iBgA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44da5129-26c0-40ed-9372-ea1c7fadd82b_587x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Every tester makes the same mistake using our robot. Is our UI bad? No it is the users who are wrong&#8221;</figcaption></figure></div><p>Early on, many guesses are so obviously bad that trying them yourself immediately gives good feedback. But later, each change is a smaller step and until you start watching customers use it you will have some uncertainty (because your testing might be different in some way from the real customer use). Eventually you get to the point where the uncertainty is larger than the size of the change and you can&#8217;t tell if you are making it better or worse. That means that there is an upper bound on how good you can make a product without watching real customers try it.</p><p>And, for the same reason that humans are pretty bad at guessing what product features will be good, we are also pretty bad at guessing how our testing will be different from reality.</p><p>All of that together means that until you are testing with customers, there is a ceiling of how good you can make your product, and that ceiling is pretty low.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z0Am!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z0Am!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 424w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 848w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 1272w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z0Am!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z0Am!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 424w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 848w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 1272w, https://substackcdn.com/image/fetch/$s_!z0Am!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb03b1cb-b3d3-4a63-9ca8-069ded821d95_1600x952.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Iterations: more is better</h3><p>Why do people tell startups to &#8220;iterate like crazy&#8221;? In each iteration you make some amount of progress up your &#8216;good product&#8217; ramp. That amount of progress in each iteration can be &#8220;engineering limited&#8221; or &#8220;guess-quality limited&#8221;.</p><p>If you have a fixed release cycle then you take the things you know from watching customers, order them by how much goodness you think they add divided by how much effort they take and work off the top of the list until your next release.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>Example:</p><ol><li><p>Show an arrow indicating where the pick is.</p></li><li><p>Add happy beep after correct scan</p></li><li><p>Faster navigation in open corridors</p></li><li><p>Stop parking motion earlier</p></li><li><p>Give humans more clearance when passing</p></li><li><p>More confident motion through doors.</p></li></ol><p>If you do this, you will always feel &#8220;engineering limited&#8221; because that list of things is much larger than you have time to do.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> But generally, iterations longer than a week are guess-quality limited. That is because if you get to watch a customer use the product after just doing item (1) and (2) you will probably immediately have a new guess for an improvement that is way more valuable than item (4) or (5) on your list.</p><p>When you have long iteration cycles you are trapped doing the low value stuff on your list because you only learn about new high-value stuff by iterating.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ieNK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ieNK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 424w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 848w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 1272w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ieNK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png" width="1456" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ieNK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 424w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 848w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 1272w, https://substackcdn.com/image/fetch/$s_!ieNK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8aea8fb-2fec-40bd-9c89-28cf14ba67b5_1570x980.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With slower iterations you are &#8220;guess-limited&#8221;. Or maybe more accurately &#8220;learning-limited&#8221;. A quarter long iteration is not much better than a one month iteration, but takes three times as long.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JXXn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXXn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 424w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 848w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 1272w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png" width="1456" height="908" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:908,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXXn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 424w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 848w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 1272w, https://substackcdn.com/image/fetch/$s_!JXXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F613ad5b3-0bb7-4480-adc8-e1700ab68837_1600x998.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Somewhere around 1-2 week iterations you tend to stop being learning limited.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aNXw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aNXw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 424w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 848w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 1272w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aNXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png" width="1456" height="886" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:886,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aNXw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 424w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 848w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 1272w, https://substackcdn.com/image/fetch/$s_!aNXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe66f3b2-e3d8-478e-9838-92422f008e41_1600x974.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Chuck Rossi, the release manager when I worked at Facebook<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>, observed that there seemed to be a fixed amount of change that could fit in a single deployment. So to increase company velocity he increased deployments of the website from weekly to daily, and then to twice a day and took deployments of the mobile apps from six to four to two week cycles.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><p>Iterate like crazy!</p><h1>Shameless Teaser</h1><p>Correct and Good are different, and require different kinds of effort. Sometimes they are even in direct opposition. How should you divide your time? How do you know if you have the right blend? Check out <a href="https://open.substack.com/pub/generalrobots/p/correct-vs-good-8eb?r=5gs4m&amp;utm_campaign=post&amp;utm_medium=web">Part 2</a>:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This is basically tautological since I&#8217;ve defined &#8216;good&#8217; as creating value, so being &#8216;more good&#8217; means you are creating more value. But I think it is worth calling out in contrast to correctness, and to help explain what I mean by &#8216;goodness&#8217;.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Another advantage of this approach is you can also tie it into a software release process to catch regressions and find long tail bugs, which are more common &amp; harder to test for in robotics than most other kinds of software.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Or, more commonly, you do some worse version of this that has phrases like &#8220;technology roadmap&#8221; so you can feel justified about not working on the most important thing for your product.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Hopefully. If you ever don&#8217;t have a backlog of things you think are probably good ideas to make your product better, something has gone horribly wrong and you need to watch your customers use your product more.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Long, long ago</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Very interesting article by Kent Beck on this <a href="https://open.substack.com/pub/tidyfirst/p/slow-deployment-causes-meetings?r=5gs4m&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">here</a>. Not sure I buy the final conclusion: that release-limited output causes boring meetings, but I absolutely agree that &#8216;changes per release&#8217; seems really inelastic.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Humanoid Robots: Dollars and GPTs]]></title><description><![CDATA[Whats With All The Humanoid Robots? Part 2]]></description><link>https://generalrobots.substack.com/p/humanoid-robots-dollars-and-gpts</link><guid isPermaLink="false">https://generalrobots.substack.com/p/humanoid-robots-dollars-and-gpts</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 21 May 2024 15:15:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>(This is Part 2. <a href="https://generalrobots.substack.com/p/whats-with-all-the-humanoid-robots">Part 1</a> was about various ways robots could be human like and is not required to enjoy part 2) </p><p>In part 1, I talked about the various benefits and drawbacks of making robots that mimic human form, but we didn&#8217;t actually get to answering the core question: &#8220;Why are there so many humanoids <em>now?&#8221;</em> and &#8220;Is this a good idea?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IhYy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IhYy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IhYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg" width="440" height="296.42105263157896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:760,&quot;resizeWidth&quot;:440,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IhYy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IhYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd45bb8-9db5-42ba-9d3b-b87b0c61fe4d_760x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Extrapolating, we see that by 2040 there will be 3 humanoid robot startups per man, woman and child on earth&#8221;</figcaption></figure></div><p>To answer &#8220;why now?&#8221; we have to ask &#8220;what has changed?&#8221; Here is a timeline of what I consider the breakthroughs in state-of-the-art which enable what we see today.</p><ul><li><p>2018<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>: Boston Dynamics releases their first parkour <a href="https://youtu.be/LikxFZZO2sk?feature=shared">video</a>. Bipedal motion works well enough to count on.</p></li><li><p>2019: Convolutional deep neural networks make perception (object detection/localization) work well enough to do manipulation.</p></li><li><p>2022: ChatGPT3 convinces everyone that natural language is going to work well enough to power actual products.</p></li><li><p>2023: Tesla releases videos of their humanoid robots. VCs notice and funding for humanoids is suddenly much more attainable.</p></li><li><p>2024: Behavior cloning<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> for manipulation starts to work well enough for tech demos and videos.</p></li></ul><p>Other helpful general trends:</p><ul><li><p>Batteries have gotten much more energy-dense and much less expensive.</p></li><li><p>Rapid prototyping has gotten much cheaper and faster (both from 3D printing and more automation in prototype-scale traditional manufacturing).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p></li></ul><p>But is that enough? Are these the missing ingredients? To answer that, let's talk about money.</p><h1>Making Money</h1><p>The purpose of a robot company is to replace expensive human labor with cheap robot labor.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_MuV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_MuV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 424w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 848w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 1272w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_MuV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png" width="476" height="258.86478454680537" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1346,&quot;resizeWidth&quot;:476,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_MuV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 424w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 848w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 1272w, https://substackcdn.com/image/fetch/$s_!_MuV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a5b548f-ec97-44c8-b363-ec4d70016f65_1346x732.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That &#8220;value produced&#8221; is split between the robot company and the customer. The customer saves money (which is why they bothered buying the robots) and they pay the start-up using part of the money saved, so that number has to be big enough to make it worthwhile for both parties. Let's do some back-of-the-envelope math.</p><h3>Cost to Run Robots:</h3><p>We&#8217;ll take a very low-ball guess at $60k.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p>Lifetime of a robot: 3 years.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><p>Which means we get an annual hardware cost of $20k.</p><h3>Cost of Support</h3><p>Let's say that you&#8217;ve got pretty good reliability despite being cutting edge hardware. Your robots only need service every 6 months on average (either routine maintenance or repairing something that has broken).&nbsp;</p><p>Each time that happens you have to ship it back to your repair facility (say $300 each way) and spend 3 hours repairing it ($300 in technician costs, amortizing in downtime for your technicians because they are not used 100% of the time). We&#8217;ll round up to $1k a repair. Plus you don&#8217;t do work for probably a whole week while it gets resolved, costing another 1k in lost revenue. $2k twice a year is $4k.</p><p>Cost of support: 4k per year per robot.</p><h3>Cost of Supervision</h3><p>Robots are less flexible and adaptable than humans, get confused easily and sometimes get stuck doing the wrong thing. The state of the art is to have a &#8216;call center&#8217; of folks who can remotely supervise robots and unstick them. A huge lever on the economic viability is how many robots a single remote supervisor can handle. 1:1 is an obvious non-starter, but there is an inflection point around 5:1 where you can no longer have people watching camera feeds ready to jump in and help and have to have the robots recognize that they are in a pickle and <em>ask</em> for help. Let's say that we&#8217;ve solved that problem, for the most part, and a single remote operator can supervise 50 robots. That person costs 50k a year.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> That adds another $1k a year per robot.</p><p>We also have to have someone on-site to supervise and assign jobs, and do smaller troubleshooting and maintenance. Let&#8217;s say a 20 robot deployment takes 10% of one person&#8217;s time to manage. (We&#8217;ll dump the responsibility on our IT department because robots are kind of like computers). 10% of 200k divided by 20 robots is another 1k per year.</p><p>Cost of Supervision: 2k per robot per year</p><p>Total cost of operating the robot: $26k per year</p><h3>Value Created</h3><p>The &#8216;cost of human labor saved&#8217; is pretty straightforward. It is the fully loaded cost of the human. Fortunately for robotics startups, this is quite a bit higher than minimum wage. In Silicon Valley, when you add taxes, health-care, salaries for their supervisors and profit for the contracting company, someone to clean an office building can easily be more than $70 an hour. For this reason, labor intensive workplaces, like warehouses, tend to not be in the heart of Silicon Valley, and $30 an hour is probably a more reasonable national average.&nbsp;</p><p>Annual savings = hourly-cost x hours-per-shift x shift-per-week x weeks-per-year</p><p>Making some reasonable assumptions:</p><p>$30 x 8 hours/shift x 6 shifts/week x 52 weeks/year</p><p>$74880. We&#8217;ll round up to $75k</p><p>$75k seems pretty darn good. With our cost of $26K that leaves $49k of value, meaning we get a <strong>188% return on our investment. </strong>Not bad!&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1XeJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1XeJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1XeJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg" width="389" height="314.64139020537124" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:633,&quot;resizeWidth&quot;:389,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1XeJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1XeJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83313589-0f7e-4ed4-8ce9-a3e0d402f299_633x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is how I assume that looks</figcaption></figure></div><h3>But wait, there&#8217;s less!</h3><p>We&#8217;ve made an assumption that is really, really dodgy. We are assuming an hour of robot labor is as valuable as an hour of human labor. There are two big reasons to suspect that is not the case.</p><h4>1: Robots are slow</h4><p>There is a reason that you see a ton of sped-up robot videos. Robots work slowly. I love this video from 1X. It is an incredible (and incredibly honest<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a>) depiction of the state of the art.</p><div id="youtube2-iHXuU3nTXfQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;iHXuU3nTXfQ&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/iHXuU3nTXfQ?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>The tech here is amazing, and (although I&#8217;m sure that video took many takes to get), the robots must work pretty reliably to get that many things working all in a row. But you can see that the robots are doing pretty simple things about 2x-4x slower than a human would.&nbsp;</p><p>The ratio is better for carrying things long distances (humanoids are probably a little faster than half human walking speed, i.e. between 1x and 2x) and worse for fiddly manipulation things. This (incredible) video shows some very challenging manipulation tasks:</p><div id="youtube2-1EAsn71O9yA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1EAsn71O9yA&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/1EAsn71O9yA?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 is super impressive. This video shows things beyond what I thought was state of the art. But it also takes 45 seconds to put the shirt on a hanger, a task that probably takes a human less than three (a ratio of about 10x).&nbsp; I remember doing a focused speed-up sprint on our table wiping at Everyday Robots. We parallelized motion and planning and increased arm speed and pre-computed things so that they&#8217;d be ready when we needed them and managed to get a table-wipe down to about <a href="https://everydayrobots.com/_next/static/videos/LapgFhxumE14MagcPQSeK-6638be30acca8b76b8cabc8f2ba61633.mp4">45 seconds</a>. Then I timed a human and they did a better job in 4.5 seconds (also a ratio of about 10x).</p><p>So if we are projecting the state of the art forward 2-3 years, we should probably give robots at least a <strong>3x speed penalty</strong>, meaning it takes three robots to do the work of one human.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> Faster than that would be assuming that autonomous robots can do things faster than we can teleoperate them, which feels like an open research problem.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a> Safety also gets harder if you let robots move that fast.</p><h4>2: Robots are less adaptable</h4><p>It turns out that actual jobs are made of dozens of individual tasks. Automation tends to automate tasks one-at-a-time. This is a place where humanoids have more potential than other kinds of robots. In 2011 I was working at Anybots Inc and we were looking into teleoperated security, and were very enthusiastic until we interviewed someone who did after-hours security work and he told us that in addition to &#8216;walking around and looking for bad guys&#8217; his job consisted of testing all the doors to make sure they were locked, unplugging the coffee machine if it had been left on, turning off lights, etc, etc. We had only considered the main task, and not realized the whole slew of other smaller tasks that were part of that job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-VzF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-VzF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-VzF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg" width="302" height="329.1328125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:512,&quot;resizeWidth&quot;:302,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-VzF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-VzF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe068f445-aad5-49b4-a98e-01eb5036a3f4_512x558.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If there is a human picking items in a warehouse and all the orders get picked, that person will switch to something like refilling or doing inventory or preparing labels or folding and taping shipping boxes, or any of the countless other tasks. Even a robot (humanoid or otherwise) who could physically do those tasks would go idle during that time unless you had programmed/trained those behaviors. The lack of flexibility costs <em>at least</em> 15% of the robot&#8217;s time.&nbsp;</p><p>So we take our 75K, subtract 15% for the flexibility penalty ($64k) and divide by 3 for the productivity ratio and we get $21k of value produced per robot per year.</p><p>Now we subtract our $26k costs and all of a sudden humans are cheaper than robots.</p><p>Womp-womp.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C33a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C33a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C33a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C33a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C33a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C33a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg" width="322" height="351.55859375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:512,&quot;resizeWidth&quot;:322,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C33a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C33a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C33a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C33a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62484f23-4959-4292-8188-e4fc47e8bd04_512x559.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;But you are allowed to hit them with hockey sticks, if you want! That's worth something, right?&#8221;</figcaption></figure></div><h3>What can you do?</h3><p>Your options are rough. You can try and find a customer that operates more than 1 shift per day, because the same robot can work both shifts.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a> However you start to need to spend more of your shift charging instead of just charging between shifts and your robot probably doesn&#8217;t last as many years and needs servicing more often if you run it more hours per day.</p><p>You can try to reduce the cost of your robot, but cutting the cost in half is going to be very hard. (Getting your cost down to $60k is already pretty optimistic. Shooting for $60k and accidentally ending up at $120k feels likely. $30k feels nearly impossible).&nbsp;</p><p>So the biggest lever you have is your productivity ratio. Getting down from 10x-3x to between 2x and 1x is the most plausible way to make the math work. So this seems like the most important metric humanoid robot startups should track.</p><p>I made<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a> a &#8220;Robotics Startup CEO Simulator&#8221; <a href="https://robobenjie.github.io/humanoid_ceo_simulator/">website</a> so you can fiddle with numbers and see how they work out:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://robobenjie.github.io/humanoid_ceo_simulator/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GJWP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 424w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 848w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 1272w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GJWP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png" width="1456" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://robobenjie.github.io/humanoid_ceo_simulator/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GJWP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 424w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 848w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 1272w, https://substackcdn.com/image/fetch/$s_!GJWP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F977b2bd1-4dea-4ee8-9b53-0fbcb1cef77f_1600x481.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>What about ChatGPT? Doesn&#8217;t AI solve all of this?</h1><p>LLMs (large language models like ChatGPT) do seem poised to solve two real problems in robotics.&nbsp;</p><p>The first is dealing with the really long tail of weird shit the world will throw at robots.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ox0I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ox0I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ox0I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg" width="206" height="268.36328125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:667,&quot;width&quot;:512,&quot;resizeWidth&quot;:206,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ox0I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ox0I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9adb2616-18cf-45fd-a4a9-7edef0a1227e_512x667.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Unattended product returned to shelf&#8221;</figcaption></figure></div><p>There are thousands of things that could happen, but each one is very rare, and it is basically impossible to enumerate them all and provide correct responses for them. LLMs, however, do seem to have encoded some amount of common sense.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L8iB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L8iB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L8iB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg" width="424" height="297.78875171467763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:729,&quot;resizeWidth&quot;:424,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!L8iB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L8iB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd39beb4d-c8a5-43de-b490-437a3bc155f8_729x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Attention humans! There is a raccoon in the facility. Please contact animal control. I will stop work immediately&#8221;</figcaption></figure></div><p>The second problem LLMs seem like a good fit for is high level planning to connect together lower level primitives.</p><p>Lets watch this video from Figure AI:</p><div id="youtube2-0FGtASjXCLI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;0FGtASjXCLI&quot;,&quot;startTime&quot;:&quot;19s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/0FGtASjXCLI?start=19s&amp;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's a very slick video showing some amazing tech. It can be hard to guess from videos of robot demos what's actually going on, but I commend @coreylynch (the human in the video) for explaining what we&#8217;re seeing in this <a href="https://twitter.com/coreylynch/status/1767927506332721154">tweet</a>. The LLM is able to interpret spoken requests and select from pretrained execution models (he doesn't specify but these must be behavior-cloning.)</p><p>It&#8217;s funny, because I think the thing most people find impressive with the video is the conversational part, but that strikes me as a bit of demo showmanship. My guess is that the GPT input-output looks something like.</p><p>Input:</p><ul><li><p><code>human_said: &#8220;hey, can I have something to eat?&#8221;,</code></p></li><li><p><code>camera_image.png</code></p></li><li><p><code>available_controllers&nbsp;</code></p><ul><li><p><code>give_apple_to_person</code></p></li><li><p><code>put_crumpled_paper_in_basket</code></p></li><li><p><code>put_cup_in_drying_rack</code></p></li><li><p><code>put_plate_in_drying_rack</code></p></li></ul></li></ul><p>Output</p><ul><li><p><code>say: &#8220;Sure thing&#8221;</code></p></li><li><p><code>selected_controller:</code></p><ul><li><p><code>give_apple_to_person</code></p></li></ul></li></ul><p>I say, &#8220;I bet it looks like that,&#8221; because that&#8217;s how I would do it. It is cool that LLMs are smart enough to have the context to select that controller, but (if I&#8217;m right about the general structure and generality) you can tell that the secret sauce here isn&#8217;t really the LLM. The bottleneck on being multi purpose is still the dexterity, not the natural language interface. Given the small list of things this robot has controllers for, the speech part could be faked with some speech-to-text and a bunch of regexes. It would be more brittle, but would still work. And each time you wanted to add another task you would spend hours collecting teleop demonstrations, hours training a new neural network and 3 minutes adding another regex. Sure, it would break if you said, &#8220;I&#8217;m hungry&#8221; instead of &#8220;Can I have something to eat&#8221;, but I bet it breaks now if you say &#8220;pass me the plate&#8221; because there is no give_human_plate controller.</p><p>It certainly feels like we&#8217;re living in the future when you watch the conversation, but the value the LLM is adding, in terms of the economics of the business, goes towards the 15% flexibility penalty. No, the thing that blows my socks off with that video is that<em> absolutely gorgeous</em> two handed plate grasp. It is truly a thing of beauty.&nbsp;</p><p>If you can tell robots to do other tasks in their down time (and the LLMs can figure out how to actually do those things <strong>and</strong> you have appropriate controllers to accomplish them), then they can be busy more of the time. But we only discounted 15% for flexibility. Even if LLMs gave you enough stuff to stay constantly busy that is a very small change to your viability, where the speed of productive work and cost of the robot are both big levers on viability.&nbsp;</p><p>That's why that plate grasp is what impresses me so much. It is very close to human speed.</p><h3>Behavior Cloning Is All You Need?</h3><p>Behavior cloning suddenly feels like perception did 10 years ago. You can make it work in narrow domains by overfitting to a small problem. In both cases you collect many hours of labeled data and end up with something that works nicely as long at it matches the data you collected very very closely. But that's not what perception feels like today.</p><p>2014: Perceive this bottle on this background.</p><p>2019: Any bottle, any background.</p><p>2024: Pick up this plate from your right and put it into this basket on your left&nbsp;</p><p>2029: &#8230;?</p><p>Today you can basically assume perception will work well enough for your problem. If learned manipulation from demonstration is on that trajectory it is a <strong>big fucking deal.</strong> This could be our solution to the <a href="https://generalrobots.substack.com/p/so-you-want-to-do-robots-part-2-what">dexterity problem</a>.</p><p>It&#8217;s not guaranteed that it is on the same trajectory. The tipping point for perception was internet-sized training sets, which will be much harder to come by for robotics. The two ways I can see it happening are:</p><ol><li><p>Folks figure out how to package and sell &#8220;fine tuning&#8221; a robot to a particular task and location. You demonstrate/teleop a new task for a few hours and then the robot will be able to do that task in that place with minor variation. Make robot-plus-learning-toolkit into a product, sell that product to lots of people, and use everyone&#8217;s data to bootstrap more and more general models which give you better starting points for fine tuning which give you more performance which gives you more customers.</p></li><li><p>Figure out how to do transfer-learning from videos of humans doing things so you can use a data source like YouTube to bootstrap your model.&nbsp;</p></li></ol><p>Option 2 is a reason you might want to bet on humanoids. If someone can make that transfer work (though it does not seem guaranteed that it <em>will</em> work) then I can imagine using &#8220;robots that are human shaped&#8221; helping with the transfer. If that's what's needed, then it is absolutely worth the extra cost and complexity of the human form. That's a lot of &#8216;if&#8217;s though.</p><h3>Is it a Humanoid Revolution or a Bubble?</h3><p>This is the big question, and I really don&#8217;t know. I&#8217;m voting with my time, working at Robust AI on a decidedly non-humanoid robot: one that puts a heavy emphasis on simplicity, low cost, and short term ROI. It's also one that skews much more heavily towards being a tool, rather than a servant. We are trying to build something more like a working dog than an employee.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LfwH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LfwH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LfwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg" width="840" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:840,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LfwH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LfwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a64f737-0728-4c73-aa75-4d966b0608fc_840x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m here because, after 8 years working on general purpose robots at Google X, I wanted to build something that we could use to find market fit, deploy and scale quickly. Humanoids are the high-risk-high-reward choice, and I&#8217;m currently excited to try something with a high probability of large deployments to real customers.</p><p>I&#8217;m not saying humanoids aren&#8217;t going to happen, but there are a lot of challenges to be solved before the economics of humanoids can work out. The progress is amazing but making the value larger than the cost is really hard: folks are going to have to nail both &#8220;very low cost robots&#8221; and &#8220;high productivity speeds&#8221;. On the other hand, technology is moving a lot faster than I thought it would a year ago. It is an absolutely incredible time to be a roboticist, and we won&#8217;t have to wait very long to find out what the future holds.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/humanoid-robots-dollars-and-gpts?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/humanoid-robots-dollars-and-gpts?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p>Thanks to Michael Quinlan, Rodney Brooks and Mrinal Kalakrisnan for reading an early draft of this post.</p><p><br>About the Author: Benjie has programmed robots at startups and Google X&#8217;s Everyday Robots and is currently Director of Robotics at <a href="https://www.robust.ai/">Robust AI</a>, where he hopes to ship robots disguised as shopping carts to customers who pay money for them.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>All years are very rough approximations of processes that, in reality happened over the course of many years</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Behavior Cloning is many human demonstrations (most often hours of teleoperating the robot) to train a Neural Network to do the demonstrated task.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>I was blown away to hear that you can now order a relatively complex anodized sheet metal part about the size of a shoe for $35, with a turnaround of 3 days from uploading the file to having the part in your hand.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>There are other reasons someone might prefer robot work to human work, like lack of sick days (though anyone who assumes their robots will never be down for a day hasn&#8217;t worked with early stage robots) and scaling the labor up and down easily, but those tend to be secondary considerations. If the robots are more expensive, or even only slightly cheaper than human labor, I think it's going to be tough to break out of <a href="https://generalrobots.substack.com/p/so-you-want-to-do-robots-part-3-how">pilot purgatory</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Everyone is <s>claiming</s> hoping that they can make robots for much cheaper than that, but it's going to be really hard. Economies of scale only buy you so much in electromechanical systems. When I asked Justine Rembisz, the lead mechanical engineer here at Robust AI, her guess for quantities of 10,000 was $150k, or maybe $120k if you really worked at it. The low cost single robot arms are $20k and the absolute cheapest small industrial arms are $6k. Your humanoid has 2 arms and 2 legs. Boston Dynamics sells their quadruped for $80k which means their cost is probably $60k or more. We&#8217;ll be extra generous and say this $60k is COGS not BOM so it includes assembly, quality testing, manufacturing yields and shipping. On the other hand, Unitree sells a chihuahua-sized 15 DOF quadruped for $3,700 and claims their child-size humanoid will be only 16k. I just have no idea how they are doing that.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>&nbsp;This is admittedly pretty low for the long term, but very reasonable for the first few generations.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>Because they live in what we euphemistically call a &#8216;low-cost labor region&#8217;.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>I believe that the origin of the name of the company comes from a commitment to show real videos at 1x speed, i.e. not cheating.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>You could also potentially solve this by making the robot work 3x as long. A robot could potentially do one 8 hour shift of work in 24 hours of operation, but you probably need someone around to supervise it and not all jobs can be shuffled around like that. More on this below.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>Though I hear from someone working on the research side that folks are actually getting some success playing teleop demonstrations on &#8216;fast forward&#8217; during training, which is both hilarious and amazing.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>One of the really nice things about designing cart-robots is you're not really tight on space inside the robot so you can shove a ton of batteries inside for a very long battery life. That's much harder to do in a humanoid which takes a lot more power to move (rough order of magnitudes: 500W for humanoid, 50W for wheeled robots) and has a lot less space available for batteries.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>OK, ChatGPT made a website, but was the one who asked it to.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[What's With All the Humanoid Robots? ]]></title><description><![CDATA[If you follow robotics at all you may have noticed that there has been an explosion of humanoid robot startups. What's with that? Why humanoids? Why now?]]></description><link>https://generalrobots.substack.com/p/whats-with-all-the-humanoid-robots</link><guid isPermaLink="false">https://generalrobots.substack.com/p/whats-with-all-the-humanoid-robots</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 07 May 2024 15:17:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you follow robotics at all you may have noticed that there has been an explosion of humanoid robot startups. What's with that? Why humanoids? Why now?</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OvE6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OvE6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OvE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg" width="314" height="237.12094395280235" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:678,&quot;resizeWidth&quot;:314,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OvE6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OvE6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9cc06db-a69e-47af-bc6a-033f076de32d_678x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">&#8220;I donno. I&#8217;ve always wanted to work on them anyway, but now that Musk is doing it, I finally could get funded?&#8221;</figcaption></figure></div><p>There's a lot to unpack so this will be a two part post. In this part we&#8217;ll talk about what we even mean by &#8220;humanoid&#8221;, and the advantages and challenges of mimicking various human body parts. In part two we&#8217;ll dive into the economics of humanoid deployments and how LLMs (Large Language Models, like ChatGPT) enter the picture. By the end we won&#8217;t have any magical answers, but hopefully you&#8217;ll leave with some frameworks for thinking about humanoid robots.</p><h1>What is a humanoid?</h1><p>The question of &#8220;why humanoids&#8221; gets confusing because &#8220;humanoid robots&#8221; make a bunch of different promises. We&#8217;ll talk about a few different axes.</p><p>Generally when people think of a humanoid robot they imagine a robot that&#8230;</p><ul><li><p>Looks like a human,</p></li><li><p>Works in human environments,</p></li><li><p>Is multi purpose,</p></li><li><p>Is able to be instructed and interacted with like a human.</p></li></ul><h2>Why look like a human?</h2><p>When you ask folks why they are working on humanoids you usually get an answer about how the world is designed for humans so robots shaped like humans should succeed in our environment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zf_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zf_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zf_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg" width="314" height="337.3046875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:550,&quot;width&quot;:512,&quot;resizeWidth&quot;:314,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zf_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zf_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb8032b2-c8a6-4396-a42a-66387162a903_512x550.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Chop-o-matic-bot cannot prepare your dinner because Chop-o-matic-bot cannot fit through the door&#8221;</figcaption></figure></div><p>There is an implicit promise that, because it is human shaped, it ought to be able to do things that humans do now, and more, ought to be able to do them without requiring big changes to your facility.&nbsp;</p><p>There is also a promise that, because it is shaped like a human, it will be flexible enough to do many different tasks that humans are able to do.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CzCL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CzCL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CzCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg" width="334" height="238.17270194986074" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:718,&quot;resizeWidth&quot;:334,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CzCL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CzCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a9771bb-830d-4101-bea9-6cc54e96edac_718x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">&#8220;OK chop-o-matic-bot we&#8217;ve enlarged all the doors, can you make us some pasta?&#8221; &#8220;Chop-o-matic-bot only makes chopped salads. Would you like a chopped salad?&#8221;</figcaption></figure></div><p>Obviously just being human shaped isn&#8217;t enough: you also need the strength, dexterity, perception and intelligence to <em>accomplish</em> those tasks. Being human shaped is also not required. One could imagine a multi-purpose robot that worked in unstructured human environments that looked nothing like a human. And you certainly don&#8217;t need to be perfectly human like to do useful work. So it's an interesting question: if you are trying to make a practical humanoid robot, which parts do you 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_!dJ6_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dJ6_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dJ6_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg" width="314" height="274.3481228668942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:586,&quot;resizeWidth&quot;:314,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dJ6_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dJ6_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfa34729-1f05-44c3-9363-d5a30febb22f_586x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;We&#8217;ve decided to make sure the robot has a fine coat of hairs on its butt. You know, like a human.&#8221;</figcaption></figure></div><h3>Legs</h3><p><strong>Legs let you be tall:</strong></p><p>There are a bunch of tasks in human spaces that require you to manipulate things up high (get stuff on shelves) and down low (put things in cabinets). Human spaces also can get tight, so having a small footprint on the floor is useful. Those two things push you towards a tall, skinny robot which means a tippy robot. In order to not fall over you can either try to still have a low center of gravity (think of a cherry-picker. It goes super high, but has a huge amount of mass at the bottom to stay stable) or you can balance dynamically. Legs are one solution to dynamic balance, but you can also have dynamic balance with wheels.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q-Bi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q-Bi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 424w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 848w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 1272w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q-Bi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png" width="1456" height="437" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fb60ce-4363-4b06-882f-313d55456001_1600x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:437,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q-Bi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 424w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 848w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 1272w, https://substackcdn.com/image/fetch/$s_!q-Bi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fb60ce-4363-4b06-882f-313d55456001_1600x480.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Legs let you handle stairs:</strong></p><p>This is the biggest win for legs over wheeled solutions. There are wheeled and track-based things that can use stairs, but they tend to be as exciting<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> as legs.</p><p>Most of the current batch of humanoids have two legs, though Digit&#8217;s backward legs are decidedly non-human in their configuration.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jN2G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jN2G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 424w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 848w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 1272w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jN2G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png" width="356" height="200.33333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1068,&quot;resizeWidth&quot;:356,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jN2G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 424w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 848w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 1272w, https://substackcdn.com/image/fetch/$s_!jN2G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5589da8b-8dd1-46fb-908c-bbce269f0bab_1068x601.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Agility Robotic&#8217;s Digit</figcaption></figure></div><p>I think it is interesting that X1&#8217;s EVE robot has a mermaid-tail torso that ends in wheels, but their next-gen robot has two legs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GCaS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GCaS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 424w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 848w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 1272w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GCaS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png" width="518" height="268.5925925925926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1188,&quot;resizeWidth&quot;:518,&quot;bytes&quot;:681725,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GCaS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 424w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 848w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 1272w, https://substackcdn.com/image/fetch/$s_!GCaS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F495e98ed-6d74-429c-a64c-8f0b500df885_1188x616.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">X1&#8217;s EVE and NEO robots</figcaption></figure></div><p><strong>But why not a wheeled centaur?</strong></p><p>Nearly every one of the humanoid companies claim they are targeting a  commercial or industrial application as their first market. These spaces are ADA compliant. I&#8217;m super confused by the lack of two-armed torsos on largish, heavy, wheeled bases. Legs are just really complicated &amp; expensive. Plus they consume a bunch more energy than wheels, move a lot slower, and all of your manipulation needs to either make full body plans that take balance into account or your balance control and manipulation control treat each other like disturbances and they&#8217;ll be fighting all the time. And while it's true that legs are omnidirectional (you can step to the side) you can make wheeled bases that are omnidirectional too, and still skip a bunch of the challenges that legged balancing gives you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Eovv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Eovv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Eovv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg" width="286" height="298.2890625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:534,&quot;width&quot;:512,&quot;resizeWidth&quot;:286,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Eovv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Eovv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe05ce10-20a9-45b2-98a1-db202cdec872_512x534.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Where is this robot?</figcaption></figure></div><h3>Two Arms</h3><p><strong>Many tasks just need two hands:</strong></p><p>After working for 6 years with this robot:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mpz4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mpz4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mpz4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png" width="282" height="376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:282,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mpz4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 424w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 848w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!Mpz4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e7ea0-9087-4785-aac4-6efbcb14c346_1200x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Everyday Robots (2022)</figcaption></figure></div><p>I&#8217;ve come to appreciate how much only having one hand constrains you<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. There are things you <em>can</em> do one handed, but many of them are much easier two handed<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, especially for not-that-dexterous robots with their clumsy grippers. Which brings us to&#8230;</p><h3>Five Fingered Hands</h3><p>Human hands are frikkin awesome. I could write an entire post about human hands and the ways that they outshine anything we can build for robots. We have 5 fingers and each finger has at least 3 degrees of freedom<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> and the thumb and palm pinkie have at least one more each (you can move the base of your pinkie and thumb forward) for a total of 17 independent controllable degrees of freedom. At my first job we had a 17 DOF (degree of freedom) robot hand and (like a human hand) the only way to package all that motion was to move the actuators (muscles) into the forearm and do everything through cables (tendons). It was a beast and meant we had a huge forearm. The cables were also a maintenance nightmare and were always loosening or breaking.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xw2D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xw2D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 424w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 848w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 1272w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xw2D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png" width="400" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xw2D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 424w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 848w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 1272w, https://substackcdn.com/image/fetch/$s_!xw2D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b69a0aa-27a0-415f-92e7-d593f5c0ea04_400x320.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Anybots: Monty (2010)</figcaption></figure></div><p>I don&#8217;t think you need all of that motion to make a useful hand. In fact, I&#8217;m surprised that so many humanoids have five fingers. People who have lost a finger tend to be just as capable as people with five fingers. I&#8217;d think that robots, like cartoon characters, would converge on three<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> to four<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> fingers<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a>.</p><p>Human hands are fast <strong>and</strong> strong <strong>and</strong> light. We have about 50 lbs of grip strength and can move fast enough that our eyes can&#8217;t track our finger motion. A motor and gearbox that powerful would tend to be big and heavy, which is not what you want at the end of your robot arm.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QRpH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QRpH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QRpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg" width="298" height="388.21484375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:667,&quot;width&quot;:512,&quot;resizeWidth&quot;:298,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QRpH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QRpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd0dafdc-1bb4-4a88-b052-0c85f9937ef6_512x667.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Would you care for this glass of wine?&#8221;</figcaption></figure></div><p>But the biggest way that robot hands differ from human hands is sensing. Our hands are incredibly sensitive. You can easily feel the height change of a single sheet of paper sitting on a table. When we want to fool a human&#8217;s eyes we use video at 30-60 frames per second, but when we want to fool human hands (for giving haptic feedback) we generally want to run at 1000 &#8220;frames&#8221; per second because the bandwidth of your hands is so much higher than your eyes. Think about how hard it is to do a delicate task with your whole hand numbed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w7dC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w7dC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w7dC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg" width="362" height="320.6643598615917" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:578,&quot;resizeWidth&quot;:362,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w7dC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w7dC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958fa4dc-8dc9-453c-8ce7-c12c17cb1887_578x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Trial 4: My hands are completely numbed. Now let's see if I can still do the surgery.&#8221;</figcaption></figure></div><p>My money is on a less human looking hand (with fewer and bigger fingers) with good touch sensing, less than human speed, but similar to human grasp strength.</p><h3>Size</h3><p>The last category of human-ness is human sized. The push and pull here is that many tasks have some reaching up high and carrying heavy things. However, being sufficiently safe is super hard (for any robot). We are much less forgiving of our machines for bumping into us than we are our human co-workers, and robots tend to fall over on occasion. So your goal of making a tall and strong robot quickly gets into direct conflict with your goal of making a robot that won&#8217;t accidentally hurt someone. This is not easy because if your robot is strong enough to move heavy boxes that means it is strong enough to drop heavy boxes on someone, and usually means the robot itself is heavier than the heavy boxes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OL1C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OL1C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OL1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg" width="260" height="276.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:512,&quot;resizeWidth&quot;:260,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OL1C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OL1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F740da5ae-3266-4c66-8745-a06fa499f2a0_512x544.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;I am making a tidy stack. Stop resisting&#8221;</figcaption></figure></div><p>You can make robots more safe by adding human-auditable and redundant safety systems in your software, but that is the opposite direction from the promise of generative AI being the engine of multipurpose robot control. You can have parallel systems (AI for control and conventional safety to verify the output) and that is probably what you have to do, but it's going to be really hard for the (dumb, simple) safety system to tell the difference between pushing hard on a box to put it in place and pushing hard on a box that causes a human to be crushed.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v5wj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v5wj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v5wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg" width="428" height="214.41878669275928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1022,&quot;resizeWidth&quot;:428,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v5wj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v5wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe856724f-4ffd-42d7-87f8-4a3ba601eec9_1022x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">&#8220;I am making a tidy stack. Stop resisting&#8221;</figcaption></figure></div><p>I don&#8217;t have good answers, just that it's really hard, and it seems like most robot companies are betting on being so useful and valuable that they are able to convince society (and therefore various safety bureaucracies) to accept a slightly higher chance of unpredictable injury. Higher than we&#8217;d tolerate from, say, a printer. It's not like humans are guaranteed not to bump into each other, we just usually don&#8217;t. It's kind of like the argument that self-driving cars don&#8217;t have to be perfect, they just have to be similar to human drivers.</p><p>You can also make robots more intrinsically safe by making them lighter, but making things light and strong at the same time is hard. And by hard, I mean expensive. And keeping your robot&#8217;s cost down is going to be very, very important to succeeding with a humanoid startup, as we will see in <a href="https://generalrobots.substack.com/p/humanoid-robots-dollars-and-gpts">Part 2&#8230; </a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>Thanks to Michael Quinlan and Rodney Brooks for reading an early draft of this post.</p><p>About the Author: Benjie has programmed robots at startups and Google X&#8217;s Everyday Robots and is currently Director of Robotics at <a href="https://www.robust.ai/">Robust AI</a>, where he hopes to ship boring looking non-humanoid robots to customers who pay money for them.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>&nbsp;In this context exciting means: &#8220;complicated, failure prone, expensive and dangerous&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I grew up working with my family&#8217;s puppetry business and we often wished we had <em>three</em> hands.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>For example, after some practice I am able to open a soda can one handed while holding it, but it is absolutely not the easiest way to do it.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Wiggle side to side, bend at knuckle, and curl. Plus the metacarpal roll, but that's kinda only a half-dof for your index/pinky.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cny7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cny7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 424w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 848w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 1272w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cny7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png" width="434" height="410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:410,&quot;width&quot;:434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:396182,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cny7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 424w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 848w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 1272w, https://substackcdn.com/image/fetch/$s_!Cny7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fdca7e6-72c8-4ffa-81c3-84713b828eda_434x410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zn-e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zn-e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 424w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 848w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 1272w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zn-e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png" width="250" height="187" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:187,&quot;width&quot;:250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zn-e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 424w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 848w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 1272w, https://substackcdn.com/image/fetch/$s_!Zn-e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34c9c805-8815-4643-b389-abc8c9cc51d1_250x187.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>I just learned that our amphibious ancestors that crawled out of the ocean had 8 fingered flippers that are the origin of our hands. We didn&#8217;t get more fingers as we evolved to do more complicated manipulation: we lost fingers. That seems to imply that more than five is too many fingers, but doesn&#8217;t really tell us what the lower bound is.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[The Mythical Non-Roboticist]]></title><description><![CDATA[What if everyone could do robotics? That would be great, right? We should make a software framework so that non-roboticists can program robots.This idea is so close to a correct idea that it's hard to tell why it's a mistake.]]></description><link>https://generalrobots.substack.com/p/the-mythical-non-roboticist</link><guid isPermaLink="false">https://generalrobots.substack.com/p/the-mythical-non-roboticist</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Thu, 14 Mar 2024 16:14:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AAEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I worked on this idea for months before I decided it was a mistake. The second time I heard someone mention it, I thought, &#8220;That's strange, these two groups had the same idea. Maybe I should tell them it didn&#8217;t work for us.&#8221; The third and fourth time I rolled my eyes and ignored it. The fifth time I heard about a group struggling with this mistake I decided it was worth a blog post all on its own. I call this idea &#8220;The Mythical Non-Roboticist&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AAEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AAEq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AAEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg" width="391" height="325.51544715447153" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:615,&quot;resizeWidth&quot;:391,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AAEq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AAEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb94560-1afd-4ad2-aa06-aa4f7442662f_615x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Unicorn, Non-Roboticist, Satyr</figcaption></figure></div><h2>The Mistake</h2><p>The idea goes something like this: Programming robots is hard. And there are some people with really arcane skills and PhDs who are really expensive and seem to be required for some reason. Wouldn&#8217;t it be nice if we could do robotics without them?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> What if everyone could do robotics? That would be great, right? We should make a software framework so that non-roboticists can program robots.</p><p>This idea is so close to a correct idea that it's hard to tell why it doesn&#8217;t work out. On the surface, it's not <em>wrong</em>: all else being equal, it would be good if programming robots was more accessible. The problem is that we don&#8217;t have a good recipe for making working robots. So we don&#8217;t know how to make that recipe easier to follow. In order to make things simple, people end up removing things that folks might need, because no one knows for sure what's absolutely required. It's like saying you want to invent an invisibility cloak and want to be able to make it from materials you can buy from Home Depot. Sure, that would be nice, but if you invented an invisibility cloak that required some mercury and neodymium to manufacture would you toss the recipe?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BymG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BymG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BymG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BymG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BymG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BymG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg" width="302" height="267.51557093425606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:578,&quot;resizeWidth&quot;:302,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BymG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BymG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BymG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BymG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3962fbc5-f4f5-4a8d-b201-f6ca334e5863_578x512.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I actually only use free-trade, organic, non-GMO invisibility cloaks</figcaption></figure></div><p>In robotics, this mistake is based on a very true and very real observation: programming robots <em><strong>is</strong></em> super hard. Famously hard. It would be super-great if programming robots was easier. The issue is this: programming robots has two different kinds of hard parts.&nbsp;</p><h2>Robots are hard because the world is complicated</h2><p>The first kind of hard part is that robots deal with the real-world, imperfectly sensed and imperfectly actuated. Global mutable state is bad programming style because it's really hard to deal with, but to robot software the entire physical world is global mutable state, and you only get to unreliably observe it and hope your actions approximate what you wanted to achieve. Getting robotics to work at all is often at the very limit of what a person can reason about, and requires the flexibility to employ whatever heuristic might work for your special problem. This is the <strong>intrinsic</strong> complexity of the problem: robots live in complex worlds, and for every working solution there are millions of solutions that don&#8217;t work, and finding the right one is hard, and often very dependent on the task, robot, sensors and environment.</p><p>Folks look at that challenge, see that it is super hard, and decide that, sure, maybe some fancy roboticist could solve it in one particular scenario, but what about &#8220;normal&#8221; people? &#8220;We should make this possible for non-roboticists&#8221; they say. I call these users &#8220;Mythical Non-Roboticists&#8221; because once they are programming a robot, I feel they <em>become</em> roboticists. Isn&#8217;t anyone programming a robot for a purpose a roboticist? Stop gatekeeping, people.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ba_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ba_F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ba_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg" width="526" height="305.3424036281179" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:882,&quot;resizeWidth&quot;:526,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ba_F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ba_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139ede5f-1150-4aeb-b6f6-54afc74cf172_882x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Why are those people programming robots?&#8221; &#8220;Not sure, but I&#8217;m positive they aren&#8217;t roboticists. I checked&#8221;</figcaption></figure></div><h2>Don&#8217;t design for amorphous groups</h2><p>I call also them &#8216;Mythical&#8217; because usually the &#8220;non-roboticist&#8221; implied is a vague, amorphous group. Don&#8217;t design for amorphous groups. If you can&#8217;t name three real people (that you have talked to), that your API is for, then you are designing for an amorphous group and only amorphous people will like your API.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!waGY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!waGY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 424w, https://substackcdn.com/image/fetch/$s_!waGY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 848w, https://substackcdn.com/image/fetch/$s_!waGY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!waGY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!waGY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg" width="302" height="419.37890625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:711,&quot;width&quot;:512,&quot;resizeWidth&quot;:302,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!waGY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 424w, https://substackcdn.com/image/fetch/$s_!waGY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 848w, https://substackcdn.com/image/fetch/$s_!waGY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!waGY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa63f62f-1857-4729-a91a-edc603c28d70_512x711.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;ActivateBehaviorObjectFactory()? Oooh, I like it&#8221;</figcaption></figure></div><p></p><p>And with this hazy group of users in mind (and seeing how difficult everything is) folks think, &#8220;Surely we could make this easier for everyone else by papering over these things with simple APIs?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gRIJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gRIJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 424w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 848w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 1272w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gRIJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png" width="304" height="335.46875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:565,&quot;width&quot;:512,&quot;resizeWidth&quot;:304,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gRIJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 424w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 848w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 1272w, https://substackcdn.com/image/fetch/$s_!gRIJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd341001f-2eda-421d-844e-3d4c199fcb8c_512x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No. No you can&#8217;t. Stop it.&nbsp;</p><p>You can&#8217;t paper over intrinsic complexity with simple APIs because <strong>if your APIs are simple they can&#8217;t cover the complexity of the problem</strong>. You will inevitably end up with a beautiful looking API, with calls like &#8220;grasp_object&#8221; and &#8220;approach_person&#8221; which demo nicely in a hackathon kickoff but last about 15 minutes of someone actually trying to get some work done. It will turn out that, for their particular application, &#8220;grasp_object()&#8221; makes 3-4 wrong assumptions about &#8220;grasp&#8221; <em><strong>and</strong></em> &#8220;object&#8221; and doesn&#8217;t work for them at all.</p><h2>Your users are just as smart as you</h2><p>This is made worse by the pervasive assumption that these people are less savvy (read: less intelligent) than the creators of this magical framework.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> That feeling of superiority will cause the designers to cling desperately to their beautiful, simple &#8216;grasp_object()&#8217;s and resist adding the knobs and arguments needed to cover more use cases and allow the users to customize what they get.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ymhJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ymhJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ymhJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg" width="512" height="517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:517,&quot;width&quot;:512,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ymhJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ymhJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F617a56d5-13c6-4818-ae70-de6fa5ecf0ab_512x517.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Should let folks control how fast the robot moves?&#8221; &#8220;I don&#8217;t think so&#8230; Maybe we give them &#8220;slow&#8221; and &#8220;fast&#8221;. Anything else would be too confusing for a non-roboticist"</figcaption></figure></div><p>Ironically this foists a bunch of complexity on to the poor users of the API who have to come up with clever workarounds to get it to work at all.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w96y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w96y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w96y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w96y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w96y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w96y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg" width="891" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:891,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w96y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w96y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w96y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w96y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c5c11a-7544-4a99-8abc-62eb3d2c9bbc_891x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;So I got the arm to match the conveyor speed by monitoring the position and pre-empting the motion command, alternating &#8216;slow&#8217; and &#8216;fast&#8217; at 10Hz with a duty cycle depending on how we are tracking our target. The motion is pretty jerky but it works.&#8221;</figcaption></figure></div><p>The sad, salty, bitter icing on this cake-of-frustration is that, even if done really well, the goal of this kind of framework would be to expand the group of people who can do the work. And to achieve that, it would sacrifice some performance you can only get by super-specializing your solution to your problem. If we lived in a world where expert roboticists could program robots that worked really well, but there was so much demand for robots that there just wasn&#8217;t enough time for those folks to do all the programming, this would be a great solution.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IlQx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IlQx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IlQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg" width="252" height="447.890625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:512,&quot;resizeWidth&quot;:252,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IlQx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IlQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8cd7c8-e3e4-4fc4-892e-6b13ae1e0f8c_512x910.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Man, <em>another</em> robotics startup going public? I wish I knew some roboticists. I&#8217;m just an expert in fintech, LLMs and e-commerce.&#8221;</figcaption></figure></div><p>The obvious truth is that (outside of really constrained environments like manufacturing cells) even the very best collection of real bone-fide, card-carrying roboticists working at the best of their ability struggle to get close to a level of performance that makes the robots commercially viable, even with long timelines and mountains of funding.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> We don&#8217;t have <strong>any</strong> headroom to sacrifice power and effectiveness for ease.</p><h2>What problem are we solving?</h2><p>So should we give up making it easier? Is robotic development available only to a small group of elites with fancy PhDs?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> No to both! I have worked with tons of undergrad interns who have been completely able to do robotics.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> I myself am mostly self-taught in robot programming.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> While there is a lot of intrinsic complexity in making robots work, I don&#8217;t think there is any more than, say, video game development.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!olxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!olxU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!olxU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!olxU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!olxU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!olxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg" width="466" height="311.47780678851177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:766,&quot;resizeWidth&quot;:466,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!olxU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!olxU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!olxU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!olxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0884f5ee-d157-4f7a-a513-3ba066e2818e_766x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Yeah, you&#8217;ll never understand the challenges of reasoning in 3D space, worrying about latency all the time, and always being compute constrained.&#8221;</figcaption></figure></div><p>In robotics, like in all things, experience helps, some things are teachable, and as you master many areas you can see things start to connect together. These skills are not magical or unique to robotics. We are not as special as we like to think we are.</p><p>But what about making programming robots easier? Remember way back at the beginning of the post when I said that there were two different kinds of hard parts? One is the intrinsic complexity of the problem, and that one will be hard no matter what.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> But the second is the incidental complexity, or as I like to call it, the stupid bullshit complexity.</p><h2>Stupid Bullshit Complexity</h2><p>Robots are asynchronous, distributed, real-time systems with weird hardware. All of that will be hard to configure for stupid bullshit reasons. Those drivers need to work in the weird flavor of linux you want for hard real-time for your controls and getting that all set up will be hard for stupid bullshit reasons. You are abusing wifi so you can roam seamlessly without interruption but linux&#8217;s wifi will not want to do that. Your log files are huge and you have to upload them somewhere so they don&#8217;t fill up your robot. You&#8217;ll need to integrate with some cloud something or other and deal with its stupid bullshit.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a>&nbsp;</p><p>There is a ton of crap to deal with before you even get to complexity of dealing with 3D rotation, moving reference frames, time synchronization, messaging protocols. Those things have intrinsic complexity (you have to think about when something was observed and how to reason about it as other things have moved) and stupid bullshit complexity (There&#8217;s a weird bug because someone multiplied two transform matrices in the wrong order and now you&#8217;re getting an error message that deep in some protocol a quaternion is not normalized. WTF does that mean?)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a></p><p>One of the biggest challenges of robot programming is wading through the sea of stupid bullshit you need to wrangle in order to <strong>start</strong> working on your interesting and challenging robotics problem.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eYFB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eYFB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eYFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg" width="672" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eYFB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eYFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3ee3b80-7c34-4792-9491-77cdf7bbc11b_672x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;I&#8217;m so excited. I&#8217;ve been working 12 hours everyday for 6 weeks, and I finally get to start doing robotics!&#8221;</figcaption></figure></div><p>So a simple heuristic to make good APIs is:</p><div class="pullquote"><p>Design your APIs for someone as smart as you, but less tolerant of stupid bullshit.</p></div><p>That feels universal enough that I&#8217;m tempted to call it <strong>Holson&#8217;s Law of Tolerable API Design</strong>.&nbsp;</p><p>When you are using tools you&#8217;ve made, you know them well enough to know the rough edges and how to avoid them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vaGP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vaGP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vaGP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg" width="270" height="340.6640625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:512,&quot;resizeWidth&quot;:270,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vaGP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vaGP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e97fe78-1f6a-4ecc-baa6-bb414829df41_512x646.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Oh yeah, if you try to move the robot without calling enable() it segfaults. That's a safety feature&#8230; I guess? But also if you call it twice, that also segfaults. Just call it exactly once, ever.&#8221;</figcaption></figure></div><p>But rough edges are things that have to be held in a programmer&#8217;s memory while they are using your system. If you insist on making a robotics framework<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a>, you should strive to make it as powerful as you can with the least amount of stupid bullshit. Eradicate incidental complexity everywhere you can. You want to make APIs that have maximum flexibility but good defaults. I like python&#8217;s default-argument syntax for this because it means you can write APIs that can be used like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dyqR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dyqR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 424w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 848w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 1272w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dyqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png" width="1456" height="409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140758,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dyqR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 424w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 848w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 1272w, https://substackcdn.com/image/fetch/$s_!dyqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71fd47-87b0-4d5b-83e4-c0a7a1d0ed4a_1986x558.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It is possible to have easy things be simple <em>and</em> allow complex things. And please, please, please don&#8217;t make condescending APIs. Thanks!</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/the-mythical-non-roboticist?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/the-mythical-non-roboticist?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p>Thanks to Leila Takayama and Rodney Brooks for reading drafts of this.</p><p>About the Author: Benjie has been a roboticist since he first joined his high school robotics team, has programmed robots at startups and Google X&#8217;s Everyday Robots and is currently Director of Robotics at <a href="https://www.robust.ai/">Robust AI</a>, where he hopes to someday ship boring looking robots that solve real problems to customers who pay money for them.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>&nbsp;Ironically it is very often the expensive arcane-knowledge-having PhDs who are proposing this.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Why is it always a<a href="https://generalrobots.substack.com/p/tech-debt#footnote-anchor-3-118842509"> framework</a>?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The exception that might prove the rule is things like traditional manufacturing-cell automation. That is a place where the solutions exist, but the limit to expanding is set up cost. I&#8217;m not an expert in this domain, but I&#8217;d worry that physical installation and safety compliance might still dwarf the software programming cost, though.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>As I well know from personal experience.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Or non-fancy PhDs for that matter?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>I suspect that many bright highschoolers would also be able to do the work. Though, as Google tends not to hire them, I don&#8217;t have good examples.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>My schooling was in Mechanical Engineering and I never got a PhD, though my ME classwork did include some programming fundamentals.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>Unless we create effective general purpose AI. It feels weird that I have to add that caveat, but the possibility that it's actually coming for robotics in my lifetime feels much more possible than it did two years ago.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>And if you are unlucky, its API was designed by someone who thought they were smarter than their customers.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>This particular flavor of bullshit complexity is why I wrote <a href="https://github.com/robobenjie/posetree">posetree.py</a>. If you do robotics, you should check it out.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>Which, judging by the trail of dead robot-framework-companies, is a fraught thing to do.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Writing Libraries for AIs to Use]]></title><description><![CDATA[Donald Knuth tells us, &#8220;Programs are meant to be read by humans and only incidentally for computers to execute.&#8221; but in the future we have a third category. I think that programs and libraries (and programming languages?) that lend themselves to effective AI assistance will win over abstractions that LLMs are bad at.]]></description><link>https://generalrobots.substack.com/p/writing-libraries-for-ais-to-use</link><guid isPermaLink="false">https://generalrobots.substack.com/p/writing-libraries-for-ais-to-use</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Wed, 12 Jul 2023 15:02:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been doing two unrelated things. The first is that I&#8217;ve been working on <a href="https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps">posetree.py</a>, a library for doing pose math for robots. The second is that I&#8217;ve been working on a<a href="https://dimensionhopper.com/"> hobby video game</a> (which you should play with soon before the server cost forces me to take it down). For both projects I&#8217;ve made heavy use of LLMs<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> to code and holy moly it is a productivity multiplier.&nbsp;</p><p>And given how much I&#8217;ve begun relying on it in such a short time, I can&#8217;t imagine a future where most programmers don&#8217;t make very heavy use of AI assistance. Donald Knuth tells us, &#8220;Programs are meant to be read by humans and only incidentally for computers to execute.&#8221; but in the future we have a third category. <strong>I think that programs, libraries and programming languages that lend themselves to effective AI assistance will win over abstractions that LLMs are bad at.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jR-o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jR-o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jR-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg" width="370" height="272.18390804597703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:696,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jR-o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jR-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93dfda75-f6f3-40ac-ba7b-41a6f10e940f_696x512.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ugh. This code&#8217;s using a style-formatter that limits line length by characters not semantic tokens.</figcaption></figure></div><p>So what does that look like? I don&#8217;t know,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> but I still wrote a whole post about me trying to find out.</p><h2>My experience using AIs for coding</h2><p>I&#8217;ve been using ChatGPT 4<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> and Github Copilot. ChatGPT feels like pair programming with a pretty junior engineer who doesn&#8217;t think that far ahead, but has memorized the documentation and types really fast. If you know what you want, but not exactly how to do it, ChatGPT is great.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> The first day of creating a game in javascript (a language I don&#8217;t know very well) it was easily a 10x productivity boost. I had an editable map, characters jumping around the scene and collecting gems and a working UI in about an hour. The productivity gain slows down because over time you realize that copy-and-pasting an isolated snippet for every problem you have doesn&#8217;t lead to great design. I found I still had to do some real engineering and refactoring to keep it from collapsing under its own weight.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> But it's still easily a 2-3x steady state on a domain I&#8217;m not a super expert in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PCgd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PCgd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PCgd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg" width="276" height="318.5859375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:591,&quot;width&quot;:512,&quot;resizeWidth&quot;:276,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PCgd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PCgd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facae4cc4-2ee8-437f-b97e-683ea902d3f9_512x591.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ummm, how do I iterate over a list in javascript again?</figcaption></figure></div><p>GPT also struggles with things that are legitimately tricky. It had a hard time getting the physics and collision code to produce nice gameplay, and I tried for a while describing the new undesirable behavior to it and trying its fixes a while before giving up, using my own brain, and implementing collision physics myself. But the ways that it failed reminded me of the kinds of tricky bugs I&#8217;ve made trying to get collisions to feel nice in previous game projects.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_ul5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_ul5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_ul5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg" width="618" height="291.35911602209944" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1086,&quot;resizeWidth&quot;:618,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_ul5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_ul5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ddc6be7-7ffb-4920-a258-ffa2a4e56437_1086x512.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;When I come down on another player near a wall, I sometimes pop into the wall and get stuck, can you look at the code and tell me what I should fix?&#8221;          &#8220;Ummm, have you tried adding and removing negative signs until it works better?&#8221;</figcaption></figure></div><p>GitHub Copilot really shone on the posetree project. That one is a lot more mathy and there are a bunch of matchable-pattern stuff. I&#8217;d type&nbsp;</p><p><code>@property</code></p><p><code>def x_axis(</code></p><p>And it would fill in the (mostly) correct docstring and implementation to get the x-axis of the pose (nice) and then suggest that I probably want y-axis and z-axis. (I do, indeed. Thanks, AI). It has more context about your file so it has less of a tendency to forget the names of things, and often notices things you ought to have but don&#8217;t. (Yes, I also want a &#8216;frame&#8217; property on Pose. Thanks again). But you can&#8217;t describe a problem and have solutions the way you can with GPT.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><h2>A master plan to show how smart I am</h2><p>I&#8217;m proud that code written with posetree tends to look more like natural language, which I think makes it easier to read and debug. I&#8217;d love to prove that it helps, and, because I&#8217;m an engineer, I&#8217;d love to quantify it, but that has seemed impossible.</p><p>However LLMs work in natural language, so maybe (I thought) I can create a set of problems of increasing complexity and trickiness and have ChatGPT solve them with and without my library. Maybe I can even have some number of instances do it and count how many correctly solve each problem and this will create a quantifiable measure of how much better my library is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ysXs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ysXs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ysXs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg" width="296" height="485.625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:512,&quot;resizeWidth&quot;:296,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ysXs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ysXs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42b9fb36-3c77-47f1-b93d-d7a1bc3b393a_512x840.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">And therefore how much better I am as a person, obviously.</figcaption></figure></div><h2>Results?</h2><p>And so I tried that, and failed utterly.&nbsp;</p><p>But failing is interesting, so here&#8217;s what I learned.</p><h2>Methodology</h2><p>I started two GPT instances<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> and gave them these prompts:</p><p>They both got:</p><p>&#8220;I'd like you to write some code for a mobile robot. The system is made up of the frames 'map', 'robot', 'tool', and 'camera'. 'robot' represents the robot base and has x pointing forward and z pointing up. 'map' origin is in the corner of the building, with z pointing up. 'camera' has z pointing out, and y pointing down. 'tool' has z pointing out of the gripper."</p><p>Then they got a custom second half:</p><h3>GPTControl:&nbsp;</h3><p>You have the API get_transform(parent, child) which returns a 4x4 rigid body transform matrix as a np.array. For example, to get the robot's pose in map frame you can call get_transform('map', 'robot').</p><h3>GPTTest:</h3><p>&lt;paste the <a href="https://htmlpreview.github.io/?https://raw.githubusercontent.com/robobenjie/posetree/main/docs/posetree/pose.html">documentation for the pose</a> API&gt;</p><p>You can assume that there is a PoseTree instance called pose_tree. For example, to get the robot's pose in map frame you can call Pose(Transform.identity(), 'robot', pose_tree).in_frame("map")<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a>.&nbsp;</p><p>Then I started asking them both a series of pose problems, drawn from things I&#8217;ve actually had to do with robots, starting easy and getting harder. I didn&#8217;t stick to that very long though, because of the way things started going off the rails.</p><h2>AIs like to pattern match.&nbsp;</h2><p>The first problem is that ChatGPT has seen lots and lots of &#8216;create a 4x4 matrix transform, do some multiplication with it, and use numpy to scrape out your answer&#8217; code in its training data. But posetree library is brand-spankin-new so all of its patterns are outside the training data. So when I asked for code to solve pose-problems it successfully used my library to write old-school transforms code.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a></p><p>For example I asked, &#8220;implement distance_from_tool_to_camera() which returns the cartesian distance between the tool and the camera.&#8221; and got:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IOuv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IOuv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 424w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 848w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 1272w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IOuv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png" width="816" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IOuv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 424w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 848w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 1272w, https://substackcdn.com/image/fetch/$s_!IOuv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F809fcd5f-826f-43f9-b136-eab064d0be9a_816x392.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Which is&#8230; fine. But <code>tool_pose.distance_to(camera_pose)</code> is right there. As is <code>np.linalg.norm(tool_pose.in_frame(&#8216;camera&#8217;).position)</code>. The power of posetree is that you <strong>don&#8217;t</strong> have to convert everything to the same frame and then do linear algebra on it.</p><h2>You&#8217;re doing it wrong!</h2><p>I asked a few more questions before getting frustrated at it for using my library so badly. I couldn&#8217;t help myself. I wrote answers to each question myself using &#8216;canonical&#8217; posetree abstractions and gave it those and I was rewarded this this gem:</p><blockquote><p>&#8220;These improved implementations make excellent use of the posetree API methods, and they are more concise and readable compared to previous versions. They also handle frames properly, ensuring that operations are performed relative to the correct frame of reference.&#8221;</p></blockquote><p>Thanks, GPT. This is why AIs are better than co-workers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j-Un!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j-Un!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j-Un!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg" width="406" height="248.3536439665472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:837,&quot;resizeWidth&quot;:406,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j-Un!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j-Un!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e1da37b-0a8f-4103-a01f-95492a350914_837x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">You&#8217;re also a very handsome boy</figcaption></figure></div><p>Ego assuaged, we soldiered on.</p><h2>Examples are better than documentation</h2><p>LLMs are fundamentally pattern matching machines and going from documentation to implementation was hard for it, but extrapolating from examples was easier. After seeing the solutions to the first three problems it did <strong>much </strong>better with the next two. However, the ControlGPT also did well on those questions and didn&#8217;t need me to give it extra examples.</p><h2>If I cheat enough and wait enough I get the result I want!</h2><p>Eventually I hit on a problem that my library + example-hinted GPT solved correctly and my no-library GPT failed on.&nbsp;</p><blockquote><p>Next question: You have get_bottle_pose() which returns the bottle pose in the camera frame, and move_forward() which drives the robot some (unknown) amount forward. Once the robot moves, it will no longer be able to see the bottle. Please write a method to perceive the bottle, move the robot and then return the pan angle needed to point the camera at the bottle. (0 pan has the camera pointing in the robot x-axis, positive pan is positive rotation about robot-z).</p></blockquote><p>TestGTP:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zuRp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zuRp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 424w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 848w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 1272w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zuRp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png" width="908" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:908,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zuRp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 424w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 848w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 1272w, https://substackcdn.com/image/fetch/$s_!zuRp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034e4ffb-8845-40aa-875a-0468ddd7810d_908x541.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It creates robot_pose_in_map that is doesn&#8217;t need (and never uses), and ignores a perfectly good angle_about_z_to() method, but not bad.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a></p><p>ControlGPT:</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-oo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h-oo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 424w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 848w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 1272w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h-oo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png" width="925" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:925,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h-oo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 424w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 848w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 1272w, https://substackcdn.com/image/fetch/$s_!h-oo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0e1f20-d4a6-42c0-8869-fae0b051903b_925x634.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I mean he&#8217;s got the spirit, but boy is he confused. camera_t_robot doesn&#8217;t change when the robot moves, so robot_t_camera_after is the same as robot_t_camera. That means the expression</p><p><code>np.dot(robot_t_camera_after, np.linalg.inv(np.dot(get_transform('robot', 'camera'), camera_t_bottle)))</code></p><p>is&nbsp;</p><p><code>robot_t_camera * (robot_t_camera * camera_t_bottle).inverse</code></p><p><code>robot_t_camera * (robot_t_bottle).inverse</code></p><p><code>robot_t_camera * bottle_t_robot</code></p><p>And we&#8217;re making one of the classic blunders of matrix multiply pose math: We&#8217;ve got our matrices in the wrong order. That multiplication is easy to compute but gives a nonsensical transform (the words next to each other have to match, and camera != bottle) and we get a wrong answer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mAPi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mAPi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mAPi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg" width="240" height="331.875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:512,&quot;resizeWidth&quot;:240,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mAPi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mAPi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44025f7a-efab-4627-8561-53dc7518ad61_512x708.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gotcha suckers. I&#8217;m winning at science.</figcaption></figure></div><p>But I&#8217;ve had my thumb on the scale and have kept going until I got the result that I wanted, so you really can&#8217;t call this any kind of proof that posetree is easier for LLMs to use.</p><h2>Maybe I only give examples?</h2><p>Since it started working so much better after I gave it some examples, I wondered if giving it the documentation had been a blunder. I know I often learn how to use a library by looking at the unit tests, and what is a unit test but a giant pile of examples waiting to be fed in?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a> So I fired up another instance<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a> and pasted in the unit test. And that went even more poorly. I don&#8217;t know why. Hilariously, after pasting in hundreds of lines of posetree unit test, when I asked it to solve a pose problem its first response was to use ROS&#8217;s tf2 library.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WIsp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WIsp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WIsp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg" width="210" height="256.7578125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:512,&quot;resizeWidth&quot;:210,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WIsp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WIsp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874b29b0-efd5-4e69-aeae-80376d422f00_512x626.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When I told it I wanted to use the posetree library, it tried but got&#8230; every? API call wrong?! I&#8217;m including it because it&#8217;s kind of impressive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KBRt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KBRt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 424w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 848w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 1272w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KBRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png" width="900" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KBRt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 424w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 848w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 1272w, https://substackcdn.com/image/fetch/$s_!KBRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20cb5c-f576-4444-8ff6-d31017b6f33b_900x392.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Like, literally every line is wrong. get_pose takes a position, quaternion and a defining frame, Pose&#8217;s constructor takes a transform and a frame (are those 6 numbers position and euler angles concatenated together? gross) and posetree.transform() does not exist and there is no analogous method it is thinking of. Wow.</p><h2>A Last Minute Contender</h2><p>While reading my draft of this my friend and actual ML expert, Michael Quinlan, asked why I hadn&#8217;t tried GPT&#8217;s code-interpreter mode. </p><p>&#8220;What&#8217;s that?&#8221; I asked. </p><p>&#8220;Oh, it's the thing where you upload your source files and ask it to use them to write code.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WPWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WPWf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WPWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg" width="236" height="260.4296875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:565,&quot;width&quot;:512,&quot;resizeWidth&quot;:236,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WPWf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WPWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bef164-3891-42dc-9cfe-c8e5f40f6d83_512x565.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I zipped up my files, uploaded them and asked the first question and&#8230; it bombed it. More getting all the APIs wrong, plus it multiplied a pose by a transform (and the whole point of posetree is to not do that.) Total failure. Bummed, I tried one last thing. I said, &#8220;You are misusing the library. Can you read the README and try again?&#8221;</p><p>And, holy shit, it nailed it. It got <em><strong>all </strong></em>of the questions right with idiomatic usage of the library. It even got a really tricky question about generating a circle of pregrasp poses which both other instances failed so badly I just gave up and moved on. </p><p>The only one it got wrong was the final question about looking at the bottle after the robot moved. (It stored the pose in robot frame so after the robot moved it still looked at where the bottle used to be relative to the robot.) Curious I asked, &#8220;This is incorrect. Can you figure out why?&#8221; and got:</p><blockquote><p>The issue arises from the fact that the robot's perception of the bottle's pose is outdated once the robot moves. The perceived bottle pose is in the camera's frame of reference before the robot moves. After the robot moves, this pose information is no longer valid because the camera (and therefore its frame of reference) has moved along with the robot.</p><p>The correct approach should be:</p><ul><li><p>Perceive the bottle and get its pose in the camera frame.</p></li><li><p>Convert this pose to a frame that does not move with the robot, such as the 'map' frame.</p></li><li><p>Move the robot forward.</p></li><li><p>Now, convert the stored bottle pose from the 'map' frame back to the 'robot' frame.</p></li><li><p>Calculate the pan angle based on this updated bottle pose in the robot's frame.</p></li></ul></blockquote><p>And followed up with a correct implementation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XLBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XLBu!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 424w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 848w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 1272w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XLBu!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif" width="226" height="335.46875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:512,&quot;resizeWidth&quot;:226,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XLBu!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 424w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 848w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 1272w, https://substackcdn.com/image/fetch/$s_!XLBu!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb4e5abc-a74c-4349-b615-468e601be6ac_512x760.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Not too bad, GPT, not too bad.</figcaption></figure></div><h2>Conclusion?</h2><p>So here we are, at the end of my journey. Right now, in 2023, it seems that if you want LLMs to be <em>really </em>good at your library you should have it be really popular before 2021 so that there are a ton of examples from stack overflow in its training data. If you can&#8217;t pull that off, using the code-interpreter mode, and writing good documentation works pretty darn well, though it&#8217;s pretty funny that you have to tell your AI to <a href="https://en.wikipedia.org/wiki/RTFM#:~:text=RTFM%20is%20an%20initialism%20and,forum%2C%20software%20documentation%20or%20FAQ.">RTFM</a>.</p><p>I would love to see more support for <a href="https://sebastianraschka.com/blog/2023/llm-finetuning-lora.html">LoRAs </a>(or something like them) on the scale of Stable Diffusion in terms of ease of use. A LoRA is a small, easy to train &#8220;mixin&#8221; network. In image generation it lets the AI draw a particular person, or style or even abstract property like &#8220;extra detailed&#8221;. For Stable Diffusion there are websites where you can browse LoRAs (with example images), copy the link and put it in the UI and it will download it, and start using it. Ease of use matters for adoption. If I could create curated examples/documentation, and release a mixin for a coding LLM that made it really good at writing code using my library, (and I thought that people would use it), I absolutely would.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-14" href="#footnote-14" target="_self">14</a> Someone should get on that. I can imagine a product where you pick your technology stack, add in all those mixins and spin up your pair-programming ai. That would be sweet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iagb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iagb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iagb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iagb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iagb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iagb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg" width="349" height="260.85839416058394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:685,&quot;resizeWidth&quot;:349,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iagb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iagb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iagb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iagb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8168c83-a40b-4152-b732-f367d85e4861_685x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Hello, yes! I am your Coffeescript, Verilog, MongoDB, FORTRAN copilot, ready to make&#8230; The thing! You want a thing? I help you!</figcaption></figure></div><p>It does seem like, for the most part, things that are tricky for humans are tricky for LLMs (matrix multiply order, timing on collisions before/after applying the timestep, remembering what you called that variable you just created, like, 30 seconds ago.) So for now I&#8217;m just going to continue trying to write software that is easy for humans to read and understand and hope for the best. But if you know about great ways to teach an LLM new tricks, let me know in the comments!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/writing-libraries-for-ais-to-use?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/writing-libraries-for-ais-to-use?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>You can read the whole chats here:</p><p>Test: <a href="https://chat.openai.com/share/6bbdce27-9cd7-43dc-b9ae-4a9c93f82884">https://chat.openai.com/share/6bbdce27-9cd7-43dc-b9ae-4a9c93f82884</a></p><p>Control: <a href="https://chat.openai.com/share/c9953f39-5589-4430-8075-98defbdfa0da">https://chat.openai.com/share/c9953f39-5589-4430-8075-98defbdfa0da</a></p><p>Unit Test Input: <a href="https://chat.openai.com/share/0ff27691-dfc8-4969-b8f4-221848c8aea0">https://chat.openai.com/share/0ff27691-dfc8-4969-b8f4-221848c8aea0</a></p><p>Code-interpreter with upload: <a href="https://chat.openai.com/share/21d0fd67-9e07-4123-b43e-6a2f8acf0edb">https://chat.openai.com/share/21d0fd67-9e07-4123-b43e-6a2f8acf0edb</a></p><p>Thanks to Mrinal Kalakrishnan and Michael Quinlan for reading an early draft of this.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>&nbsp;Large Language Models, in case you don&#8217;t live on Hacker News.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>&nbsp;You&#8217;ve been warned.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>GPT-3.5 makes so many subtle bugs that it doesn&#8217;t seem worth it for coding tasks. All the time you save writing you spend debugging.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>It is also kind of like if every time you searched on stackoverflow you found a post with an example doing exactly the thing you wanted.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Not too much refactoring though, because this is a toy project with a limited life and I&#8217;d rather do new fun things with it and throw it all away later than use good engineering practices. I&#8217;m on vacation. #YOLO</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>GPT is inherently a Q&amp;A interface which lets it suggest features that span html, backend and js, which a tab-complete affordance can&#8217;t give you. Although I have found myself writing comments in my code just for copilot like &#8220;// iterate over the largest elements in myarray&#8221; and then deleting them when it spits out the code I wanted. Also, after reading this footnote, Michael Quinlan informed me that there is a copilot chat that I can install, so I&#8217;m going to try that right away.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>Or, as normal humans call them, tabs in my browser.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>&nbsp;In the first version of my test I didn&#8217;t include the snippet of how to get a pose and it couldn't figure it out, so I added it to both versions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>It kind of reminds me of people who write a lot of embedded C using Python for the first time. They are using Python but writing code that looks like C not using any of the more powerful abstractions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>I&#8217;ve also noticed that GPT tends to be very verbose. I think it has a hard time getting lots of thought into few tokens so OpenAI prompts it to do many smaller steps, like creating intermediate variables.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>Ironically most of my unit tests were written by ChatGPT. It's really good at &#8220;Here&#8217;s a method, write me some tests&#8221;. If the test fails you still have to dig in to decide if the test is wrong or the method, but I have to do that with my own tests too, so &#8220;human level performance&#8221;?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>tab</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p>More human-like performance, I suppose. The familiar has a ton of inertia with humans and, I guess, AIs.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-14" href="#footnote-anchor-14" class="footnote-number" contenteditable="false" target="_self">14</a><div class="footnote-content"><p>The other barrier is that LLaMA is the most open LLM and therefore has the best tooling for LoRAs, but everything I&#8217;ve read claims that it is &#8220;just as good as GPT-3.5&#8221; which I&#8217;ve found to be just below the threshold of good enough. My info could be old, though, the landscape changes almost daily.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Bonus: Art Process]]></title><description><![CDATA[Talkin' 'bout doodles]]></description><link>https://generalrobots.substack.com/p/bonus-art-process</link><guid isPermaLink="false">https://generalrobots.substack.com/p/bonus-art-process</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 11 Jul 2023 15:23:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My blog posts are illustrated and I wanted to talk about my process, because some people have asked. When I write my rough drafts I&#8217;ll put text-based placeholder comics. Here is an example from my last <a href="https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps">post on posetree.py</a>:</p><p>&lt;Robot doing an &#8216;Instagram Influencer&#8217; pose. Caption: &#8220;Not that kind of pose&#8221;&gt;</p><p>The comics are often an important part of the rhetorical flow of my essays. I find them especially helpful to clarify what I mean by showing the opposite viewpoint. I find ideas are often better explained by showing what I <em>don&#8217;t</em> mean. So I need them in there as I write and edit so I know what to say next. But I re-write enough that I don&#8217;t want to sink all the time into creating finished art until the very end.</p><p>Once the text is in a pretty final shape, the next step is to draw the line art. I used to use pencil, photograph them with my phone and then use some free Android app to bump the brightness/contrast to get a black and white line drawing.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> But recently I&#8217;ve got a ReMarkable2 tablet (an e-ink drawing tablet) and I find that it is almost as good for drawing as pencil on paper, but better for undo and erase and I get nice black and white digital versions uploaded automatically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6W_H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6W_H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 424w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 848w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 1272w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6W_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png" width="167" height="307.7962529274005" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:427,&quot;resizeWidth&quot;:167,&quot;bytes&quot;:12905,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6W_H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 424w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 848w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 1272w, https://substackcdn.com/image/fetch/$s_!6W_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed673aab-b084-4d21-984d-2ddc5a01d7b0_427x787.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then I use an <a href="https://petalica.com/index_en.html">AI assist coloring service</a> to color. In the AI world it is ancient, and I&#8217;ve been using it for years. It does a mediocre job unhinted but it has a UI for adding color hints to the line drawing. I find it very rewarding to work iteratively with it making modifications until it looks right.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UrPv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UrPv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 424w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 848w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 1272w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UrPv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png" width="408" height="357.6828752642706" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1244,&quot;width&quot;:1419,&quot;resizeWidth&quot;:408,&quot;bytes&quot;:513805,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UrPv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 424w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 848w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 1272w, https://substackcdn.com/image/fetch/$s_!UrPv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd223ead4-c5ae-4037-8f55-67a80526a2e1_1419x1244.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Unhinted</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f2fM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f2fM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 424w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 848w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 1272w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f2fM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png" width="428" height="380.8500355366027" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1252,&quot;width&quot;:1407,&quot;resizeWidth&quot;:428,&quot;bytes&quot;:559693,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f2fM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 424w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 848w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 1272w, https://substackcdn.com/image/fetch/$s_!f2fM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4cc164-c8cd-4b60-8e72-66f370ad5ade_1407x1252.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Hinted</figcaption></figure></div><p>Lastly I&#8217;ll pull it into Gimp (because photoshop is expensive) and do things like touch up the eyes/teeth if I can&#8217;t get them bright enough. Or I&#8217;ll pull them into google slides and do annotations on top of them and then screen shot them (for things like arrows or bounding boxes).</p><p>That&#8217;s the process I&#8217;ve been using, but I&#8217;ve also been playing with Stable Diffusion and controlnet a ton for <a href="https://generalrobots.substack.com/p/dimension-hopper-part-1">my video game project</a> so for my last post I decided to see what I could get from control-net and my doodles. I thought the results were pretty cool but in the end decided to keep my art style consistent across the blog posts. I&#8217;m curious what people think of the two different styles, though. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4h8x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4h8x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 424w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 848w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 1272w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4h8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png" width="231" height="425.75409836065575" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:427,&quot;resizeWidth&quot;:231,&quot;bytes&quot;:12905,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4h8x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 424w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 848w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 1272w, https://substackcdn.com/image/fetch/$s_!4h8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a15237-ccd5-441c-aade-a4ff231c6013_427x787.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5uZK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5uZK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5uZK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg" width="220" height="405.1953125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:943,&quot;width&quot;:512,&quot;resizeWidth&quot;:220,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5uZK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5uZK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4981ca64-4212-43d4-9863-1a5511535405_512x943.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o-bH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o-bH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 424w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 848w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 1272w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o-bH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png" width="332" height="332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:332,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o-bH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 424w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 848w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 1272w, https://substackcdn.com/image/fetch/$s_!o-bH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b5c8b7-1924-4af2-8dc4-b3f4e418b4c3_512x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d31A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d31A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 424w, https://substackcdn.com/image/fetch/$s_!d31A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 848w, https://substackcdn.com/image/fetch/$s_!d31A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 1272w, https://substackcdn.com/image/fetch/$s_!d31A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d31A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png" width="345" height="299.1079812206573" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:554,&quot;width&quot;:639,&quot;resizeWidth&quot;:345,&quot;bytes&quot;:11003,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!d31A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 424w, https://substackcdn.com/image/fetch/$s_!d31A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 848w, https://substackcdn.com/image/fetch/$s_!d31A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 1272w, https://substackcdn.com/image/fetch/$s_!d31A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d95be18-5850-4518-9c06-7a3a5aa05b65_639x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAAp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAAp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 424w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 848w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 1272w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAAp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png" width="334" height="286.51960784313724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:875,&quot;width&quot;:1020,&quot;resizeWidth&quot;:334,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zAAp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 424w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 848w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 1272w, https://substackcdn.com/image/fetch/$s_!zAAp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f5131c0-7182-4f40-b403-7b392befaba5_1020x875.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qUS5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qUS5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 424w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 848w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 1272w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qUS5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png" width="328" height="328.739571589628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:889,&quot;width&quot;:887,&quot;resizeWidth&quot;:328,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qUS5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 424w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 848w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 1272w, https://substackcdn.com/image/fetch/$s_!qUS5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff40835e9-037d-458a-b697-a6e37ac68c9f_887x889.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kRYL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kRYL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 424w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 848w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 1272w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kRYL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png" width="356" height="367.4971164936563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:895,&quot;width&quot;:867,&quot;resizeWidth&quot;:356,&quot;bytes&quot;:22604,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kRYL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 424w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 848w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 1272w, https://substackcdn.com/image/fetch/$s_!kRYL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a4ee25-ffbb-482f-829d-1ac8cee5e908_867x895.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mcE-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mcE-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 424w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 848w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 1272w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mcE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png" width="336" height="347.7165354330709" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:889,&quot;resizeWidth&quot;:336,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mcE-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 424w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 848w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 1272w, https://substackcdn.com/image/fetch/$s_!mcE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff43c52d5-7ce6-4f47-9814-b9a57e051c22_889x920.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I8P5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I8P5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 424w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 848w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 1272w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I8P5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png" width="342" height="343.24363636363637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a349434-5a82-4289-8c14-66853e555433_825x828.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:828,&quot;width&quot;:825,&quot;resizeWidth&quot;:342,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I8P5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 424w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 848w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 1272w, https://substackcdn.com/image/fetch/$s_!I8P5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a349434-5a82-4289-8c14-66853e555433_825x828.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Let me know what you think in the comments.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/bonus-art-process?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/bonus-art-process?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I&#8217;ve been writing illustrated blog posts my entire career, just in the past they&#8217;ve been internal memos for my workplace. General Robots is my first &#8216;public&#8217; blog.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Announcing posetree.py: Wrangling Timestamps and Transforms for Robots]]></title><description><![CDATA[A python library for doing pose math for fun and profit. (Although I open sourced it for free so, no profit for me I guess). Check it out!]]></description><link>https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps</link><guid isPermaLink="false">https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Mon, 10 Jul 2023 15:14:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6e9d1b36-4dec-4b27-9297-988869bd4d8e_384x276.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>About this series</strong></h2><p>I&#8217;ve been working on general purpose robots with<a href="https://everydayrobots.com/"> Everyday Robots</a> for 8 years, and was the engineering lead of the product/applications group until we were impacted<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> by the recent Alphabet layoffs. This series is an attempt to share almost a decade of lessons learned so you can get a head start making robots that live and work among us. Previous posts live <a href="https://generalrobots.substack.com/">here</a>.</p><h1>What is posetree.py</h1><p>There is one library I&#8217;ve written that is so important to my productivity and sanity I wouldn&#8217;t bother working on robots without it. It&#8217;s called posetree and it's a library for dealing with poses and transforms. It makes whole classes of super common bugs impossible, robotics code more readable, and frees precious brain cells from fiddly boring stuff. With it, you can spend more time thinking about the real problems you&#8217;re trying to solve. So I wrote this open source version so everyone can use it. You can jump right to the API on the <a href="https://github.com/robobenjie/posetree">GitHub page</a>, or keep reading to learn why I think this is a better way to think about poses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qgdi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qgdi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qgdi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg" width="260" height="478.8671875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:943,&quot;width&quot;:512,&quot;resizeWidth&quot;:260,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qgdi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qgdi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19049606-e856-4525-a877-7a88ed2512f0_512x943.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Not this kind of pose.</em></p><h2>Wait, what's a pose?</h2><p>In case your experience in robotics is more casual: a pose is a way of describing the position and orientation of things. If you have a robot and it sees a person it needs to avoid and also a table it needs to clean; all that information can be represented by poses. (A pose for the robot&#8217;s location, one for its camera, another for the gripper, one for the person, and one for the table).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-FeF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-FeF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 424w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 848w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 1272w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-FeF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png" width="432" height="370.5882352941176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:875,&quot;width&quot;:1020,&quot;resizeWidth&quot;:432,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-FeF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 424w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 848w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 1272w, https://substackcdn.com/image/fetch/$s_!-FeF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd306e846-b3bb-4a57-89f6-f0a8823db890_1020x875.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Also in robotics things move around, so it matters <em>when</em> we saw the person there. Roboticists spend a ton of time thinking about where objects are, (and were), and<em> especially a ton of time debugging</em> these things. One of my favorite quotes sums it up:</p><div class="pullquote"><p>&#8220;All of robotics is just timestamps and transforms&#8221; -Chris Mansley</p></div><h2>Names Matter</h2><p>Some robotics codebases use &#8220;pose&#8221;, &#8220;transform&#8221; and &#8220;frame&#8221; fairly interchangeably. This is a huge missed opportunity to be clear in our code and our thinking. So posetree takes an opinionated stance:</p><ul><li><p><strong>Transform</strong>: This comes from the verb, to transform. It is how you get from one place to another. It is an operation to change your location from one to another.</p><ul><li><p>Example: &#8220;Take 10 steps forward and then turn 90 degrees to your left&#8221;</p></li></ul></li></ul><ul><li><p><strong>Pose</strong>: This is a noun. It is a physical location and orientation in 3D space.</p><ul><li><p>Example: &#8220;Standing at my front door facing the street.&#8221;</p></li></ul></li></ul><p>Notice we can take our example pose (standing at my front door facing the street) and <em>transform</em> it into another pose by using our transform instructions (take 10 steps forward and then turn 90 degrees to your left). If we do that we have a <em>new</em> pose that is a bit in front of my house and (in my case) facing our detached garage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OChJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OChJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 424w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 848w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 1272w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OChJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png" width="352" height="364.2744656917885" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:889,&quot;resizeWidth&quot;:352,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OChJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 424w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 848w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 1272w, https://substackcdn.com/image/fetch/$s_!OChJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37135ed9-63e7-4415-a4c6-c1b396d26869_889x920.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We can make any pose we want by taking a starting point and transforming it. The starting points are called &#8220;frames of reference&#8221; (or just frames) and without them we can&#8217;t talk about where anything is. You can think about frames as famous poses. They are like pose celebrities. Everybody knows them. </p><p>In this sentence, &#8220;From the Target Parking lot, take the first right and go two blocks&#8221; we define a pose. The transform is &#8220;take the first right then two blocks&#8221; and the frame is &#8220;Target Parking Lot&#8221;. This uniquely describes a location and orientation.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Which brings them to our definition.</p><ul><li><p><strong>Frame: </strong>This is a pose that is so important we&#8217;ve named it and<em> everyone knows about it</em>. We use them to measure where things are in reference to it.&nbsp;</p><ul><li><p>Example: We could name &#8220;Standing at my front door facing the street&#8221; &#8220;journey_start&#8221; and then we could describe that other pose by saying, &#8220;from journey_start take 10 steps forward and turn 90 degrees to your left&#8221;</p></li></ul></li></ul><h2>Why is this good?</h2><p>It helps make it clear what information is needed for each of these things.</p><ul><li><p>A transform is a change-in-position and change-in-orientation.</p></li><li><p>A pose is a transform plus a reference frame.</p></li><li><p>A frame is a famous pose with a name that other poses refer to.</p></li></ul><p>Each one in the list takes the one before and one additional piece of information. Traditional robotics software often uses data-structures that only have enough information to hold a transform and uses it to represent poses and frames. So where does the starting frame information go? <em>Into the variable name(!).</em></p><p>Robot code often looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rztl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rztl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 424w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 848w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 1272w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rztl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png" width="487" height="260" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:487,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rztl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 424w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 848w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 1272w, https://substackcdn.com/image/fetch/$s_!Rztl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F138d66d1-67fe-4af2-bfd1-3cc9c684ddd6_487x260.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Where each of those things is actually a transform object, representing a pose by storing the starting frame into the variable name before the &#8220;_t_&#8221; (which stands for &#8220;transform&#8221;). This tradition started because there is a nifty math trick where if you stuff the rotation and translation just right into a 4x4 matrix (and add an extra 1 in the right spot) you can chain transforms together by multiplying the matrices.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> But this is error prone and it's easy to get the order wrong because matrix multiplication is not commutative (A*B != B*A) so the naming convention helps because you can look and see that the words next to each other are the same.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P9l2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P9l2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 424w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 848w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 1272w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P9l2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png" width="1077" height="81" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:81,&quot;width&quot;:1077,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P9l2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 424w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 848w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 1272w, https://substackcdn.com/image/fetch/$s_!P9l2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e4baba9-b387-4bea-b3cc-6512fd0928f2_1077x81.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But the fact that we can calculate transforms via matrix multiply is an <em>implementation detail. </em>We don&#8217;t have to structure our code and variable names to carefully multiply matrices just right. That's what computers are for.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> That's why in <code>posetree</code>, poses contain their defining frame as part of the 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_!2Igx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Igx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 424w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 848w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 1272w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Igx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png" width="395" height="260" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:395,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Igx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 424w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 848w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 1272w, https://substackcdn.com/image/fetch/$s_!2Igx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c39a4-7da5-4087-851d-95e1cbb19343_395x260.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>No really, why is this better?</h2><p>Because poses know their frames and have a reference to the transforms between all the current frames, they can do math across frames automatically.</p><p>Here is an example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6-wD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6-wD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 424w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 848w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 1272w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6-wD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png" width="833" height="316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:833,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6-wD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 424w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 848w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 1272w, https://substackcdn.com/image/fetch/$s_!6-wD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42edfd7f-65e2-4e81-97cd-2fe1620461d9_833x316.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Those poses are defined in different frames. To do this without this library looks something like:</p><p><code>distance_from_person_to_charging_bay = np.linalg.norm(get_translation(world_origin_t_charging_bay.inverse() * world_origin_t_robot * robot_t_camera * camera_t_person))</code><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p>If this small example seems tricky, I guarantee you it gets a lot harder. And every roboticist has made the mistake of getting the order wrong or forgetting an inverse.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><h2>Show me more things it can do!</h2><p>Sure thing!</p><p>Let's get a set of potential pre-grasp poses that are in a 50 cm ring around a bottle with z pointed inwards. The bottle comes back with a pose where it&#8217;s z points up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-b2I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-b2I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 424w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 848w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 1272w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-b2I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png" width="690" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53113,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-b2I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 424w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 848w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 1272w, https://substackcdn.com/image/fetch/$s_!-b2I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d50bac9-36ec-47e0-a9ad-9454569afbe3_690x354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oQaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oQaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 424w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 848w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 1272w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oQaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png" width="727" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:727,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oQaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 424w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 848w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 1272w, https://substackcdn.com/image/fetch/$s_!oQaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04bdd367-7c9a-456f-81a6-35727b772d42_727x450.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Lets point the robot base at a person:</p><p>We&#8217;ll take the current pose, and rotate it about z to have the x-axis point at person pose. What frame is <code>person_pose </code>in? I don&#8217;t know and I don&#8217;t care.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pr-S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pr-S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 424w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 848w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 1272w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pr-S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png" width="690" height="242" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:242,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pr-S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 424w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 848w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 1272w, https://substackcdn.com/image/fetch/$s_!pr-S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F604a43cc-a7f1-49fa-8a9a-89e28791d47a_690x242.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Lets carefully construct a grasp pose:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Z9q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Z9q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 424w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 848w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 1272w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Z9q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png" width="746" height="391" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:391,&quot;width&quot;:746,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Z9q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 424w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 848w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 1272w, https://substackcdn.com/image/fetch/$s_!3Z9q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60f911e9-98cc-48f2-b8dd-83338a8b2220_746x391.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>But the big win is the &#8220;timestamps&#8221; part</h2><p>Because a pose represents a place relative to another frame, and frames move all the time, and the <code>pose_tree </code>is aware of that motion, you can express very powerful ideas with simple code.</p><p>We expect a lamp to stay stationary relative to the world, so we&#8217;ll store its pose in that frame. We&#8217;re also careful to convert from the camera frame (were we detect the lamp) into world frame at the camera-shutter timestamp, so that even if the robot is moving and we get the detection message after a bit of delay, our telemetry data and perception data are synced and the lamp is fixed to the outside world exactly where we saw 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_!OC82!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OC82!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 424w, https://substackcdn.com/image/fetch/$s_!OC82!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 848w, https://substackcdn.com/image/fetch/$s_!OC82!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 1272w, https://substackcdn.com/image/fetch/$s_!OC82!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OC82!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png" width="850" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OC82!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 424w, https://substackcdn.com/image/fetch/$s_!OC82!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 848w, https://substackcdn.com/image/fetch/$s_!OC82!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 1272w, https://substackcdn.com/image/fetch/$s_!OC82!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6207e68b-64a8-4dc5-952c-de5cbc1ead82_850x354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Under the hood, <code>look_at </code>will call<code> lamp_pose.in_frame(&#8220;robot&#8221;) </code>to figure out where the lamp is relative to the robot and calculate the angles needed to move the head to look at it, even though the robot has moved away since we observed the lamp.</p><p>In general you can use the <code>parent_frame </code>of a pose to &#8216;glue&#8217; it to something; like the robot&#8217;s base, the world or even the tool. For example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0yd-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0yd-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 424w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 848w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 1272w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0yd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png" width="841" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fee3f225-1334-42b0-b767-8f5c8053631d_841x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:841,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0yd-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 424w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 848w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 1272w, https://substackcdn.com/image/fetch/$s_!0yd-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee3f225-1334-42b0-b767-8f5c8053631d_841x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve read this far you should check out the <a href="https://github.com/robobenjie/posetree">readme </a>and <a href="https://htmlpreview.github.io/?https://raw.githubusercontent.com/robobenjie/posetree/main/docs/posetree/pose.html">documentation</a> because I worked, like, really hard on it. And if you&#8217;re working on a robotics project, try integrating it and let me know how it goes!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/announcing-posetreepy-wrangling-timestamps?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>Thanks to Ryan Julian and Jeff Bingham for reading early drafts of this and for getting philosophical about poses with me many times over the years.</p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>And, I have to say, 6 months of working on whatever interests me has honestly been fantastic. 10/10 would be laid off again.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>&nbsp;There are many Target Parking lots in the world but as long as both people know which Target they mean, they can use it as a frame. Just like there are many robots and cameras in the world, but code can use &#8216;robot&#8217; and &#8216;camera&#8217; as frames because its clear from context what those two frames are. Unless there are multiple cameras or robots, in which case you&#8217;d need more specific frame names.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>(IE, if you have one matrix that represents &#8220;walk forward 10 steps then turn around&#8221; and another that represents &#8220;walk forward 3 steps and turn left&#8221; if you multiply those together you&#8217;ll end up with &#8220;walk forward 7 steps and turn right&#8221; which is the result of doing those two thing).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Teen_Talk_Barbie#Controversy">Math is hard</a>, let's go watch the Barbie movie.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>And we see our &#8220;make sure the words next to each other match&#8221; rule is already falling apart because we needed charging_bay_t_world_origin but we only had world_origin_t_charging bay so we use inverse() which swaps it at the cost of our rule. Of course you could create a local var to hold the inverse each time you need it, but in practice folks prefer the brevity.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>If this small example seems tricky, I guarantee you it gets a lot harder. And every roboticist has made the mistake of getting the order wrong or forgetting an inverse</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Dimension Hopper Part 1 ]]></title><description><![CDATA[2D Platformer using Stable Diffusion for live level art creation]]></description><link>https://generalrobots.substack.com/p/dimension-hopper-part-1</link><guid isPermaLink="false">https://generalrobots.substack.com/p/dimension-hopper-part-1</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Mon, 12 Jun 2023 15:12:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/29a40b14-329b-4222-ab1a-851f8ab1efa8_800x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The next few posts are going to depart a bit from the regular theme (which has been lessons learned in a career doing general purpose robotics). Instead I&#8217;ve decided to use some of my new free time<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> to learn by doing and play with some of the cool new ML all the cool kids are talking about.&nbsp;</p><h1>The Project:</h1><p>My project is to make a 2D platformer where the players can design their own levels and then generative AI will create beautiful rendered images to represent the levels.&nbsp;I wanted to do something that wouldn&#8217;t be possible without AI: letting the players participate in the creation of art. We&#8217;ll skip to the end and you can see what the game looks like now:</p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a33391c1-5ab3-4965-90c2-f9adb034123a&quot;,&quot;duration&quot;:null}"></div><p>And here are some of the different themes, though you can also create your own.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;532f4614-4b42-4648-b422-57c73af894f1&quot;,&quot;duration&quot;:null}"></div><p></p><p>You can play with it here: <a href="http://dimensionhopper.com">dimensionhopper.com</a></p><p>I recommend looking at random levels or the gallery and seeing what&#8217;s out there.</p><h1>The Journey</h1><p>But lets talk about the process to get there.</p><h2>Part 1: proof of concept</h2><p>I&#8217;d played a little bit with Stable Diffusion before and it is a really fun toy to make cool pictures, but I always felt like I didn&#8217;t have quite enough control. For me the enjoyment of creation comes from the interaction between what I do and what I get, and I wanted to have more input. That&#8217;s why I was so excited when I read about control-net, which gives a ton more knobs to control the output. I immediately wanted to use it to make a 2D game.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><h2>Getting up and going</h2><p>I installed Stable-Diffusion on my laptop, fired up the webui<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> got control net working and fed this depth image into Stable Diffusion:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QX4z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QX4z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QX4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png" width="390" height="195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QX4z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!QX4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391087fb-3684-41cf-842d-80c8f1431a5c_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This has the platforms as the closest pixels (white) and the black background means that part is far away. I was using a pixel-art model that had this amazing demo pic in the <a href="https://civitai.com/images/327127?modelVersionId=28985&amp;prioritizedUserIds=16910&amp;period=AllTime&amp;sort=Most+Reactions&amp;limit=20">CIVAI </a>page:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZKfZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 424w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 848w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 1272w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png" width="370" height="221.08516483516485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:870,&quot;width&quot;:1456,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 424w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 848w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 1272w, https://substackcdn.com/image/fetch/$s_!ZKfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202a3728-a647-45ad-b415-16f235b3f9b3_1472x880.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>So I copy the prompt and settings from that, tweaked a bit and hit generate&#8230;&#8230;.. And get this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bb5b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bb5b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bb5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png" width="382" height="191" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb7103a8-7010-46a0-9149-20847f029db5_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:382,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bb5b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!bb5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7103a8-7010-46a0-9149-20847f029db5_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Not quite what I was hoping for&#8230; I try and fail to get the depth mode working for a while.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VKaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VKaR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 424w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 848w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 1272w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VKaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png" width="934" height="167" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:167,&quot;width&quot;:934,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102295,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VKaR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 424w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 848w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 1272w, https://substackcdn.com/image/fetch/$s_!VKaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a91fc4b-c9d1-4cb9-9dd6-f0c7ef201c3c_934x167.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And switch over to &#8220;scribble&#8221; mode for control-net. Scribble mode takes outlines of shapes and lets them guide the images (instead of depth).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1pEm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1pEm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1pEm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png" width="384" height="192" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c955fbbd-2c07-4706-b258-7451092bb516_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:384,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1pEm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!1pEm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc955fbbd-2c07-4706-b258-7451092bb516_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>More interesting but still not good.&nbsp;</p><p>Changing the prompt:&nbsp;</p><p>&#8220;pixelart video game environment, platformer level. Create an image of a mystic stone temple in the jungle. shafts of sunlight, dramatic lighting. Vines and cracks in brown stone&#8221;</p><p>Much closer! I have a picture. It kind of interacted with the level. Still not <em>good</em> but better.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Djeo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Djeo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Djeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png" width="390" height="195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Djeo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!Djeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89cb1af-1297-42f4-b710-30b2c84e0a57_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Ooh, I have the level casting some shadows now.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!674R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!674R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!674R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!674R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!674R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!674R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png" width="370" height="185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:370,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!674R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!674R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!674R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!674R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cbe394-fe10-4a24-9637-31a2f6a5a092_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>&#8220;pixelart video game environment, Create an image of an abandoned space station, with broken systems, flickering lights, and a sense of danger. Show the wreckage, the abandoned rooms, and the unknown threats that linger.&#8221;</em></p><p>Eventually with some more playing around with settings I get levels like this pretty reliably:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0aOX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0aOX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 424w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 848w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 1272w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0aOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png" width="979" height="513" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:513,&quot;width&quot;:979,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:779047,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0aOX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 424w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 848w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 1272w, https://substackcdn.com/image/fetch/$s_!0aOX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f50acd1-9f74-4f3e-94d6-54addb921280_979x513.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This is a big improvement over the start, but (1) it didn&#8217;t really look like the level was part of the art, it was, at best, pasted over, and (2) the level textures looked like a repeating tileset. Human videogame developers do this so that they don&#8217;t have to draw a different bit of grass for every square of platform, but I didn&#8217;t have that constraint. Huh.</p><h2>No more pixelart.</h2><p>I decided that part of my problem was using a model trained on pixelart. It was faithfully copying the genre of repeated tileset, which was exactly what I <em><strong>didn&#8217;t</strong></em> want. So I changed to another model, this one built around children&#8217;s illustration, and my first image out 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_!t3Gc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t3Gc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t3Gc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png" width="800" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t3Gc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!t3Gc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f8d2e12-a631-4cf6-9939-aa02a31f0e84_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Wow! So much better! The platforms have shadows on them, have objects in front and behind and it's actually a nice picture. I&#8217;m on to something!</p><p>The new model made nice pictures but I quickly realize I&#8217;m walking the line between two failure modes.&nbsp;</p><p>Either I have a nice picture with the level kind of mostly drawn on top of 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_!FfWw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FfWw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 424w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 848w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 1272w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FfWw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png" width="952" height="573" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:573,&quot;width&quot;:952,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:827487,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FfWw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 424w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 848w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 1272w, https://substackcdn.com/image/fetch/$s_!FfWw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8af984dc-a4c7-4ff8-a3a9-53c86f79258e_952x573.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Or I get a nice, integrated picture where its really unclear where you are allowed to stand:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NKEJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NKEJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 424w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 848w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 1272w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NKEJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png" width="1035" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1035,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1290350,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NKEJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 424w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 848w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 1272w, https://substackcdn.com/image/fetch/$s_!NKEJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4a3384-f225-49e3-8d51-589e96a2efc8_1035x713.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ex1K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ex1K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ex1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png" width="494" height="247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:494,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ex1K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!Ex1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f724962-36fe-4a20-86ff-4e10661e8a73_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The last one is especially problematic because the &#8216;level&#8217; part you can stand on has been rendered as a window, exactly inverting the semantics. This is a fundamental problem with using &#8216;scribble-mode&#8217; as I&#8217;m giving Stable Diffusion no way to know what is close and what is far, just outlined shapes.&nbsp;</p><h2>Breakthrough: Lips on the Platforms.</h2><p>I go back to depth, but have a thought: what if I hint that the top of the platform has a little lip. Rather than code it in my game rendering engine I just draw them in Gimp.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bheh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bheh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!bheh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!bheh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!bheh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bheh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png" width="372" height="186" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:372,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bheh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!bheh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!bheh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!bheh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0fd165-c36a-426c-a733-cf6a1b481fd1_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_uni!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_uni!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!_uni!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!_uni!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!_uni!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_uni!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png" width="376" height="188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6046469-dd5e-43c7-b5bd-357134705415_800x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:800,&quot;resizeWidth&quot;:376,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_uni!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 424w, https://substackcdn.com/image/fetch/$s_!_uni!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 848w, https://substackcdn.com/image/fetch/$s_!_uni!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 1272w, https://substackcdn.com/image/fetch/$s_!_uni!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6046469-dd5e-43c7-b5bd-357134705415_800x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Happy little platform toppers</em></p><p></p><p>Holy shit it works!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vuxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vuxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 424w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 848w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 1272w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vuxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png" width="1007" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1007,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1508871,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vuxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 424w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 848w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 1272w, https://substackcdn.com/image/fetch/$s_!vuxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532c4f36-bd5a-4819-a44e-0da998690c79_1007x877.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>And more importantly: it works pretty much every time. Most Stable-Diffusion workflows include generating 4-10x more images than you actually want, and choosing the good one. For my idea to work we needed all of the levels to be playable (you can tell where the platforms are) and most of them to be good (beautiful illustration) because there wouldn&#8217;t be a human curation step.</p><h2>Control Image Matters</h2><p>I&#8217;ve learned that the look of the depth image really changes the quality of the output. I was working on jungle ruins and kept getting images 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_!iVy4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iVy4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 424w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 848w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 1272w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iVy4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png" width="975" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:975,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:280823,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iVy4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 424w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 848w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 1272w, https://substackcdn.com/image/fetch/$s_!iVy4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b10de99-55e6-4cec-b37f-8e4fe63dfef0_975x338.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>(Side note: its amazing how quickly standards rise. Early on that image blew me away, but now it looks meh).&nbsp;</p><p>The problem<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> is that there aren&#8217;t really any reasonable pictures of jungles with that depth map. Jungles (and really everything) doesn&#8217;t look like that. Stuff doesn&#8217;t float in the air, it has stuff under it holding it up. This leads to breakthrough 2: add supports.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v-wZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v-wZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 424w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 848w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 1272w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v-wZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png" width="1028" height="353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:353,&quot;width&quot;:1028,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:295971,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v-wZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 424w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 848w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 1272w, https://substackcdn.com/image/fetch/$s_!v-wZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f53ffab-2bb4-4e68-9265-c925b6e9e0a7_1028x353.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Each platform block projects a dark gray box to the floor below it and that gives structure to the world. The dark gray has no gameplay purpose, it just acts as a hint to Stable Diffusion about what the picture is of. And we get <strong>much</strong> better images. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M7Pg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M7Pg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M7Pg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png" width="800" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M7Pg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!M7Pg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af8b859-8f43-4258-b475-eaa1a134a396_800x544.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KP1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KP1b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KP1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png" width="800" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KP1b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!KP1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa581fc9e-7cdb-4336-914a-4b6a3e72524b_800x544.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Things were pretty good, but I was still having trouble with caves, and I wondered if it was because it was trying to match the straight, sharp edges of the depth map and having a hard time making it look organic, so I added adjustable roughness to the images (as well as adjustable background depth so that sky can be far away for outdoor scenes and closer for indoor/jungle scenes.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E_9O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_9O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 424w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 848w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 1272w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png" width="997" height="346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:346,&quot;width&quot;:997,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21449,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E_9O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 424w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 848w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 1272w, https://substackcdn.com/image/fetch/$s_!E_9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3316605-18d4-4387-a26d-dd2437fd90c5_997x346.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!93Yp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!93Yp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!93Yp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png" width="800" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!93Yp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!93Yp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87145fcb-d89e-44a3-8dbc-a245d76ae395_800x544.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Notice the bottoms of the platforms are really straight and its invented a bunch of lightcolumns / waterfalls that can have perfectly straight verticals. This one is actually quite good, but the square corners are not ideal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MUFZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MUFZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MUFZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png" width="800" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf36937-a0d2-4084-a860-8cc108b61083_800x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MUFZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 424w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 848w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 1272w, https://substackcdn.com/image/fetch/$s_!MUFZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf36937-a0d2-4084-a860-8cc108b61083_800x544.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now everything is believably subterranean, and the underlighting on the bumpy rocks looks right.</p><h2>Gems and Characters</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7AfH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7AfH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7AfH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png" width="102" height="102" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:256,&quot;resizeWidth&quot;:102,&quot;bytes&quot;:83723,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7AfH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!7AfH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1566e9-53b2-4f19-8a77-ebb17b0b1e0e_256x256.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Stable diffusion doesn&#8217;t create any transparency. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RF6c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RF6c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RF6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png" width="116" height="116" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:256,&quot;resizeWidth&quot;:116,&quot;bytes&quot;:57085,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RF6c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 424w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 848w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 1272w, https://substackcdn.com/image/fetch/$s_!RF6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4bebe02-3071-44a0-84ea-0943c263f51f_256x256.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But can cheat with the level image because I have the depth information I fed in and mask based on that, so characters can go &#8216;behind&#8217; the platforms when needed. For the gems, if I ask for &#8216;&lt;blue gem/ruby jewel&gt; floating videogame object on a black background&#8217; and then subtract the background in python.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vFZi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vFZi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vFZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg" width="124" height="124" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:124,&quot;bytes&quot;:13797,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vFZi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vFZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a947570-2c98-4579-ac95-32bd2de85fd7_512x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>For characters I found this <a href="https://huggingface.co/Onodofthenorth/SD_PixelArt_SpriteSheet_Generator">model</a> which was really fine-tuned to heck to make 4 frame walk animations. The creator really wanted left/right/up/down animations so combines this model with a lora of whoever the subject is to create all 4 directions depicting the same character. As a result, I think it is trained so all the &#8216;walk right&#8217; just get the prompt &#8220;PixelartRSS&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4arX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4arX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4arX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4arX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4arX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4arX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg" width="146" height="146" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:146,&quot;bytes&quot;:14109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4arX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4arX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4arX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4arX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1c8724-acb5-495f-8e87-feae93d34d36_512x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I&#8217;d like to be able to prompt something about the character I want, and this sometimes kinda works<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> but not nearly as reliably as I&#8217;d like. My suspicion is that if I had the training data, limited it to just the sideways walk and labeled it with actual descriptions of the characters it would work better for me. But it does reliably make people that walk. So as long as you aren&#8217;t picky, you can get new player character sprites all day long.</p><h2>Wrapping it all up</h2><p>From there I just had to make it work in my own app. I used the excellent <a href="https://huggingface.co/blog/stable_diffusion">diffusers </a>library to wrap the generation and make my little server. Everything is moving so fast that I&#8217;m sure I&#8217;ve done some things in very silly ways in my image_generation.py and there are probably 2-3x speedups to be gained be configuring it right, but for now it all works, and it&#8217;s fun to play with. Why are you still reading? Go check it out!</p><p><a href="http://dimensionhopper.com">dimensionhopper.com</a></p><p>And subscribe for more about the development of this game, and more robotics content after that.</p><p></p><p>Discuss on Hacker News: <a href="https://news.ycombinator.com/item?id=36295227">https://news.ycombinator.com/item?id=36295227</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/dimension-hopper-part-1?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/dimension-hopper-part-1?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Who needs a job when you have hobbies?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I&#8217;m sure a bunch of other folks have had the same idea but as far as my lazy googling can turn up, no one is doing dynamic level rendering during gameplay. Maybe after this blog-post there will be more ;).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Not pictured: several frustrating hours of conda, pip, configuration, cuda, torch, nvidia-drivers, etc etc. Why is the world still like this?</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>I think, though who knows what&#8217;s going on in the mind of the black box</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>The backgrounds end up being mostly, but not exactly an even color, so I use the average of the border pixels and subtract everything within some threshold of that.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>I assume some of stable-diffusion&#8217;s semantic understanding leaks through the super strict fine-tuning.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Tech Debt]]></title><description><![CDATA[When people start working on General Purpose Robots there is a tendency to try to make sure that everything they do is Fully General Purpose And Future Proof. They have grand visions and world changing ambitions. Those make it seem like they should be building grand software, to match. This pushes folks really hard towards a really expensive kind of tech debt. Here&#8217;s some sniff tests to keep an eye out for:]]></description><link>https://generalrobots.substack.com/p/tech-debt</link><guid isPermaLink="false">https://generalrobots.substack.com/p/tech-debt</guid><dc:creator><![CDATA[Benjie Holson]]></dc:creator><pubDate>Tue, 02 May 2023 17:56:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a3e33735-3119-4609-ab02-c244eb771e8f_614x617.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>About this series</strong></h2><p>I&#8217;ve been working on general purpose robots with<a href="https://everydayrobots.com/"> Everyday Robots</a> for 8 years, and was the engineering lead of the product/applications group until we were impacted<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> by the recent Alphabet layoffs. This series is an attempt to share almost a decade of lessons learned so you can get a head start making robots that live and work among us. Previous posts live<a href="https://generalrobots.substack.com/"> here</a>.</p><h2>What is Tech Debt?</h2><p>In my experience, there are two kinds of tech debt. The first comes from going fast and building something that cuts corners. This is the kind of tech debt that most people think of. It is a loan against the future to get something done now, and you pay it down (often with interest) when you have more resources. We&#8217;ll call this Cut-Corner tech debt, and it gets a bad rap, but it is often a good idea to take on some Cut-Corner tech debt in order to move fast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RHvh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RHvh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 424w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 848w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 1272w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RHvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png" width="564" height="266.89285714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1456,&quot;resizeWidth&quot;:564,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RHvh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 424w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 848w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 1272w, https://substackcdn.com/image/fetch/$s_!RHvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfc522d-9f19-46b3-9bf0-4e46b09cbbb8_1600x757.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>&#8220;We can&#8217;t hardcode the location of every robot charging station into our source code! There should be a cloud! And a UI! And permissions! And ways for the robot to autonomously update them if they detect that they&#8217;ve moved!&#8221;</em></p><p><em>&#8220;There are only 3 charging stations in the whole world&#8230; and I finished hard coding them while you were talking.&#8221;</em></p><p></p><p>Then there is the other kind of tech debt. This one comes from having a problem, sitting down and imagining a system that could solve that problem, writing down all the other problems the system could be extended to solve, and then building <em>that</em> system. It feels really good because you are building something beautiful and future proof and extensible and scalable and all the things that make engineering satisfying.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TxJa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TxJa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 424w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 848w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 1272w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TxJa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png" width="542" height="294.90329436769395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:941,&quot;resizeWidth&quot;:542,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TxJa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 424w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 848w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 1272w, https://substackcdn.com/image/fetch/$s_!TxJa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f397f3-82e2-444e-bdb5-58cc96944f91_941x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>&#8220;If I modify it just a little bit, I <strong>think</strong> I can make my type system do SLAM and also function as a working ML accelerator&#8221;</em></p><p></p><p>But you only have experience with the one problem that you started with, and probably still don&#8217;t understand it well.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> And odds are high you will never ever need any of the other features you imagined. You&#8217;ll end up with a large, very complicated system that solves a bunch of problems you don&#8217;t have, but is hard to change when you learn that you misunderstood the original problem. We&#8217;ll call this Grand-Framework tech debt.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-uwR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-uwR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 424w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 848w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 1272w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-uwR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png" width="422" height="300.0888888888889" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:720,&quot;resizeWidth&quot;:422,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-uwR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 424w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 848w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 1272w, https://substackcdn.com/image/fetch/$s_!-uwR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dab69a-7ca9-4e52-ba85-1e5cac3f881f_720x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>&#8220;I finished my Universal Task Execution Framework. Now we can use it!&#8221;&nbsp;</em></p><p><em>&#8220;Great! Can you get the robot to pick up one of these two cans?&#8221;</em>&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3SU_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3SU_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 424w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 848w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 1272w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3SU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png" width="420" height="298.6666666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:720,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3SU_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 424w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 848w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 1272w, https://substackcdn.com/image/fetch/$s_!3SU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612449b9-0eb1-45bd-9ff2-b2dc8c6b0985_720x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>&#8220;Um, well, no, UTEF assumes a single perception context object. Hmm. Maybe I could create an Orchestration Framework for managing multiple UTEFs? Oh, but the cloud optimization depends on a singleton&#8230; Umm, Let me get back to you in a few weeks&#8221;&nbsp;</em></p><h2>YAGNI vs DRY: Fight!</h2><p>Engineers overestimate the odds they will need a feature and underestimate the effort to refactor a small system.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> This is why people still have to go around yelling, &#8220;You Ain&#8217;t Gonna Need It&#8221; (YAGNI). Because deep in our hearts we are <em>sure</em> that we will need it, even though we almost never have in the past. Another engineering adage, &#8220;Don&#8217;t Repeat Yourself&#8221; (DRY), can lead you astray, because it seems to say "always make an abstraction".<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> Don&#8217;t be so afraid to repeat yourself that you build a big system <em>just in case.</em></p><p>In DRY vs YAGNI I lean toward YAGNI every time:</p><p>That's because the first flavor of tech debt is <strong>so much nicer</strong>. It is cheap to acquire (that's the whole point of cutting corners) and cheaper to clean up (because it's small and you don&#8217;t hurt anyone's feelings/career if you delete it). Whereas the second flavor of tech debt is very expensive to acquire AND expensive to remove.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><h2>Scar Tissue</h2><p>As companies grow and mature they develop what I call &#8216;scar tissue&#8217;. This comes from something bad happening (like an outage) followed by a post-mortem (ooh, an intern changed a config) and a policy change (config changes need to be peer reviewed). Each bit of scar tissue is a good idea, but the net effect is a growing continuous drag on getting things done.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> Folks coming from big companies sometimes see the cut-corners in the ancient parts of the code base and know the pain and scarring they caused and think, &#8220;We&#8217;ve learned better. That cut-corner-code sure caused a bunch of headaches as we scaled. I won&#8217;t make that mistake: we&#8217;ll start with scalable stuff right off the bat.&#8221; I suspect that the old code at successful companies is full of cut-corner tech debt because that is how those companies moved fast enough (and learned fast enough) to become successful. And the startups that built beautiful abstractions from the beginning starved from lack of progress and never got to hire a bunch of engineers to admire their beautiful architecture.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-BHv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-BHv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 424w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 848w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 1272w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-BHv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png" width="478" height="238.53411306042884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1026,&quot;resizeWidth&quot;:478,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-BHv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 424w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 848w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 1272w, https://substackcdn.com/image/fetch/$s_!-BHv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf819da8-fce2-4831-9cc6-615408f02c9b_1026x512.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>&#8220;Three years in, I have invented the perfect programming language to write my startup&#8217;s code in.&#8221;&nbsp;</em></p><p><em>&#8220;What&#8217;s the product?&#8221;&nbsp;</em></p><p><em>&#8220;Well, nothing, actually. We ran out of money a year ago.&#8221;</em></p><h2>TLDR?</h2><p>Some tech debt comes from doing a sloppy job on execution, some comes from doing a sloppy job on understanding the problem. Great execution on the wrong problem is <em>way worse in the short and long term</em>, which is why doing rough, throw-away work in order to fully understand the problem is worth it even though it feels bad.</p><h2>What does this have to do with robots?</h2><p>When people start working on general purpose robots there is a tendency to try to make sure that everything they do is Fully General Purpose And Future Proof. They have grand visions and world changing ambitions. So it seems like they should be building grand software, to match. This pushes folks really hard towards the expensive kind of tech debt. Here&#8217;s some sniff tests to keep an eye out for:&nbsp;</p><h4>Can We Make It More General Purpose?:</h4><p>You are facing a problem for the first time and you propose a simple solution. A fellow engineer (who&#8217;s otherwise a smart, well meaning, lovely human being) asks, &#8220;Yeah, but is that general purpose enough?&#8221; You are in the danger zone for Grand-Framework tech debt. Stick to your guns and generalize only to problems you have right now.</p><h4>Cart Before the Horse:</h4><p>If you are building a generic capability and go hunting for a problem to use it on (a problem you otherwise wouldn&#8217;t need to solve in order to build your MVP) because it makes your <em>platform</em> feel more &#8220;general purpose&#8221; you are in the danger zone for Grand-Framework tech debt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KlPj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KlPj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 424w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 848w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KlPj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png" width="516" height="361.8379120879121" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1021,&quot;width&quot;:1456,&quot;resizeWidth&quot;:516,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KlPj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 424w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 848w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!KlPj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9aad5b1-932c-4dbd-92ca-2684d7cc737a_1600x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Good news, I got our customer to agree to spread rubble in parts of their warehouse so we can practice walking on uneven terrain!</em></p><p></p><h4>Building for Someone Else:</h4><p>If you are considering building a library or framework to support a workflow or help solve a problem that you&#8217;ve never solved yourself you are in the danger zone for Grand-Framework tech debt.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><h4>This is for &#8220;Non-Roboticists&#8221;:</h4><p>This is a special case of &#8220; Building for Someone Else&#8221; that seems to pop up a lot for folks interested in general purpose robots. The impulse is good: making robots do things is hard and it would be good if it was easier. The problem here is that by framing it&nbsp; &#8220;accessible to non-roboticists&#8221; you encourage frameworks and libraries that try to hide the complexity of the problem inside of magic. Folks propose APIs like this:</p><p><code>robot.grasp(&#8220;apple&#8221;)</code></p><p><code>robot.place_into(&#8220;basket&#8221;)</code></p><p>Which is great until &#8220;grasp&#8221; doesn&#8217;t work for you or do exactly what you&#8217;d want. It&#8217;s like all those web-app-frameworks that make for great demos in a hackathon (look you can make twitter in 4 minutes) but no one actually builds real applications out of them. They let you get to 80% in a few minutes but have no path to 100% because you can&#8217;t control all the things you need to. Instead, <strong>make programming robots productive for folks as smart and capable as you, but who are less patient for stupid bullshit</strong>. That&#8217;s how to make a beautiful API.</p><h4>Classic &#8220;You Ain&#8217;t Gonna Need It&#8221;:</h4><p>If someone says, &#8220;We don&#8217;t need this now, but I&#8217;m <em>sure</em> we&#8217;re <em>going</em> to need it eventually and it's going to take a very long time to build so we should start now&#8221; you are in the red-hot alarms-blaring danger zone for Grand-Framework tech debt.</p><h2>How to have the good kind of tech debt</h2><p>The way out of this, culturally, is to acknowledge that no-one (including you) knows how to build general purpose robots that work. And acknowledge that most things are going to be wrong the first few times. The shortest, best, path to general purpose components is to reject DRY and repeat yourself, implementing single purpose, application specific, feels-unscalable-and-throwaway behaviors.</p><p>Then, once you have two or three of those under your belt, look at where you spend a bunch of time-that-doesn&#8217;t-feel-productive and pull those out into a library or RPC. Keep things composable, opt-in and a-la-carte so it's easy to stop using the parts you don&#8217;t like. My favorite pieces of software are the second or third version of libraries written by people who were scratching their own itch.</p><h2>My Favorite Acronym: TSTTCPW</h2><p>Always strive to built <em><strong>T</strong>he <strong>S</strong>implest <strong>T</strong>hing <strong>T</strong>hat <strong>C</strong>ould <strong>P</strong>ossibly <strong>W</strong>ork</em>. Let future requirements be covered by future refactoring. You&#8217;ll still end up with tech debt (all projects get tech debt), but you&#8217;ll end up with mostly the cheap kind and avoid the expensive kind.</p><blockquote><p>"A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work."<br><br>&#8211; John Gall</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.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://generalrobots.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://generalrobots.substack.com/p/tech-debt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://generalrobots.substack.com/p/tech-debt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cEg3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cEg3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cEg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg" width="371" height="208.02698650674662" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:374,&quot;width&quot;:667,&quot;resizeWidth&quot;:371,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cEg3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cEg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b173da3-c1c6-4ed9-8fa4-a46efe5181ac_667x374.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I know I don&#8217;t feel like I really understand a problem until I&#8217;ve solved it at least once, probably twice.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Not all frameworks are tech-debt and not all over designed, overcomplicated systems are frameworks, but the two do seem to spend a lot of time together.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>If you don&#8217;t believe me, maybe you&#8217;ll believe John Carmack in <a href="https://twitter.com/ID_AA_Carmack/status/1405932642005041153">tweet form</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>There are other, healthier, ways to interpret DRY. It&#8217;s important to have a single source of truth for certain kinds of information, for example. That&#8217;s all gravy. And if you are disciplined you can avoid repeating yourself while also keeping your abstractions small and nimble, but DRY is often used to excuse big clunky abstractions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>I did a survey on tech debt among the software team at Everyday Robots and had folks list sources of tech debt, how much it slowed them down and how much effort it would take to clean up. We found we had slightly more instances of cut-corner tech debt, but were slowed down slightly more by grand-framework tech debt. But the real kicker was the grand-framework tech debt was estimated to take 5x more effort to clean up.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>Drag is OK if you are already winning. If you are doing well you <em>should </em>be more conservative about thrashing around. No one doing general purpose robots has the luxury of being conservative because no one has it figured out yet. Scar tissue seems like one of the big mechanisms that makes big companies slow. I was shocked at the slowdown going from a startup (12 employees) to Facebook (4k employees in 2012) and then to Alphabet (50k employees in 2014). I don&#8217;t know how to reverse the slowdown from scar tissue. It feels crazy to say, &#8220;I know we had a outage, but let's not add any more process to prevent it next time, because it slows us down 1%&#8221;. But empirically, those 1% slowdowns add up. It does seem worth it to try resist the accrual of scar tissue as long as you can, as Facebook&#8217;s famous &#8220;Move Fast and Break Things&#8221; tried to do.</p><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>If you do have to do this, my advice is to try to solve the problem and write your library at the same time, going back and forth between them. Write the library as you need bits of it, and err on the side of a smaller library and a bigger application. You can always move more of the application into the library later if you need that logic somewhere else.</p><p></p></div></div>]]></content:encoded></item></channel></rss>