<?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[Josh Lospinoso]]></title><description><![CDATA[Systems, statistics, and institutional lessons, adapted from lospino.so.]]></description><link>https://newsletter.lospino.so</link><image><url>https://substackcdn.com/image/fetch/$s_!J1s6!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffbd84e8-dd86-4cb0-9020-ec043bfdabe0_1024x1024.png</url><title>Josh Lospinoso</title><link>https://newsletter.lospino.so</link></image><generator>Substack</generator><lastBuildDate>Mon, 10 Aug 2026 14:28:44 GMT</lastBuildDate><atom:link href="https://newsletter.lospino.so/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Josh Lospinoso]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[joshlospinoso@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[joshlospinoso@substack.com]]></itunes:email><itunes:name><![CDATA[Josh Lospinoso]]></itunes:name></itunes:owner><itunes:author><![CDATA[Josh Lospinoso]]></itunes:author><googleplay:owner><![CDATA[joshlospinoso@substack.com]]></googleplay:owner><googleplay:email><![CDATA[joshlospinoso@substack.com]]></googleplay:email><googleplay:author><![CDATA[Josh Lospinoso]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Sentence Changed the Room]]></title><description><![CDATA[The room in this week&#8217;s Field Note is ordinary: melted ice, lemon peel, tired glasses, a table doing what tables do after a gathering has technically ended.]]></description><link>https://newsletter.lospino.so/p/the-sentence-changed-the-room</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-sentence-changed-the-room</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sun, 09 Aug 2026 10:00:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!udM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!udM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!udM8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!udM8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!udM8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!udM8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!udM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.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;:2953594,&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://newsletter.lospino.so/i/204789910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.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_!udM8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!udM8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!udM8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!udM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81a1d6e7-996a-4d2b-86a2-93a48eac6de9_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The room in this week&#8217;s Field Note is ordinary: melted ice, lemon peel, tired glasses, a table doing what tables do after a gathering has technically ended.</p><p>The visible subject has already outlived itself, but the conversation has not. It keeps moving because the people in it can move. That speed is not fake. It can be a gift. Anyone who has waited too long for a real interlocutor knows the relief of being met quickly, of having a thought caught in the air before it hits the floor.</p><p>The best conversations sometimes feel like shared aliveness: not performance exactly, but tempo, timing, duet.</p><p>And still, that is where the danger starts.</p><p>Velocity can become a way of taking someone else&#8217;s half-built thought as a ramp. A person begins to say something, and before the sentence has found its shape, someone else has already used it to launch the sharper analogy, the better line, the paragraph already waiting in his own head. I know this because I have done it, and because I have mistaken the thrill of doing it for generosity.</p><p>In the essay, the room changes when someone says a version of: go back.</p><p>Not as a rebuke. Not as a schoolroom correction. More like an act of hospitality. The sentence returns the thought to the person it came from. It asks speed to answer to care.</p><p>The point is not that silence is automatically virtuous. Silence can be boredom, fear, withdrawal, superiority, or fatigue. Nor is quickness suspect by itself. Quickness can be love. There are people whose rare gift is to make thought feel possible at full speed.</p><p>But sometimes the more exact thing is to stop winning the room. Sometimes the liveliest conversational move is not the next move. It is the return: the small refusal to convert someone else&#8217;s unfinished sentence into your own finished one.</p><p>No trophy. No winner. Just the table, having heard everything.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-sentence-changed-the-room/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260809_the-sentence-changed-the-room&amp;utm_content=dispatch">The Sentence Changed the Room</a></p><div><hr></div><p>Canonical essay scheduled for lospino.so on 2026-08-09. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy. The room is composite; no private conversation is being reproduced.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Supports That Leave a Scar]]></title><description><![CDATA[I was cleaning up a 3D print and hesitated with the cutters.]]></description><link>https://newsletter.lospino.so/p/the-supports-that-leave-a-scar</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-supports-that-leave-a-scar</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sun, 02 Aug 2026 10:01:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OafY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OafY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OafY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!OafY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!OafY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!OafY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OafY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.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;:3081840,&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://newsletter.lospino.so/i/204789878?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.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_!OafY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!OafY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!OafY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!OafY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabeda2a8-7d87-41ee-a6fb-f39e2da879af_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I was cleaning up a 3D print and hesitated with the cutters.</p><p>The object had come off the plate in that half-finished state familiar to anyone who has printed something with impossible geometry: useful shape hidden inside scaffolding. The support material had done its job. It had held up overhangs, protected thin edges, and let the print survive angles it could not have survived alone.</p><p>Then it had to be removed.</p><p>That sounds cleaner than it is. The cutters get in close. Plastic snaps. Small stress marks appear where the support gives way. Some places leave nubs. Some leave shallow pits. Some contacts are so fused into the surface that &#8220;cleaning it up&#8221; becomes a negotiation with damage. You can improve the piece, then improve it again, then suddenly you are no longer removing support. You are cutting into the thing itself.</p><p>The Field Note follows that pressure without pretending people are prints. The analogy breaks there, and it should. A person is not an object made by someone else&#8217;s machine. A household is not a build plate. Dependence is not a design flaw.</p><p>Still, support can work this way. It can be necessary structure. It can be labor. It can be love. It can make possible what would otherwise sag, warp, fail, or never begin. There are seasons when the geometry is impossible and some temporary architecture has to hold.</p><p>The trouble starts when the support cannot imagine becoming temporary. Or when the helper treats the finished shape as proof of authorship. Or when removal is described as ingratitude instead of part of the work the support was meant to make possible.</p><p>Even when removal is right, it may leave a mark. The scar does not prove the support was bad. The nub does not prove the structure was unnecessary. It may only prove there was contact.</p><p>At the desk, the lesson became less dramatic. There was a point where I could keep trimming, chasing the last rough edge. My hand stopped. Not everything left by support should be cut away.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-supports-that-leave-a-scar/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260802_the-supports-that-leave-a-scar&amp;utm_content=dispatch">The Supports That Leave a Scar</a></p><div><hr></div><p>Canonical essay scheduled for lospino.so on 2026-08-02. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Scorecard Was Not the Candidate]]></title><description><![CDATA[An interview scorecard can look more complete than the interview felt.]]></description><link>https://newsletter.lospino.so/p/the-scorecard-was-not-the-candidate</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-scorecard-was-not-the-candidate</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sun, 26 Jul 2026 10:00:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Q4xl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q4xl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q4xl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q4xl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.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;:2826338,&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://newsletter.lospino.so/i/204789845?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.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_!Q4xl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4xl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2de11fe-482a-4985-9f28-8b346c9ae097_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>An interview scorecard can look more complete than the interview felt.</p><p>Rows filled. Ratings selected. Notes compressed into phrases that can survive a hiring meeting. A work sample reduced to signal. A conversation reduced to proxies. A confidence field still waiting for someone to admit how much of the room remains unresolved.</p><p>This week&#8217;s Field Note is about that object after the candidate has left.</p><p>The argument is not that structured hiring is fake. It is not an argument for taste, vibes, charisma, or the private certainty of the interviewer. Structure is real discipline. Work samples help. Consistent rubrics help. Calibration helps. Process can reduce noise, especially the ordinary noise of mood, fatigue, appetite, impatience, and whatever weather the evaluator carried into the room.</p><p>Contempt for process is lazy.</p><p>But the trouble begins when the process becomes a laundering device. The rows look orderly. The ratings travel cleanly. The notes sound sober because they are short. The candidate&#8217;s moving, topic-specific world is pressed into fragments: examples, proxies, gaps, moments of fluency, moments of strain, signs of preparation, signs of improvisation.</p><p>The open role is still open. The empty seat still exerts pressure. The institution still wants the discomfort to end.</p><p>A scorecard can discipline judgment without replacing it. It can slow the interviewer down without making the decision morally clean. It can hold useful evidence without becoming the person it describes. It can help expose weak claims, but it cannot absolve the people who finally decide what the evidence means under uncertainty.</p><p>That distinction matters because hiring decisions often prefer the feeling of cleanliness to the reality of responsibility. The scorecard is not the candidate. It is a record made by people, under pressure, using proxies, after a short encounter, in service of an institutional need.</p><p>That does not make it useless. It makes it dangerous to worship.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-scorecard-was-not-the-candidate/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260726_the-scorecard-was-not-the-candidate&amp;utm_content=dispatch">The Scorecard Was Not the Candidate</a></p><div><hr></div><p>Canonical essay scheduled for lospino.so on 2026-07-26. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[ARM64 Is Not Just x64 With More Registers]]></title><description><![CDATA[Here is a small AArch64 bug:]]></description><link>https://newsletter.lospino.so/p/arm64-is-not-just-x64-with-more-registers</link><guid isPermaLink="false">https://newsletter.lospino.so/p/arm64-is-not-just-x64-with-more-registers</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sat, 25 Jul 2026 19:00:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7yU-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7yU-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7yU-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7yU-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.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;:70341,&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://newsletter.lospino.so/i/204789575?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.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_!7yU-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7yU-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161cd589-6404-4399-8f0d-d0da0183b28e_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is a small AArch64 bug:</p><pre><code><code>bad_wrapper:
 bl helper
 ret</code></code></pre><p>It looks plausible if the mental model came from x86. Call a helper. Return to the caller. But AArch64 bl does not push a return address onto the stack. It writes the return address into the link register, x30. If bad_wrapper entered with its caller&#8217;s return address in x30, then bl helper overwrote it. The later ret no longer has the original link-register state.</p><p>A non-leaf wrapper usually has to preserve what it will need after the nested call:</p><pre><code><code>good_wrapper:
 stp x29, x30, [sp, #-16]!
 mov x29, sp
 bl helper
 ldp x29, x30, [sp], #16
 ret</code></code></pre><p>That is the claim: ARM64 is not x64 with a larger register file. The instruction set gives you registers. The ABI tells you which registers are part of the call packet, which ones are reserved, how the stack behaves, where the return address lives, and which platform rules apply.</p><p>AAPCS64 gives a clean first table. x0 through x7 are parameter/result registers. v0 through v7 carry floating-point and SIMD arguments. x30 is the link register. x29 is the frame pointer. x8 can be the indirect result location register.</p><p>That table is useful. It is not the whole ABI.</p><p>The sharp example is x18. Architecturally, it is a general-purpose register. ABI-wise, it has a passport problem. AAPCS64 defines it as platform-specific and warns portable hand-written assembly to avoid it. Windows ARM64 reserves x18 as a platform register. Code that casually uses it as scratch may work in one environment and violate the platform contract in another.</p><p>Stack rules have the same shape. Alignment, red zones, frame-pointer expectations, and unwind metadata are platform ABI properties, not facts you get from the words &#8220;ARM64.&#8221; ARM64EC makes the point even harder: it runs on ARM64 hardware, but follows x64-oriented software conventions for mixed ARM64/x64 interoperability on Windows.</p><p>The boundary is evidence. A register-file fact is not automatically an ABI fact. A base ABI fact is not automatically a platform fact. A platform ABI fact is not universal hardware behavior.</p><p>Ask which ARM64 ABI you are in before deciding what a register means.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/arm64-is-not-just-x64/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260605_arm64-is-not-just-x64&amp;utm_content=backfill_dispatch">ARM64 Is Not Just x64 With More Registers</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-05. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[When a Decode Looks More Certain Than It Is]]></title><description><![CDATA[A field table can make partial evidence look official. The useful move is learning where the artifact stops and the stronger story begins.]]></description><link>https://newsletter.lospino.so/p/when-a-decode-looks-more-certain</link><guid isPermaLink="false">https://newsletter.lospino.so/p/when-a-decode-looks-more-certain</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Fri, 24 Jul 2026 19:01:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xv5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A clean decoded table is a dangerous object.</p><p>Not because the table is wrong. Because it looks finished.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xv5k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xv5k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xv5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.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;:null,&quot;alt&quot;:&quot;A decoded bus table with two rows marked as overclaims and a separate note marking a narrower supported claim.&quot;,&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="A decoded bus table with two rows marked as overclaims and a separate note marking a narrower supported claim." title="A decoded bus table with two rows marked as overclaims and a separate note marking a narrower supported claim." srcset="https://substackcdn.com/image/fetch/$s_!Xv5k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Xv5k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e2d6177-8350-412b-a6cb-45cc11fd53e6_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once a capture becomes rows and fields, the reader starts granting it more authority than it earned. A byte gets a label. A timing gap gets a name. A recurring identifier starts to feel like an identity. A dashboard cell starts to sound like application truth.</p><p>That is the failure mode this series is about.</p><p>Reading machine buses is not mainly about memorizing protocol trivia. It is about refusing to let an artifact carry a stronger claim than the observation supports.</p><p><strong>The move is simple:</strong></p><p>Observed artifact. Framing rule. Authority source. Observer boundary. Supported claim. Unsupported stronger claim.</p><p>That ladder is easy to say and hard to practice, because the artifact keeps trying to flatten it.</p><p>A passive trace can show that something appeared on a wire. It does not automatically show who meant it, what the system believed, what the operator saw, or what the application layer decided. A decoded field can show that a rule was applied. It does not make that rule ground truth. A recurring identifier can support recurrence. It does not, by itself, prove sender identity. A field map can add authority. It can also hide provenance if the reader stops asking where the names came from. A timing gap can be part of the evidence. It can also tempt the reader into treating silence as intent. A role-rich transaction can feel semantically complete. It still remains inside the authority that named the roles.</p><p>This matters outside buses. The same error appears in logs, traces, packet captures, diagnostic tables, reverse-engineered formats, observability dashboards, incident timelines, and vendor tools. Clean artifacts create clean stories. Clean stories are where evidence quietly gets promoted.</p><p>The point is not to distrust every decoder or table. The point is to read them with a boundary. What did we actually observe? What rule turned the observation into this representation? Who or what gave that rule authority? Where was the observer standing? What claim is supported? What stronger claim is being smuggled in because the artifact looks official?</p><p>The examples here are synthetic, passive, and offline. They do not involve live-bus access, replay, injection, scanning, polling, write paths, or control workflows. That boundary is not a side note. It is part of the argument: even safe, static artifacts can still exceed their evidentiary authority if the reader stops separating observation from interpretation.</p><p><a href="https://lospino.so/blog/reading-machine-buses/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260709_reading-machine-buses-claim-ladder&amp;utm_content=capstone_dispatch">The canonical series collects the mechanism, examples, and reader discipline in one place.</a></p><p>Read it if your work puts you near machines, captures, logs, decoders, diagnostic output, or any table that looks more certain than it has earned.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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"></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>]]></content:encoded></item><item><title><![CDATA[After the Thing Stands]]></title><description><![CDATA[The room at the center of this essay is not a clean design object.]]></description><link>https://newsletter.lospino.so/p/after-the-thing-stands</link><guid isPermaLink="false">https://newsletter.lospino.so/p/after-the-thing-stands</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Thu, 23 Jul 2026 19:00:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-VhU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-VhU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-VhU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-VhU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.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;:2870495,&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://newsletter.lospino.so/i/204789823?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.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_!-VhU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-VhU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd96cbfc-8ea2-40b4-b2d1-0a0fb0ea34e0_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The room at the center of this essay is not a clean design object. It has music, tools, books, notes, screens, small machines, and a few artifacts attached to questions not yet fully formed. It is not minimalist. It is legible. That distinction matters because the room gives one kind of work its ideal conditions: unresolved possibility becoming form.</p><p>The claim is that building and running are close enough to confuse and different enough to punish the confusion. Building turns possibility into form. Running begins after the thing stands long enough for people to gather around it. At that point the work changes species. It stops being primarily authorship and becomes constituency.</p><p>That shift is visible in boring artifacts: a public sentence, a redline, a signature block, a governance clause, a calendar obligation, an allocation rule before school. These are not the pleasures of ignition. They are the containers a real thing starts needing once other people can depend on it, misunderstand it, be disappointed by it, or pay for its ambiguity.</p><p>The pressure point is that the builder&#8217;s attractive self has a shadow. The ability to clarify, structure, and solve can become control when it crosses into another person&#8217;s tempo. A household dispute is not a product surface. A successor is not a compiler. A company, a book, or a family system does not become less real because it starts requiring patience after the interesting part has cooled.</p><p>The counterclaim deserves respect. Stewardship is not merely the dull residue of creation. Sometimes it is the more mature art. It asks for care after novelty, repetition without discovery, and protection from the builder&#8217;s own velocity. It asks the maker to keep faith with the thing after it becomes someone else&#8217;s job, risk, identity, or ordinary day.</p><p>The boundary is not that building is bad and maintenance is noble. The clean reversal would be another flattering story. Some work really is ignition. Some work really does need descent, intensity, and closed-door attention. The mistake is trying to make stewardship feel like building, or treating people as defective systems because they do not answer back like code.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/after-the-thing-stands/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260531_after-the-thing-stands&amp;utm_content=backfill_dispatch">After the Thing Stands</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-05-31. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Workshop Has Changed]]></title><description><![CDATA[The object in this essay is small: an AGENTS.md file open beside a red test runner and a planning note.]]></description><link>https://newsletter.lospino.so/p/the-workshop-has-changed</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-workshop-has-changed</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Wed, 22 Jul 2026 19:00:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7T_l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7T_l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7T_l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7T_l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.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;:3074900,&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://newsletter.lospino.so/i/204789787?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.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_!7T_l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7T_l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78dd3daa-c637-4da9-ac22-06374d2eb58a_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The object in this essay is small: an AGENTS.md file open beside a red test runner and a planning note. Nothing about that scene is visually dramatic. It is just the new workshop made visible: repo instructions, failing tests, a collaborator that can read context, and a human trying to decide what should be changed before the machine starts changing it.</p><p>The claim is not that software craft has been abolished. That story is too clean. The more useful claim is narrower: AI has moved more of the burden from typing to deciding. Naming the boundary, writing the acceptance test, constraining the diff, and reviewing the change are not old rituals kept around for sentiment. They become more load-bearing when a vague instruction can turn into twenty files.</p><p>The pressure point is the planning file. A line like &#8220;keep the public interface stable&#8221; is not bureaucracy. It is a miniature institution for the repo. So is the test suite. So is the instruction not to touch unrelated changes. The assistant may be useful, fast, and sometimes startlingly good, but it can also satisfy the local prompt while betraying the architecture. The clean-looking diff is not the same as a correct change.</p><p>There is a product boundary too. Cheap prototypes can teach, but they can also flatter novelty. A personal itch can now acquire a README, tests, diagrams, and a plausible interface before the harder question has been asked: who else has this problem strongly enough that the solution will matter after novelty decays?</p><p>That is why selection becomes governance. The old workshop had scarcity built into it. Boilerplate was expensive. Documentation had to be read by a tired human. Bad ideas often died before they acquired structure. The new workshop is kinder to possibility and harsher on judgment.</p><p>The useful part is not that the machine is always right. It is not. The useful part is that it is often fast enough to expose where the human discipline actually lives: constraints, taste, tests, diff review, and the willingness to kill attractive work before it becomes sediment.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-workshop-has-changed/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260524_the-workshop-has-changed&amp;utm_content=backfill_dispatch">The Workshop Has Changed</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-05-24. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[C Constructs That Still Don't Work in C++ - and a Few That Changed]]></title><description><![CDATA[C++ is not a superset of C.]]></description><link>https://newsletter.lospino.so/p/c-constructs-that-still-dont-work</link><guid isPermaLink="false">https://newsletter.lospino.so/p/c-constructs-that-still-dont-work</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Tue, 21 Jul 2026 19:00:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PhHE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PhHE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PhHE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PhHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.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;:66564,&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://newsletter.lospino.so/i/204789742?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.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_!PhHE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!PhHE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86950526-4e63-4ddf-a0c8-cfc9f37611ad_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>C++ is not a superset of C.</p><p>That warning is still accurate, but it is less useful when stated without a language mode. The 2019 version of this post surveyed C constructs that do not work in C++. The 2026 update does not retire that advice. It makes the border more precise.</p><p>The question is no longer only &#8220;does valid C compile as C++?&#8221; Often it is: C17, C23, C++17, C++20, or C++23?</p><p>Designated initialization is the clean example. C++20 added designated initializers, but not the whole C feature. C designators can target array elements, nested members, and fields out of declaration order. The C++20 form is narrower: direct non-static data members, declaration order, and all-designated clauses. C-style array designators, nested designators, out-of-order designators, and mixed positional/designated clauses remain outside the portable C++ form.</p><p>The old empty-parameter-list trap moved too. In C17 and earlier, <code>void f()</code> did not mean the same thing C++ programmers normally expect. It did not provide a prototype saying &#8220;no parameters.&#8221; C23 changed that: <code>void f()</code> now behaves as though declared with <code>void</code>. So the compatibility answer depends on which C mode is in play.</p><p>The <code>malloc</code> row is still easy to misread. In C++, <code>void*</code> does not implicitly convert to an object pointer type. But the cast is not the interesting part. Lifetime is. C++20 repaired some implicit-lifetime cases around allocation, but allocation still does not call constructors, initialize values, or make non-implicit-lifetime types safe to use without construction.</p><p>Other checkpoint rows remain: discarding <code>const</code>, enum behavior including C23 changes, <code>restrict</code>, and flexible array members. Each row is less a trivia question than a reminder that source compatibility, ABI boundaries, object lifetime, and compiler mode are different obligations.</p><p>The practical rule is simple: when discussing C/C++ compatibility, label the language mode before drawing the conclusion. &#8220;Valid C&#8221; and &#8220;valid C++&#8221; are not precise enough anymore.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/c-constructs-that-still-dont-work-in-cpp/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260520_c-constructs-that-still-dont-work-in-cpp&amp;utm_content=backfill_dispatch">C Constructs That Still Don&#8217;t Work in C++ - and a Few That Changed</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-05-20. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The ABI Is the Boundary]]></title><description><![CDATA[This Rust declaration is not just convenient syntax:]]></description><link>https://newsletter.lospino.so/p/the-abi-is-the-boundary</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-abi-is-the-boundary</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Mon, 20 Jul 2026 19:01:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bj56!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bj56!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bj56!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!bj56!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!bj56!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!bj56!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bj56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84dac447-2b52-4232-8336-e266ad310e45_1500x1000.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;:74194,&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://newsletter.lospino.so/i/204789708?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.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_!bj56!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!bj56!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!bj56!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!bj56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84dac447-2b52-4232-8336-e266ad310e45_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This Rust declaration is not just convenient syntax:</p><pre><code><code>unsafe extern "C" {
 fn five_ints(a: i32, b: i32, c: i32, d: i32, e: i32) -&gt; i32;
}</code></code></pre><p>It is a boundary claim.</p><p>The declaration says there is a function somewhere else. It says Rust should lower the call using the target&#8217;s C ABI rather than Rust&#8217;s own internal calling convention. It says the source-level types in the declaration match the binary packet the other side will decode. The compiler can generate the packet. It cannot prove the declaration is true.</p><p>That is the claim of the essay: modern software has not escaped ABI problems. It has moved them to sharper composition points: Rust FFI, Python native extensions, WebAssembly components, eBPF helpers, plugin APIs, and compatibility modes.</p><p>A boring C-shaped plugin table shows why this keeps happening:</p><pre><code><code>struct plugin_api {
 int (*open)(void *ctx, const char *path);
 int (*read)(void *ctx, void *buf, unsigned long len);
 void (*close)(void *ctx);
};</code></code></pre><p>This is not elegant in the way high-level language APIs are elegant. That is part of the point. The receiver is explicit. The context pointer is explicit. The function signatures are fixed. C++ object layout, exceptions, hidden receivers, and runtime-specific ownership semantics do not leak directly into the public contract. The boundary still has many ways to fail - integer widths, alignment, lifetime, allocator ownership, callback table layout - but fewer of them are invisible.</p><p>The boundary matters because independently built pieces do not share intent. They share a packet. In Rust FFI, the packet is a native call. In CPython&#8217;s Stable ABI, it is a versioned symbol and structure contract. In WebAssembly components, it is canonical lowering through core Wasm values and linear memory. In eBPF, it is a verifier-understood register convention.</p><p>Do not overread the design rule. A C-shaped boundary is not automatically safe. A stable runtime ABI does not repeal the platform ABI beneath it. A high-level declaration does not prove a binary fact.</p><p>The safer rule is narrower: when two independently built systems meet, specify the packet the other side can actually decode.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/the-abi-is-the-boundary/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260609_the-abi-is-the-boundary&amp;utm_content=backfill_dispatch">The ABI Is the Boundary</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-09. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Pew Does Not Argue Back]]></title><description><![CDATA[A seventeen-year-old at Fort Benning can find the chapel pew before he finds doctrine.]]></description><link>https://newsletter.lospino.so/p/the-pew-does-not-argue-back</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-pew-does-not-argue-back</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sun, 19 Jul 2026 10:00:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7t4O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7t4O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7t4O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7t4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.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;:3275500,&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://newsletter.lospino.so/i/204789652?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.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_!7t4O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7t4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3e4b35-699f-4e6e-a5c9-64d8972079ee_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A seventeen-year-old at Fort Benning can find the chapel pew before he finds doctrine.</p><p>That distinction matters. The chapel in this Field Note is not a laboratory of pure belief. It is shelter from the system outside it. It is also shelter from a less noble kind of Sunday work. The choice to enter is not clean. It arrives under pressure, fatigue, discipline, and need.</p><p>Inside: worn public wood, hymnals, bulletins, boots under the pew. Singing. Crying. Hugging. Peanut-butter bread passed with a plastic MRE knife. The body receives comfort before the mind can endorse the claims attached to it.</p><p>That does not make the comfort false. It also does not make the claims true.</p><p>The essay resists the old no-atheists-in-foxholes shortcut. Fear is not proof. Need is not metaphysics. But explaining the mechanism does not explain away what happened. The relief was real. The refuge was real. The tenderness was real. The theological declarations remained unavailable. The room could hold the body without settling the truth claims the body wanted to borrow.</p><p>That is where the piece keeps its pressure. Requests are easier than claims: help me, hold me, let me endure this. Need has excellent evidence. But the room did not stop at need. It made declarations about authority, sacrifice, rescue, text, eternity, and the invisible structure of the world. Those sentences could not become true merely because the body wanted shelter.</p><p>Later, church returned as church rather than refuge from basic training. The claims returned as claims. They did not hold. But respected believers complicated the easy dismissal. Skepticism may be honesty. It may also be the most respectable available name for staying unclaimed.</p><p>The pew remains silent in both directions: mercy because it held the body, limit because it could not answer the claims.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-pew-does-not-argue-back/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260719_the-pew-does-not-argue-back&amp;utm_content=dispatch">The Pew Does Not Argue Back</a></p><div><hr></div><p>Canonical essay scheduled for lospino.so on 2026-07-19. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[It Works Until the Stack Walker Arrives]]></title><description><![CDATA[A hand-written function, JIT stub, or trampoline can pass the easiest test: it returns to the caller with the right value.]]></description><link>https://newsletter.lospino.so/p/it-works-until-the-stack-walker-arrives</link><guid isPermaLink="false">https://newsletter.lospino.so/p/it-works-until-the-stack-walker-arrives</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sat, 18 Jul 2026 19:01:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gc8I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gc8I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gc8I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gc8I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.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;:59132,&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://newsletter.lospino.so/i/204789613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.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_!gc8I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!gc8I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb531c6b-b74e-473d-a1d3-bd7a388ecf0e_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A hand-written function, JIT stub, or trampoline can pass the easiest test: it returns to the caller with the right value.</p><p>That is not enough.</p><p>The claim in this essay is narrower and more useful: modern ABI correctness includes the failure path. A function frame has to be executable on the sunny path and explainable when an exception runtime, debugger, profiler, sanitizer, or crash reporter needs to reconstruct the caller. Returning correctly proves the epilogue worked. It does not prove the frame can be unwound.</p><p>The concrete artifact is unwind metadata. On Windows x64, a non-leaf function that allocates stack or calls another function is not fully described by its code bytes alone. The system also needs a function-table entry and unwind information: where the function starts and ends, how much stack it allocated, which nonvolatile registers were saved, and how to recover the caller&#8217;s state. On ELF-oriented toolchains, hand-written assembly often tells the same story through CFI directives:</p><pre><code><code>.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset rbp, -16
mov rbp, rsp
.cfi_def_cfa_register rbp
call helper
pop rbp
.cfi_def_cfa rsp, 8
ret
.cfi_endproc</code></code></pre><p>The exact encoding varies by platform. The mechanism does not: a live frame needs a machine-readable explanation.</p><p>The boundary is important. This is not a claim that every small leaf helper needs elaborate metadata, or that one Windows rule generalizes cleanly to every object format. Leaf-function shortcuts exist. Platform rules differ. The bug appears when the function evolves - adds a call, saves a nonvolatile register, allocates scratch space, or becomes a trampoline - and the frame description does not evolve with it.</p><p>That creates a boring failure mode, which is why it is common: the code works until observability enters the system.</p><p>That is the practical boundary: the call has to remain explainable to the machinery that arrives after the sunny path has already succeeded.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/it-works-until-the-stack-walker-arrives/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260608_it-works-until-the-stack-walker-arrives&amp;utm_content=backfill_dispatch">It Works Until the Stack Walker Arrives</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-08. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[What the Test Set Was Allowed to Change]]></title><description><![CDATA[A held-out dataset becomes development evidence when its result is used to revise the procedure.]]></description><link>https://newsletter.lospino.so/p/what-the-test-set-was-allowed-to</link><guid isPermaLink="false">https://newsletter.lospino.so/p/what-the-test-set-was-allowed-to</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Fri, 17 Jul 2026 10:00:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7KL9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7KL9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7KL9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7KL9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.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;:62315,&quot;alt&quot;:&quot;A cream-paper evaluation ledger shows the same held-out simulated-engine set consulted before and after a threshold change, with the final test label corrected to development evidence.&quot;,&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://newsletter.lospino.so/i/207395277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A cream-paper evaluation ledger shows the same held-out simulated-engine set consulted before and after a threshold change, with the final test label corrected to development evidence." title="A cream-paper evaluation ledger shows the same held-out simulated-engine set consulted before and after a threshold change, with the final test label corrected to development evidence." srcset="https://substackcdn.com/image/fetch/$s_!7KL9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!7KL9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a224d54-7ac8-4a2b-ba9b-9aed6e203732_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The evaluation ledger has three entries. First, evaluate the frozen procedure once on held-out simulated engines. That result can evaluate that procedure. Second, change a threshold after reading it. Third, evaluate the revision on the same engines. No row entered the optimizer, but the result helped produce the revision. For the revised procedure, the set is now development evidence, not clean test evidence.</p><p>Training, validation, and test are roles in an adaptive process. Training estimates the state of a candidate. Validation or inner resampling chooses among candidates and may set thresholds. Test evidence evaluates the chosen procedure after the candidate, threshold, metric, slices, and acceptance rule are frozen. A filename cannot enforce those roles. In Python terms, the variable name does not determine the dataset&#8217;s evidentiary role. The selection workflow does.</p><p>This is adaptive reuse: a later choice depends on an earlier evaluation. When many alternatives are compared through the same holdout, the winner can benefit from genuine signal and from favorable peculiarities of that holdout. The more decisions the holdout is allowed to influence, the more opportunity its accidents have to enter the selected procedure. The human-and-code loop can learn the test set even when the fitting code never trains on its rows. A better result on <code>test_final_v2</code> can therefore support a weaker claim than a lower result on evidence that remained untouched.</p><p>The failure mode is ordinary, not scandalous. An evaluation reveals a weakness, and the analyst does the reasonable thing: revise the procedure. The problem begins when the revised score is presented as though the evidence never participated in that revision. A holdout can be ceremonially present and evidentially absent.</p><p>Make the boundary concrete. At cycle 100 of a simulated engine trajectory, six available sensor readings are used to predict whether the trajectory will reach its terminal cycle within the next 75 cycles. Completed endpoints may construct retrospective labels, but they may not enter the scoring features. Engines, not rows, are assigned to evaluation partitions. If a held-out result changes the feature list, threshold, subgroup policy, or candidate, those engines have become development evidence for the revision. Fresh untouched evaluation evidence is now required for a new confirmatory claim. Without it, the revised result must be reported as exploratory or as a narrower descriptive result.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sas1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sas1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sas1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.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;:61889,&quot;alt&quot;:&quot;A simulation protocol card defines the cycle-100 decision, 75-cycle horizon, six score-time sensors, engine-level evaluation assignment, predictive claim, and field, causal, and certification boundaries.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.lospino.so/i/207395277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A simulation protocol card defines the cycle-100 decision, 75-cycle horizon, six score-time sensors, engine-level evaluation assignment, predictive claim, and field, causal, and certification boundaries." title="A simulation protocol card defines the cycle-100 decision, 75-cycle horizon, six score-time sensors, engine-level evaluation assignment, predictive claim, and field, causal, and certification boundaries." srcset="https://substackcdn.com/image/fetch/$s_!Sas1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Sas1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ff1618-584e-48f5-a211-2d60c99f442f_1500x1000.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At most, fresh held-out evidence can support predictive performance on new simulated engines from the represented simulation regime. It does not show readiness for operating aircraft, the causal effect of a maintenance intervention, or field validation or certification. The ledger should say what happened: reused test evidence became development evidence for the revision. Either obtain fresh evidence for confirmation or label the reused result as exploratory and narrow the claim.</p><p>Read the complete argument on lospino.so:<br><a href="https://lospino.so/blog/the-model-is-the-evaluation-protocol/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260717_model-evaluation-protocol&amp;utm_content=dispatch">The Model Is the Evaluation Protocol</a></p><p><em>Original essay published on lospino.so on July 17, 2026. </em></p>]]></content:encoded></item><item><title><![CDATA[Varargs: The Function Call With Missing Type Information]]></title><description><![CDATA[printf is not just another function call.]]></description><link>https://newsletter.lospino.so/p/varargs-the-function-call-with-missing</link><guid isPermaLink="false">https://newsletter.lospino.so/p/varargs-the-function-call-with-missing</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Thu, 16 Jul 2026 19:00:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zDl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zDl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zDl5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zDl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.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;:49699,&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://newsletter.lospino.so/i/204789527?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.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_!zDl5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!zDl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc1f2bca-8fba-4522-912a-7525a112f93e_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>printf is not just another function call.</p><p>Its signature stops describing the interesting part:</p><pre><code><code>int printf(const char *fmt, ...);</code></code></pre><p>The fixed prefix says there is a format string. The ellipsis says the rest of the typed parameter list is missing. The caller may pass an int, a double, a pointer, a promoted char, a promoted float, or a sequence selected by another layer. The callee does not receive named source-level parameters for those trailing values. It receives ABI state and a va_list mechanism that must recover them later.</p><p>That is the claim: varargs are not merely flexible syntax. They are a function-call protocol with missing type information.</p><p>A small artifact shows the problem:</p><pre><code><code>int call_printf_double(double x) {
 return printf("x=%f\n", x);
}</code></code></pre><p>On System V AMD64, the format string goes in rdi, the double is in xmm0, and the caller sets al to indicate vector-register usage for a call that may reach a variadic callee. That AL marker is not visible in the C signature, but the variadic machinery depends on it.</p><p>Windows x64 solves a related problem differently. For a vararg or unprototyped call, a floating-point value must be duplicated into the corresponding general-purpose register as well as the floating-point register. In the printf(&#8221;x=%f\n&#8221;, x) shape, the wrapper can move the floating-point value into the right XMM lane and also copy its bits into the matching integer register.</p><p>Same source value. Different transport rules.</p><p>The format string does not replace the ABI. It tells printf what to request. It does not place the unnamed double in an XMM register, duplicate it into a general-purpose register, set AL, create a register-save area, or put overflow arguments on the stack in the expected location.</p><p>The boundary is FFI. A foreign-function bridge can often model a fixed signature:</p><pre><code><code>void log_f64(const char *label, double value);</code></code></pre><p>A variadic function asks it to model a family of call shapes. Each unnamed suffix can change register usage, stack usage, and ABI-specific metadata. The conservative rule is boring because it is correct: avoid exposing variadic C APIs across language boundaries when fixed wrappers are practical.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/varargs-missing-type-information/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260604_varargs-missing-type-information&amp;utm_content=backfill_dispatch">Varargs: The Function Call With Missing Type Information</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-04. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Hidden Arguments Are Everywhere]]></title><description><![CDATA[The most important field in a function call is often the one the source code did not spell.]]></description><link>https://newsletter.lospino.so/p/hidden-arguments-are-everywhere</link><guid isPermaLink="false">https://newsletter.lospino.so/p/hidden-arguments-are-everywhere</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Wed, 15 Jul 2026 19:00:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wUkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wUkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wUkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wUkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.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;:66501,&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://newsletter.lospino.so/i/204789484?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.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_!wUkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!wUkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dbce8c5-c249-4c6e-8e3d-719517e3ad87_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The most important field in a function call is often the one the source code did not spell.</p><p>A programmer may write:</p><pre><code><code>struct Big make_big(long long seed);</code></code></pre><p>The ABI may need a different shape:</p><pre><code><code>make_big(result_storage, seed)</code></code></pre><p>That is the claim: the source-level function signature is not the full call packet. It tells the programmer what expression is legal. It does not necessarily tell the binary where the return storage lives, how the callee receives an object pointer, which runtime context arrives first, or whether a thunk has adjusted the receiver before control reaches the final implementation.</p><p>The cleanest artifact is a large structure return. In one fixture, the source function returns a record by value:</p><pre><code><code>struct SretRecord make_sret_record(unsigned long long seed,
 unsigned long long tag);</code></code></pre><p>At the ABI layer, several platforms turn that return value into an incoming storage channel. On Windows x64, the caller-allocated return storage can arrive as the first argument, shifting the visible values right. On System V AMD64, MEMORY-class returns use caller-provided storage in RDI as if it were the first argument. On AArch64, the indirect result location has a dedicated role in x8, so the visible seed and tag can remain in x0 and x1.</p><p>Same source shape. Different hidden-field placement.</p><p>The pattern does not stop with structure returns. A C++ member function needs a receiver even when the object sits outside the parentheses:</p><pre><code><code>counter.add(5);</code></code></pre><p>The callee still needs something like:</p><pre><code><code>Counter_add(object, 5)</code></code></pre><p>JNI makes the runtime version explicit: native methods receive JNIEnv * first, then either the object or class, then the ordinary Java parameters.</p><p>The boundary is important. Hidden arguments are not hacks, and the source signature is not dishonest. It is faithful at its layer. The mistake is carrying that layer across a real ABI or FFI boundary and assuming the visible parameter list is the complete wire format.</p><p>The safer question is not only: what are the parameters?</p><p>It is: what are the ABI-visible fields?</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/hidden-arguments-are-everywhere/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260603_hidden-arguments-are-everywhere&amp;utm_content=backfill_dispatch">Hidden Arguments Are Everywhere</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-03. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Bugs That Make ABI Rules Memorable]]></title><description><![CDATA[ABI rules are easier to remember when you watch the packet break.]]></description><link>https://newsletter.lospino.so/p/the-bugs-that-make-abi-rules-memorable</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-bugs-that-make-abi-rules-memorable</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Tue, 14 Jul 2026 19:01:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M5dP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M5dP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M5dP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M5dP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.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;:61421,&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://newsletter.lospino.so/i/204789438?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.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_!M5dP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!M5dP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c56b895-79f9-4570-a313-84c155b3359a_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>ABI rules are easier to remember when you watch the packet break.</p><p>Here is a deliberately malformed sketch:</p><pre><code><code>; Windows-shaped setup, SysV-shaped callee
sub rsp, 40
mov dword ptr [rsp + 32], 5
mov ecx, 1
mov edx, 2
mov r8d, 3
mov r9d, 4
call five_ints</code></code></pre><p>Every instruction is real. The call target can exist. The machine can execute the sequence. The packet is still wrong.</p><p>If the callee decodes the call under the System V AMD64 ABI, this is not a correct encoding of:</p><pre><code><code>five_ints(1, 2, 3, 4, 5);</code></code></pre><p>For this all-integer function, a SysV AMD64 callee expects edi = a, esi = b, edx = c, ecx = d, and r8d = e. The sketch above was built from a Windows x64 mental model: ecx, edx, r8d, r9d, then a stack slot after the home area. The callee is not obligated to share that belief.</p><p>The concrete technical artifact is the wrong-register-schema bug. It does not require undefined source code or an invalid instruction. It requires a caller and callee that disagree about how local state has been serialized. A tracer may record the wrong argument. A hook may forward the wrong field. An FFI bridge may appear to work for one call shape and fail when the destination ABI changes.</p><p>The claim is broader than register tables: ABI bugs are malformed local serialization. The source call can be plausible while the binary packet is wrong. Hidden result storage, hidden receivers, stack home areas, varargs recovery state, and platform-specific preservation rules are all fields in that packet.</p><p>The boundary matters. The bug zoo is not a standards document, and a compiler listing is not the law. The disciplined rule is: ABI document as authority, generated assembly as receipt. A receipt can show what one compiler emitted for one target and one source shape. It cannot prove every compiler emits that sequence, every malformed call crashes, or every symptom looks the same.</p><p>The useful habit is adversarial but restrained: source belief, ABI field, broken packet, narrow symptom claim, evidence boundary.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/abi-bug-zoo/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260602_abi-bug-zoo&amp;utm_content=backfill_dispatch">The Bugs That Make ABI Rules Memorable</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-02. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Same Function, Three Realities]]></title><description><![CDATA[A register name is not a meaning.]]></description><link>https://newsletter.lospino.so/p/same-function-three-realities</link><guid isPermaLink="false">https://newsletter.lospino.so/p/same-function-three-realities</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Mon, 13 Jul 2026 19:00:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LVAr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LVAr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LVAr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LVAr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.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;:80680,&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://newsletter.lospino.so/i/204789306?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.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_!LVAr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!LVAr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eab3e9f-8070-464f-887a-013ea759e50c_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A register name is not a meaning.</p><p>Start with a deliberately boring function:</p><pre><code><code>int five_ints(int a, int b, int c, int d, int e);</code></code></pre><p>And a deliberately boring call:</p><pre><code><code>five_ints(1, 2, 3, 4, 5);</code></code></pre><p>Nothing about the source is clever. Every argument is visible. The return value is a plain int. There is no hidden structure return, no C++ receiver, no varargs, no virtual dispatch, and no interesting object model problem. That is why the example is useful. If the generated call differs across targets, the difference is the ABI packet.</p><p>The concrete artifact is the ecx trap:</p><pre><code><code>; Windows x64
mov ecx, 1 ; a</code></code></pre><p>; System V AMD64 mov ecx, 4 ; d</p><p>The same physical register carries different semantic fields under different ABIs. On Windows x64, integer arguments in the leftmost four positions use RCX, RDX, R8, and R9; the fifth argument goes on the stack after the caller-provided home area. On System V AMD64, the integer register sequence begins RDI, RSI, RDX, RCX, R8, R9. On AArch64 Linux, this all-integer call maps cleanly to w0 through w4.</p><p>The claim is small but important: a source-level call does not carry a universal register schema. The ABI gives locations meaning. Without that schema, rcx is just a register.</p><p>This is where reverse-engineering, tracing, hooking, and FFI code go wrong. A tool that labels rcx as &#8220;argument 1&#8221; has already made a platform claim. That claim is correct in one context and wrong in another. The machine may still execute the instruction stream. The failure is not necessarily an illegal instruction or an immediate crash. It may be a valid instruction stream in the wrong language.</p><p>The boundary is also important. A compiler listing is a receipt, not the authority. Optimizers can inline, fold, tail-call, spill, or reshape a wrapper while still respecting the ABI at the real boundary. The ABI document defines the contract; the assembly gives you a microscope for one controlled source shape.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/same-function-three-realities/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260601_same-function-three-realities&amp;utm_content=backfill_dispatch">Same Function, Three Realities</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-01. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Presents Still Wrapped]]></title><description><![CDATA[A wrapped Christmas present turned up six months late, behind storage bins on the lanai.]]></description><link>https://newsletter.lospino.so/p/the-presents-still-wrapped</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-presents-still-wrapped</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sun, 12 Jul 2026 10:00:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!orBk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!orBk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orBk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!orBk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!orBk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!orBk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.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;:2900351,&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://newsletter.lospino.so/i/204789081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.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_!orBk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!orBk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!orBk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!orBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f5ee517-1a90-4e9a-8ea8-525f13e0838c_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A wrapped Christmas present turned up six months late, behind storage bins on the lanai.</p><p>Not lost in any dramatic sense. Not damaged. Just stored behind other stored things, where a household puts decisions it has not made room to finish. The paper had relaxed at the corners. The tape no longer looked decisive. The label, once meant to identify a recipient, eventually ended up turned down against the table.</p><p>That is the pressure point in this week&#8217;s Field Note: provision can look like care before attention completes the circuit.</p><p>The gift was not proof that care was absent. It had been bought, wrapped, labeled, and set aside with an intention attached to it. Those actions matter. Scarcity is not holy. Provision is not nothing. Austerity can become its own performance.</p><p>But care that stops at provision asks the object to carry too much. It asks wrapping paper, memory, timing, and storage to do the work that contact requires. The tape can hold paper around a box. It cannot hold a relationship in place.</p><p>The essay keeps the present literal. A father receives a gift meant for a son and cannot immediately remember what is inside. A bookshelf appetite sits nearby as a real preference, but not a guarantee. The son matters as a person with agency, not as evidence that a prepared environment worked or failed. A gift is not completed by the giver&#8217;s intention alone. It has to enter a life that can receive, refuse, ignore, use, or outgrow it.</p><p>Storage is part of the problem because storage can make postponement tidy. Behind bins, unfinished attention becomes stackable. The right moment begins as patience and can become a trap: a way to preserve the fantasy of perfect delivery while avoiding the imperfect act of actually offering the thing.</p><p>So the final action is small. The present is carried out, set on the table, loose tape pressed back into place, label turned to the wood, and left there.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-presents-still-wrapped/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260712_the-presents-still-wrapped&amp;utm_content=dispatch">The Presents Still Wrapped</a></p><div><hr></div><p>Canonical essay scheduled for lospino.so on 2026-07-12. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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://newsletter.lospino.so/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Model Wants to Exist]]></title><description><![CDATA[The artifact was small: a hand-counted stroke trace from a race video.]]></description><link>https://newsletter.lospino.so/p/the-model-wants-to-exist</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-model-wants-to-exist</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Sat, 11 Jul 2026 19:01:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k5qy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k5qy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k5qy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k5qy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.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;:2956523,&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://newsletter.lospino.so/i/203751814?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.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_!k5qy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!k5qy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b6b3c7-af97-4d7a-bfaf-689ee75a2a37_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The artifact was small: a hand-counted stroke trace from a race video.</p><p>After the King Kamehameha Day Regatta, I marked catches one by one until the rhythm I remembered in the canoe became a column of times. On the screen, those times became a strip of telemetry. Most of it wandered inside ordinary noise. Then the trace stepped sideways. The body remembered continuity. The plot had drawn a border.</p><p>That is the pressure point in this Field Note. A few marked timestamps began asking for a model before they had earned authority.</p><p>There were ordinary explanations. I could have marked a catch badly. The video could have jumped. The canoe could have hit different water. A change could have consumed time before the next ordinary stroke. The apparent rate could have fallen because the accounting window included dwell that was not really paddling.</p><p>The plot did not resolve those possibilities. It only made the eye want structure.</p><p>The claim is that a model may deserve existence before it deserves authority. Modeling can be a disciplined way to organize ignorance. It can expose assumptions, sharpen questions, and make a hidden data-generating process visible enough to argue with. But the fact that a model wants to exist is not evidence that anyone should believe it.</p><p>The boundary changes once the model acquires a surface. A private line on a screen can remain a provocation. Put the same line on a dashboard and it begins to look like an answer. Give it a threshold and it becomes a judgment. Place it in a recurring review and people begin to change their behavior around it.</p><p>The instrument begins as a witness. Then it gets a vote.</p><p>That transition is not only a measurement problem. It is a governance problem. What is the model allowed to govern? What remains outside its field? What changed in the system because the observer, instrument, or baseline entered the loop?</p><p>The canoe trace is a small object, but the pattern is larger. A cleaner estimate can be prettier and less honest. A better instrument can leave a scar in the time series. The observer can become one of the inputs.</p><p>The model may begin as appetite. It cannot use appetite as its final warrant.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/sunday-field-notes/the-model-wants-to-exist/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260621_the-model-wants-to-exist&amp;utm_content=dispatch">The Model Wants to Exist</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-06-21. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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"></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>]]></content:encoded></item><item><title><![CDATA[The Function Signature Is a Lie]]></title><description><![CDATA[A function signature tells you what a source-level call is allowed to look like.]]></description><link>https://newsletter.lospino.so/p/the-function-signature-is-a-lie</link><guid isPermaLink="false">https://newsletter.lospino.so/p/the-function-signature-is-a-lie</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Fri, 10 Jul 2026 19:00:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZYNV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZYNV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZYNV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 424w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 848w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 1272w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZYNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg&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;:4016,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.lospino.so/i/203751990?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZYNV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 424w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 848w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 1272w, https://substackcdn.com/image/fetch/$s_!ZYNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19260472-0bcd-42af-9fed-1c9098dd975b_1500x1000.svg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A function signature tells you what a source-level call is allowed to look like. It does not tell you the whole binary protocol the caller and callee must speak.</p><p>Consider this ordinary-looking declaration:</p><pre><code><code>struct Big make_big(long long seed);</code></code></pre><p>At the source level, there is one visible argument and one return value. At the ABI boundary, that can become a different packet. If struct Big is not returned in registers, the caller may allocate result storage and pass a pointer to that storage into the callee. That pointer is not written in the source signature, but it is part of the call.</p><p>The concrete artifact is the hidden result-storage path. For a deliberately large return object, common 64-bit ABIs do not all encode the same source call the same way. On Windows x64, the result pointer is passed in RCX, and the visible seed shifts to RDX. On System V AMD64, the result pointer is passed in RDI, and seed shifts to RSI. On AAPCS64, the indirect result location uses x8, while the visible argument can remain in x0.</p><p>That distinction matters for JIT stubs, FFI bridges, hooks, hand-written trampolines, profilers, and any code that constructs or interprets a call below the source language. A bridge that sends only the visible arguments may build a packet the callee cannot decode. On Windows x64 or System V AMD64, the first visible value can land where the callee expects a writable result address. On AAPCS64, the visible arguments may look correct while x8 is stale or unset.</p><p>The boundary is narrow. This does not mean every source-level call literally performs a platform ABI ceremony at runtime. The compiler can inline, fold, specialize, or erase calls when both sides are under its control. The ABI matters when independently compiled code must meet.</p><p>The safer claim is this: the function signature is a programmer-facing projection. The ABI call is the machine-facing protocol.</p><p>Read the full essay on lospino.so: <a href="https://lospino.so/blog/abi-series/the-function-signature-is-a-lie/?utm_source=substack&amp;utm_medium=web&amp;utm_campaign=20260529_the-function-signature-is-a-lie&amp;utm_content=backfill_dispatch">The Function Signature Is a Lie</a></p><div><hr></div><p>Original essay published on lospino.so on 2026-05-29. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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"></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>]]></content:encoded></item><item><title><![CDATA[A 200 Response Is Not a Record]]></title><description><![CDATA[A crawler can be correct about HTTP and still wrong about the result.]]></description><link>https://newsletter.lospino.so/p/a-200-response-is-not-a-record</link><guid isPermaLink="false">https://newsletter.lospino.so/p/a-200-response-is-not-a-record</guid><dc:creator><![CDATA[Josh Lospinoso]]></dc:creator><pubDate>Thu, 09 Jul 2026 19:01:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XbJ1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XbJ1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XbJ1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XbJ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.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;:118594,&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://newsletter.lospino.so/i/205004413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.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_!XbJ1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 424w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 848w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!XbJ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7194d4d-d66d-4c91-b49c-af6d17fa3fa4_1500x1000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Abrade started from a small useful premise: generate patterned URLs, probe them, and record the candidates that appear to exist.</p><p>That premise is still useful. It is also too small if the crawler treats every kind of &#8220;success&#8221; as the same claim.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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! 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>The 2026 refresh of Abrade, a C++23 command-line crawler, is mostly about separating those claims. The pressure point is simple: 2xx is transport evidence, not content truth. A server returning HTTP 200 may only prove that the request reached an HTTP application and received a successful response class. It does not prove that the response is the record being sought.</p><p>It can be an empty result, a placeholder, a login wall, a shell page, a default route, or a route that exists without containing the domain object.</p><p>That difference matters because &#8220;the request completed,&#8221; &#8220;the body contains evidence,&#8221; and &#8220;the run had operational problems&#8221; are not interchangeable. Abrade v0.3.0 makes that distinction explicit. It still generates candidate resource paths and performs concurrent HTTP requests. It still defaults to <code>HEAD</code>, and it can fetch bodies with <code>GET</code>. But the refreshed tool adds clearer boundaries around what is being measured: TLS with SNI for DNS host names, optional platform CA and DNS host verification with <code>--verify</code>, conservative redirects, dry-run generation, body-only output, body filters, and run summaries that account for filtered bodies, runtime errors, bytes written, and throughput.</p><p>One diagnostic sample in the canonical post exposed two common crawler mistakes. Without SNI, HTTPS failed before there was any meaningful application response. After SNI, many <code>200</code> responses still were not useful records. TLS success was one claim. Verified identity was another. Status-code success was another. Content evidence had to be checked separately.</p><p>The content-oriented pass is where the crawler stops pretending status success is enough. <code>--contents</code> writes body-only files. <code>--require</code> and <code>--require-regex</code> keep bodies containing required evidence. <code>--reject</code> and <code>--reject-regex</code> remove bodies containing absence, shell, or other non-record evidence.</p><p>Those strings are not universal predicates. They have to come from authorized knowledge of the application being tested. That is also the use boundary: authorized resource discovery, migration checks, and repeatable diagnostics against systems you own or are allowed to test.</p><p>Read the full essay on lospino.so:<br><a href="https://lospino.so/blog/abrade-after-the-happy-path/?utm_source=substack&amp;utm_medium=email&amp;utm_campaign=20260709_abrade-after-the-happy-path&amp;utm_content=dispatch">Abrade After the Happy Path</a></p><p><em>Original essay published on lospino.so on 2026-07-09. This Substack dispatch is an adapted pointer to the canonical version, not a mirrored copy.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.lospino.so/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! 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>]]></content:encoded></item></channel></rss>