<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>About Things | A Hans Scharler Blog</title>
	<atom:link href="https://nothans.com/feed" rel="self" type="application/rss+xml" />
	<link>https://nothans.com</link>
	<description>Life, Comedy, Games, Tech, Marketing, and Community</description>
	<lastBuildDate>Fri, 31 Jul 2026 14:42:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/nothans.com/wp-content/uploads/2023/02/cropped-settings.png?fit=32%2C32&#038;ssl=1</url>
	<title>About Things | A Hans Scharler Blog</title>
	<link>https://nothans.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">114568856</site>	<item>
		<title>Dungeon Crawler Carl Pinball at Gen Con&#8230; with Matt Dinniman</title>
		<link>https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman</link>
					<comments>https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 14:38:30 +0000</pubDate>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Dungeon Crawling Carl]]></category>
		<category><![CDATA[Gen Con]]></category>
		<category><![CDATA[pinball]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5547</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>There&#8217;s a new pinball machine. It is a Dungeon Crawler Carl-themed pinball machine from <a href="https://www.multimorphic.com/dungeon-crawler-carl/">Multimorphic</a>. This pinball machine was announced a few days ago and had a surprise reveal at Gen Con. I have been attending Gen Con for over 20 years and have watched it grow 10x in size and stretch into all things you could geek out on. 90k people come to Indianapolis, IN, and spend four days gaming, talking about games, selling games, and buying games. Then, there is also Pinball! It became a fixture a few years ago. Before that, we would drive to arcades and get an evening of pinball. Now, with a Dungeons and Dragons-themed pinball machine and crossover themes, Pinball is a mainstay here at Gen Con. The cult classic Dungeon Crawler Carl seems to be the perfect and well-suited for the innovative P3 platform from Multimorphic.</p>



<p>As soon I as I heard that there would be a surpsise reveal of the new pinball machine, I wanted to try it. It was in the Crawl Con room by Rengade Games in the Indiana Convention Center.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="750" height="996" data-attachment-id="5548" data-permalink="https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/image-139" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?fit=1553%2C2063&amp;ssl=1" data-orig-size="1553,2063" data-comments-opened="0" data-image-title="Gerry Stellenberg and Matt Dinniman at Gen Con" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?fit=750%2C996&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=750%2C996&#038;ssl=1" alt="Gerry Stellenberg and Matt Dinniman at Gen Con" class="wp-image-5548" style="width:574px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=771%2C1024&amp;ssl=1 771w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=226%2C300&amp;ssl=1 226w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=768%2C1020&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=1156%2C1536&amp;ssl=1 1156w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=1542%2C2048&amp;ssl=1 1542w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=750%2C996&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?resize=1320%2C1753&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-29.png?w=1553&amp;ssl=1 1553w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Gerry Stellenberg and Matt Dinniman at Gen Con</figcaption></figure>
</div>

<h2 class="wp-block-heading" id="what-is-dungeon-crawling-carl">What is Dungeon Crawling Carl?</h2>


<p><em>Well, you are about to hear about it from everyone you know. Buckle up.</em></p>



<p>Dungeon Crawler Carl is a wildly popular LitRPG series by Matt Dinniman that kicks off with a guy named Carl running outside in nothing but his boxers, a leather jacket, and his ex-girlfriend&#8217;s tight pink Crocs to catch her prized tortoiseshell Persian cat, Princess Donut. That wardrobe choice saves their lives: seconds later, aliens flatten every building on Earth, killing everyone indoors.</p>



<p>The survivors are herded into a colossal underground dungeon and forced to fight their way down floor by floor. The entire death trap is broadcast across the universe as a massive reality show, meaning sponsors, fan popularity, and audience bloodlust dictate who lives or dies. Carl teams up with Donut, who gains human speech and immediately weaponizes her pampered show-cat ego to manipulate the galactic viewers. Meanwhile, the dungeon&#8217;s AI develops a weird, sadistic foot fetish and actively refuses to give Carl decent lower-body armor, forcing him to fight off monsters while basically half-naked.</p>



<p>Because it&#8217;s LitRPG, the story includes video game mechanics like stat screens, loot drops, and system notifications. But it works perfectly as both a genuinely tense survival story and a hilarious, deeply angry satire about corporate greed and the entertainment industry. If you get into it, I recommend the audiobook. They are narrated and voiced by Jeff Hays. His performance is so good.</p>


<h2 class="wp-block-heading" id="what-is-dungeon-crawler-carl-pinball">What is Dungeon Crawler Carl Pinball?</h2>


<p><em>Dungeon Crawler Carl</em> is a pinball machine based on the <em>Dungeon Crawler Carl</em> book series, written by Matt Dinniman. You play as Carl, accompanied by Princess Donut, navigating the various dungeon levels and all of the dangers and challenges it presents. Fighting mobs, battle bosses, cast spells, build your viewer count, collect friends, and figure out how to not just survive in the dungeon, but also how to get vengeance! Every aspect of the game combines to immerse you into the story. This includes a host of thematically integrated interactive mechanisms, an audio experience led by Jeff Hays voicing all of the characters, new artwork from Luciano Fleitas, Brad Albright, as well as other Dungeon Crawler Carl artwork shared by Renegade Game Studios, and game rules that connect you with all of the major events and plotlines and many of the minor plotlines as well.</p>



<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman&quot;}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="750" height="1000" data-attachment-id="5549" data-permalink="https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/image-140" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?fit=900%2C1200&amp;ssl=1" data-orig-size="900,1200" data-comments-opened="0" data-image-title="Dungeon Crawler Carl Pinball playfield" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?fit=750%2C1000&amp;ssl=1" data-id="5549" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?resize=750%2C1000&#038;ssl=1" alt="" class="wp-image-5549" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?resize=750%2C1000&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-30.png?w=900&amp;ssl=1 900w" sizes="(max-width: 750px) 100vw, 750px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="750" height="1000" data-attachment-id="5550" data-permalink="https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/image-141" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?fit=900%2C1200&amp;ssl=1" data-orig-size="900,1200" data-comments-opened="0" data-image-title="Dungeon Crawler Carl Pinball sculpt" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?fit=750%2C1000&amp;ssl=1" data-id="5550" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?resize=750%2C1000&#038;ssl=1" alt="" class="wp-image-5550" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?resize=750%2C1000&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-31.png?w=900&amp;ssl=1 900w" sizes="(max-width: 750px) 100vw, 750px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="563" data-attachment-id="5551" data-permalink="https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/image-142" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?fit=1200%2C900&amp;ssl=1" data-orig-size="1200,900" data-comments-opened="0" data-image-title="Dungeon Crawler Carl Pinball Princess Donut" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?fit=750%2C563&amp;ssl=1" data-id="5551" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=750%2C563&#038;ssl=1" alt="" class="wp-image-5551" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=750%2C563&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=500%2C375&amp;ssl=1 500w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-32.png?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 750px) 100vw, 750px" /></figure>
</figure>



<p> After getting a chance to see the surprise reveal of the game, I got my own surprise. Matt came out to hang with the pinball players and talk about the weather&#8230; I MEAN DUNGEON CRAWLER CARL. Matt kicked off something bizarae and sweeping. Like I said, buckle up!</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="1000" data-attachment-id="5552" data-permalink="https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/image-143" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?fit=1548%2C2063&amp;ssl=1" data-orig-size="1548,2063" data-comments-opened="0" data-image-title="Hans Scharler and Matt Dinniman at Gen Con 2026" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?fit=750%2C1000&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=750%2C1000&#038;ssl=1" alt="Hans Scharler and Matt Dinniman at Gen Con 2026" class="wp-image-5552" style="aspect-ratio:0.7503663898387885;width:659px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=1153%2C1536&amp;ssl=1 1153w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=1537%2C2048&amp;ssl=1 1537w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=750%2C1000&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?resize=1320%2C1759&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-33.png?w=1548&amp;ssl=1 1548w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Hans Scharler and Matt Dinniman at Gen Con 2026</figcaption></figure>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/dungeon-crawler-carl-pinball-at-gen-con-with-matt-dinniman/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5547</post-id>	</item>
		<item>
		<title>Pinball: A Quest for Mastery</title>
		<link>https://nothans.com/pinball-a-quest-for-mastery</link>
					<comments>https://nothans.com/pinball-a-quest-for-mastery#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Wed, 29 Jul 2026 10:41:23 +0000</pubDate>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[pinball]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5539</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>First, I need to say I love the pinball community. It is a community, and all kinds are there. Since I relocated to New England, Pinball has been my source of creativity and drive, a way to find friends, a place to have randos over to the house, a place to go to a warehouse filled with old pinball machines, and a way to be around people who love this game.</p>



<p>On my journey, I met Tasker Smith. Right from the start, Tasker had a unique point of view about pinball <em>and life</em>. He didn&#8217;t slam the machine, but he also had feelings about getting better. He turned failures into lessons and was always awesome to play with. Then, he says he is writing a book. And, a very Tasker thing to do is to actually write a little bit a time and couple of years go by you have a book, then it is is getting published, then he is on a book tour. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://link.amazon/B0j7dzd4Z"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="920" data-attachment-id="5540" data-permalink="https://nothans.com/pinball-a-quest-for-mastery/image-135" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?fit=1683%2C2063&amp;ssl=1" data-orig-size="1683,2063" data-comments-opened="0" data-image-title="Pinball: A Quest for Mastery book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?fit=750%2C920&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=750%2C920&#038;ssl=1" alt="" class="wp-image-5540" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=835%2C1024&amp;ssl=1 835w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=245%2C300&amp;ssl=1 245w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=768%2C941&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=1253%2C1536&amp;ssl=1 1253w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=1671%2C2048&amp;ssl=1 1671w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=750%2C919&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?resize=1320%2C1618&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?w=1683&amp;ssl=1 1683w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-25.png?w=1500&amp;ssl=1 1500w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption"><a href="https://link.amazon/B0j7dzd4Z">Pinball: A Quest for Mastery by Tasker Smith</a></figcaption></figure>
</div>


<p><a href="https://link.amazon/B0j7dzd4Z">Pinball: A Quest for Mastery</a> is about pinball, but it is also philosophy. The book is not about being a master at pinball; it is about being on the quest. The book shares history, demystifies rule complexity, gives you a primer for understanding the game, and what it takes to get better and why. I feel Tasker just shares a user manual with us on how to approach any hobby or pursuit.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="1000" data-attachment-id="5541" data-permalink="https://nothans.com/pinball-a-quest-for-mastery/image-136" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?fit=1548%2C2063&amp;ssl=1" data-orig-size="1548,2063" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?fit=750%2C1000&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=750%2C1000&#038;ssl=1" alt="Hans Scharler and Tasker Smith at the Pinball: A Quest for Mastery Book Release Party" class="wp-image-5541" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=1153%2C1536&amp;ssl=1 1153w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=1537%2C2048&amp;ssl=1 1537w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=750%2C1000&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?resize=1320%2C1759&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-26.png?w=1548&amp;ssl=1 1548w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Hans Scharler and Tasker Smith at the Pinball: A Quest for Mastery Book Release Party</figcaption></figure>



<p>I recommend the book for players of all skill levels. I find myself opening the book, flipping to a section, and learning something interesting no matter where I read. This also echoes one of Tasker&#8217;s viewpoints: take every moment to learn, get better, and make your own luck. The book is filled with advice and resources. The book doesn&#8217;t leave you feeling alone. I thoroughly enjoyed the read!</p>



<p>Go to your friendly local bookstore and pick up a copy.</p>



<p>Congrats, Tasker!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/pinball-a-quest-for-mastery/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5539</post-id>	</item>
		<item>
		<title>Atari Superman Pinball Wall Art Project</title>
		<link>https://nothans.com/atari-superman-pinball-wall-art-project</link>
					<comments>https://nothans.com/atari-superman-pinball-wall-art-project#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Sat, 25 Jul 2026 22:46:06 +0000</pubDate>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[cheerlights]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[pinball]]></category>
		<category><![CDATA[WLED]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5492</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>My family was spending the day at the <a href="https://www.electromagneticpinballmuseum.com/">Electromagnetic Pinball Museum</a> in Pawtucket, RI, and stumbled across an Atari Pinball Machine. Yes, Atari made pinball machines for a brief, unsuccessful spell. Atari launched the career of the most prolific pinball game designer, <a href="https://en.wikipedia.org/wiki/Steve_Ritchie_(pinball_designer)">Steve Ritchie</a>. Steve is still designing pinball machines 50 years later, with his most recent game, Sonic the Hedgehog from Jersey Jack Pinball. One of the people working there took me around and showed me all of the things that have been donated to the museum&#8230; just rooms and rooms of arcade machines, CRTs, and pinball parts. The Superman pinball machine was not in great shape, but looking at the classic art got me thinking about my yesteryear and sparked an idea&#8230; what if I turned it into some wall art for my game room? The guys said if I made a donation, the pinball playfield for Atari Superman is mine. That night I started my research. I actually didn&#8217;t find too much detail on Atari pinball machines, so I posted on the pinball forums and quickly got connected to people who knew something about it. The main thing was figuring out how far I needed to go to give this a second life, and I am glad that I didn&#8217;t know how much work it was going to be. I just took little steps, learned, shared, engaged with lots of new people, and plodded along. It took a month, but George and I got it done.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://youtube.com/shorts/bCr1r18FhCQ?si=aXXhcFiwhbjGVFm5"><img data-recalc-dims="1" loading="lazy" decoding="async" width="400" height="533" data-attachment-id="5493" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/superman-playfield-lit-small" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/superman-playfield-lit-small.gif?fit=400%2C533&amp;ssl=1" data-orig-size="400,533" data-comments-opened="0" data-image-title="superman playfield lit up with LEDs" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/superman-playfield-lit-small.gif?fit=400%2C533&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/superman-playfield-lit-small.gif?resize=400%2C533&#038;ssl=1" alt="" class="wp-image-5493"/></a></figure>
</div>


<p>The results are gorgeous! I learned a lot and will share more of the details when I get time. You can follow the live build here: <a href="https://pinside.com/pinball/forum/topic/atari-superman-playfield-wall-art">https://pinside.com/pinball/forum/topic/atari-superman-playfield-wall-art</a></p>


<h2 class="wp-block-heading" id="inserts-and-plastics">Inserts and Plastics</h2>


<p>When I got the playfield home, I realized that I didn&#8217;t have the complete playfield. I only had the wood and the printed art. Every insert, plastic piece, and post was removed. The original owner was planning a playfield restoration and had stopped at some point. The artwork was touched up and looked beautiful, but probably would not work for playing pinball on it. The inserts were going to be important since my goal was to place an LED behind them to make them glow.</p>



<p>I put out a post on Pinside looking for any old parts for the Atari Superman Pinball and got a few bites.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="680" height="797" data-attachment-id="5515" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-119" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-9.png?fit=680%2C797&amp;ssl=1" data-orig-size="680,797" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-9.png?fit=680%2C797&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-9.png?resize=680%2C797&#038;ssl=1" alt="" class="wp-image-5515" style="width:546px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-9.png?w=680&amp;ssl=1 680w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-9.png?resize=256%2C300&amp;ssl=1 256w" sizes="auto, (max-width: 680px) 100vw, 680px" /><figcaption class="wp-element-caption">Original Playfield Inserts for Superman Pinball</figcaption></figure>
</div>


<p>Soon enough, I got the original parts for this exact playfield. I got to meet up with the pinhead that donated the playfield to the museum. We chatted for hours about 70s and 80s pinball, swapped stories, and made a community connection. It was surreal to find the original owner, but the pinball community is a small niche hobby.</p>



<p>I also found the original Superman plafield plastic pieces. They shined right up with <a href="https://amzn.to/4fVQlYp">Novus Plastic Polish</a>. The Novus cleaning products are a must if you work on pinball machines.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5516" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-120" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-10.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-10.png?fit=712%2C945&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-10.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5516" style="width:460px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-10.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-10.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>
</div>


<p>To mount the plastic pieces on the playfield, you need post mounts and post stud screws. The mounts were easy to find, but the stud screws were a challenge. New ones were about a dollar each. So, this didn&#8217;t scale well. I needed like 60 of them, so if my math is right, that&#8217;s $60. I turned to eBay and found someone selling &#8220;pounds of old pinball parts&#8221;. This came in at $90! Look at the savings. Somehow, I felt better about buying old used parts than buying new ones at a lower price&#8230; and in the process, I got a bunch of rusty parts I didn&#8217;t even need.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="559" height="652" data-attachment-id="5517" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-121" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-11.png?fit=559%2C652&amp;ssl=1" data-orig-size="559,652" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-11.png?fit=559%2C652&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-11.png?resize=559%2C652&#038;ssl=1" alt="" class="wp-image-5517" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-11.png?w=559&amp;ssl=1 559w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-11.png?resize=257%2C300&amp;ssl=1 257w" sizes="auto, (max-width: 559px) 100vw, 559px" /><figcaption class="wp-element-caption">Rusty Pinball Parts from eBay</figcaption></figure>
</div>


<p>My old screw bucket was not happy that I bought someone else&#8217;s old screw bucket and didn&#8217;t even consult it.</p>



<p>Mounting all of the playfield parts took a lot of time, but you just do one at a time. I have a new respect for anyone who designs these things. 70s pinball was so much simpler than modern pinball machines, and it was still a lot of parts to track.</p>



<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/atari-superman-pinball-wall-art-project&quot;}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5525" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-129" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-19.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="playfield posts" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-19.png?fit=712%2C945&amp;ssl=1" data-id="5525" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-19.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5525" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-19.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-19.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5526" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-130" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-20.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="plastic pieces mounted to posts" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-20.png?fit=712%2C945&amp;ssl=1" data-id="5526" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-20.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5526" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-20.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-20.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5527" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-131" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-21.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="lane guides mounted" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-21.png?fit=712%2C945&amp;ssl=1" data-id="5527" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-21.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5527" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-21.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-21.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5528" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-132" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-22.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="making progress on the playfield" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-22.png?fit=712%2C945&amp;ssl=1" data-id="5528" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-22.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5528" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-22.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-22.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>
</figure>


<h2 class="wp-block-heading" id="flippers">Flippers</h2>


<p>I wanted to complete the top side of the playfield with flippers. So, I took old flippers from my Strikes and Spares pinball machine and cut them down for this build. Again, this will be wall-mounted, so you can&#8217;t have things sticking out too far in the back. They needed to be modded, and Dremel came to the rescue. Shooting a 6-foot stream of sparks across the room.</p>



<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/atari-superman-pinball-wall-art-project&quot;}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5521" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-125" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-15.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="Guiding the cut" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-15.png?fit=712%2C945&amp;ssl=1" data-id="5521" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-15.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5521" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-15.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-15.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5523" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-127" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-17.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="starting the cut" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-17.png?fit=712%2C945&amp;ssl=1" data-id="5523" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-17.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5523" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-17.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-17.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5522" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-126" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-16.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="finished flipper arm cut down to the right size" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-16.png?fit=712%2C945&amp;ssl=1" data-id="5522" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-16.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5522" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-16.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-16.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>
</figure>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="527" data-attachment-id="5524" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-128" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?fit=1024%2C720&amp;ssl=1" data-orig-size="1024,720" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?fit=750%2C527&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?resize=750%2C527&#038;ssl=1" alt="" class="wp-image-5524" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?resize=300%2C211&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?resize=768%2C540&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-18.png?resize=750%2C527&amp;ssl=1 750w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Flippers Mounted</figcaption></figure>
</div>

<h2 class="wp-block-heading" id="led-control-and-cheerlights">LED Control and CheerLights</h2>


<p>Of course, it is connected to the <a href="https://cheerlights.com/">CheerLights</a> project. This was going to happen 100% of the time whenever I connected 150 LEDs to something. I used WS2811 bullet-style LEDs that you can control one at a time. They fit perfectly in the 12.5mm general illumination holes in the playfield. I used a <a href="https://www.amazon.com/dp/B0D4TG8Y2Z?tag=nothans">WLED controller</a> and a 3A power supply to control the colors, animations, and synchronization with the <a href="https://cheerlights.com/build/wled/">CheerLights MQTT server</a>.</p>



<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/atari-superman-pinball-wall-art-project&quot;}'  class="wp-block-gallery has-nested-images columns-3 is-cropped is-style-rectangular wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5519" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-123" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-13.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="WS2811 12mm LED" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-13.png?fit=712%2C945&amp;ssl=1" data-id="5519" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-13.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5519" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-13.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-13.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="565" data-attachment-id="5518" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-122" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?fit=1255%2C945&amp;ssl=1" data-orig-size="1255,945" data-comments-opened="0" data-image-title="WS2811 12mm LED back side" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?fit=750%2C565&amp;ssl=1" data-id="5518" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=750%2C565&#038;ssl=1" alt="" class="wp-image-5518" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=1024%2C771&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=300%2C226&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=768%2C578&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=750%2C565&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=500%2C375&amp;ssl=1 500w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-12.png?w=1255&amp;ssl=1 1255w" sizes="auto, (max-width: 750px) 100vw, 750px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="712" height="945" data-attachment-id="5520" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-124" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-14.png?fit=712%2C945&amp;ssl=1" data-orig-size="712,945" data-comments-opened="0" data-image-title="WS2811 12mm LED working" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-14.png?fit=712%2C945&amp;ssl=1" data-id="5520" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-14.png?resize=712%2C945&#038;ssl=1" alt="" class="wp-image-5520" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-14.png?w=712&amp;ssl=1 712w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-14.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 712px) 100vw, 712px" /></figure>
</figure>



<p>The insert near the flippers stays in sync with the latest CheerLights color while the rest of the inserts can have their own color or visual effects.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5494" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-111" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?fit=945%2C945&amp;ssl=1" data-orig-size="945,945" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5494" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?w=945&amp;ssl=1 945w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=750%2C750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-1.png?resize=500%2C500&amp;ssl=1 500w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">CheerLights Insert on the Superman Pinball Playfield Stays in Sync with the Current CheerLights Color</figcaption></figure>



<p>Out of the box, the best animation effect was Stream 2. This very much looks like an attract mode on a pinball machine.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="361" data-attachment-id="5495" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-112" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?fit=1147%2C552&amp;ssl=1" data-orig-size="1147,552" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?fit=750%2C361&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?resize=750%2C361&#038;ssl=1" alt="" class="wp-image-5495" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?resize=1024%2C493&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?resize=300%2C144&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?resize=768%2C370&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?resize=750%2C361&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-2.png?w=1147&amp;ssl=1 1147w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">WLED settings for CheerLights and the Superman Pinball Wall Art Project</figcaption></figure>


<h2 class="wp-block-heading" id="3d-models">3D Models</h2>


<p>Part of the project was making my first 3D model to have the original pop bumpers mounted above the playfield but not connected to the original mechanism. Since this is wall art, I can&#8217;t have a mechanism sticking out 7 inches on the back. I also could not find the old-style pop bumpers on Maker World, so I designed my own&#8230; ish. Meaning it is not a pop bumper for function, it is a pop bumper to take light from an LED and let it shine through. I just published my first <a href="https://makerworld.com/en/models/3097105-atari-pop-bumper-base-light-up-pinball-display">model</a>!</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://makerworld.com/en/models/3097105-atari-pop-bumper-base-light-up-pinball-display" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="425" data-attachment-id="5502" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-113" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?fit=765%2C434&amp;ssl=1" data-orig-size="765,434" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?fit=750%2C425&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?resize=750%2C425&#038;ssl=1" alt="" class="wp-image-5502" style="width:637px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?w=765&amp;ssl=1 765w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?resize=300%2C170&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-3.png?resize=750%2C425&amp;ssl=1 750w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption">3D Model for Atari Pinball Pop Bumper Base for LED Wall Art Projects</figcaption></figure>
</div>


<p>For other parts needed, I found a person on Pinside who created a system called <a href="https://pinside.com/pinball/shops/shop/1167-gameroom-mods/15694-pinglow-playfield-art-system-starter-kits">PinGlow</a>. They were way ahead of me and had thought through the kind of stuff you are going to need for a wall art project like mine. They offer drop targets, stand-up targets, wall mounting kits, and even LEDs. I reached out to them on Pinside, and they offered to make a custom version of their drop targets specifically for the Atari Pinball machine. These drop targets had the Superman logo on them.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://pinside.com/pinball/shops/shop/1167-gameroom-mods/15694-pinglow-playfield-art-system-starter-kits" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" width="743" height="803" data-attachment-id="5505" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-114" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-4.png?fit=743%2C803&amp;ssl=1" data-orig-size="743,803" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-4.png?fit=743%2C803&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-4.png?resize=743%2C803&#038;ssl=1" alt="" class="wp-image-5505" style="width:546px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-4.png?w=743&amp;ssl=1 743w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-4.png?resize=278%2C300&amp;ssl=1 278w" sizes="auto, (max-width: 743px) 100vw, 743px" /></a><figcaption class="wp-element-caption">PinGlow parts from Gameroom Mods on Pinside</figcaption></figure>
</div>


<figure data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/atari-superman-pinball-wall-art-project&quot;}'  class="wp-block-gallery has-nested-images columns-3 is-cropped is-style-rectangular wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="748" height="993" data-attachment-id="5507" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-115" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-5.png?fit=748%2C993&amp;ssl=1" data-orig-size="748,993" data-comments-opened="0" data-image-title="pinglow custom drop targets" data-image-description="" data-image-caption="&lt;p&gt;pinglow custom drop targets&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-5.png?fit=748%2C993&amp;ssl=1" data-id="5507" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-5.png?resize=748%2C993&#038;ssl=1" alt="" class="wp-image-5507" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-5.png?w=748&amp;ssl=1 748w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-5.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 748px) 100vw, 748px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="748" height="993" data-attachment-id="5508" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-116" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-6.png?fit=748%2C993&amp;ssl=1" data-orig-size="748,993" data-comments-opened="0" data-image-title="pinglow drop target mounted to the bottom of the pinall playfield" data-image-description="" data-image-caption="&lt;p&gt;pinglow drop target mounted to the bottom of the pinall playfield&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-6.png?fit=748%2C993&amp;ssl=1" data-id="5508" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-6.png?resize=748%2C993&#038;ssl=1" alt="" class="wp-image-5508" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-6.png?w=748&amp;ssl=1 748w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-6.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 748px) 100vw, 748px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="748" height="993" data-attachment-id="5510" data-permalink="https://nothans.com/atari-superman-pinball-wall-art-project/image-117" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-7.png?fit=748%2C993&amp;ssl=1" data-orig-size="748,993" data-comments-opened="0" data-image-title="pinglow stand up targets" data-image-description="" data-image-caption="&lt;p&gt;pinglow stand up targets&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-7.png?fit=748%2C993&amp;ssl=1" data-id="5510" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-7.png?resize=748%2C993&#038;ssl=1" alt="" class="wp-image-5510" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-7.png?w=748&amp;ssl=1 748w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-7.png?resize=226%2C300&amp;ssl=1 226w" sizes="auto, (max-width: 748px) 100vw, 748px" /></figure>
</figure>


<h2 class="wp-block-heading" id="project-demo">Project Demo</h2>


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-9-16 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Atari Superman Pinball Wall Art Project #esp32 #wled #pinball" width="563" height="1000" src="https://www.youtube.com/embed/bCr1r18FhCQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Short project video for the Superman Pinball Wall Art Project</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/atari-superman-pinball-wall-art-project/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5492</post-id>	</item>
		<item>
		<title>CABLE 82: Turn a Raspberry Pi and an Old CRT Into a 1982 Cable Bulletin Board Channel</title>
		<link>https://nothans.com/cable-82-turn-a-raspberry-pi-and-an-old-crt-into-a-1982-cable-bulletin-board-channel</link>
					<comments>https://nothans.com/cable-82-turn-a-raspberry-pi-and-an-old-crt-into-a-1982-cable-bulletin-board-channel#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Thu, 23 Jul 2026 01:42:05 +0000</pubDate>
				<category><![CDATA[CheerLights]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[CRT]]></category>
		<category><![CDATA[internet of things]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[retro]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5489</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>Before feeds, your town had a channel.</p>



<p>You might know the one if you watched MTV when it first came on cable. A flat blue screen, chunky white text, the time and the temperature in the corner. The Lions Club pancake breakfast. A birthday wish for someone named STEVE. Little League signups at the rec center. Headlines crawling along the bottom while a Muzak version of a song you almost recognized played underneath. I remember watching it for long stretches of time waiting for the flea market noticed to come back around. Our Sears CRT had the blue bars burnt in.</p>



<p>At some point, the Cable Bulletin Board Channel disappeared from all of our lives. NOBODY IS TALKING ABOUT IT.</p>



<p>Recently, I have been spending evenings learning about retro gaming and reading posts on Reddit saying that you have to game on a CRT for the proper gaming experience. This led me to Facebook Marketplace. After a few weeks at looking at photos of TVs this got me remembering the big honker in our living room&#8230; then, I uncovered a repressed memory. I had to have it back in my life.</p>


<h2 class="wp-block-heading" id="meet-cable-82">Meet CABLE 82</h2>


<p>CABLE 82 is a tiny web app that turns any screen into your own 1982 community bulletin board channel. Ideally that screen is an old 4:3 CRT fed by a Raspberry Pi, sitting in the corner of a room, being ambient.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://github.com/nothans/cable-82"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="600" data-attachment-id="5490" data-permalink="https://nothans.com/cable-82-turn-a-raspberry-pi-and-an-old-crt-into-a-1982-cable-bulletin-board-channel/hero" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?fit=2000%2C1600&amp;ssl=1" data-orig-size="2000,1600" data-comments-opened="0" data-image-title="CABLE 82: Turn a Raspberry Pi and an Old CRT Into a 1982 Cable Bulletin Board Channel" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?fit=750%2C600&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=750%2C600&#038;ssl=1" alt="CABLE 82: Turn a Raspberry Pi and an Old CRT Into a 1982 Cable Bulletin Board Channel" class="wp-image-5490" style="aspect-ratio:1.2504481250448125;width:545px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=1024%2C819&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=300%2C240&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=768%2C614&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=1536%2C1229&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=750%2C600&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=1320%2C1056&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?resize=80%2C64&amp;ssl=1 80w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/hero.jpg?w=2000&amp;ssl=1 2000w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a></figure>
</div>


<p>It scrolls the date and time, your community messages, fun facts, dad jokes, live weather, and headlines from whatever RSS feeds you point it at. There is a crawl along the bottom, a red LATEST flag, and a little station bug in the corner, because of course there is.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="750" height="422" src="https://www.youtube.com/embed/d5Jcfx5oN0A?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>You make it yours in a control room in the browser, or by editing one plain config file. It is free and open source and it runs on a Raspberry Pi.</p>



<p>The rest of this post is how to get it going on a Raspberry Pi and a CRT.</p>


<h2 class="wp-block-heading" id="step-1-get-it-on-the-air">Step 1: Get it on the air</h2>


<p>SSH into the Pi, or just open a terminal on it, and run:</p>



<pre class="wp-block-code"><code>git clone https://github.com/nothans/cable-82
cd cable-82
node server.js</code></pre>



<p>Open&nbsp;<code>http://localhost:1982</code>&nbsp;in a browser on the Pi. You&#8217;re on the air.</p>



<p>Out of the box it already looks right: the blue screens, the clock, a couple of example bake-sale messages, and real headlines pulled from a few default feeds.</p>


<h2 class="wp-block-heading" id="step-2-make-it-your-channel">Step 2: Make it your channel</h2>


<p>Everything about the channel lives in one place. Open the control room at&nbsp;<code>http://localhost:1982/config</code>&nbsp;and you get the whole thing on one screen: the name, your community messages, which RSS feeds to pull, your town&#8217;s weather, the colors, the page lineup. Change something, hit Save, and the channel updates itself within about twenty seconds. Nobody has to touch the TV.</p>



<p>If you would rather edit a file, it all lives in&nbsp;<code>config.json</code>, and you can hand-edit that just as happily. Put your own town in the weather. Drop in the feeds you actually read. Write the messages your household needs to see, which in my house is mostly reminders that trash day is tomorrow.</p>


<h2 class="wp-block-heading" id="step-3-run-it-on-boot">Step 3: Run it on boot</h2>


<p>You do not want to SSH in and start a server every time the power blips. Make it a service so the Pi just comes up broadcasting.</p>



<p>Create&nbsp;<code>/etc/systemd/system/cable82.service</code>:</p>



<pre class="wp-block-code"><code>&#91;Unit]
Description=CABLE 82
After=network-online.target

&#91;Service]
ExecStart=/usr/bin/node /home/pi/cable-82/server.js
Restart=always
User=pi

&#91;Install]
WantedBy=multi-user.target</code></pre>



<p>Then turn it on:</p>



<pre class="wp-block-code"><code>sudo systemctl enable --now cable82</code></pre>



<p>Now the channel is always running in the background, whether anything is looking at it or not.</p>


<h2 class="wp-block-heading" id="step-4-point-a-browser-at-it-full-screen">Step 4: Point a browser at it, full screen</h2>


<p>Have the Pi launch Chromium in kiosk mode, pointed at the channel:</p>



<pre class="wp-block-code"><code>chromium-browser --kiosk --noerrdialogs --disable-infobars \
  --disable-lcd-text \
  --autoplay-policy=no-user-gesture-required \
  http:&#47;&#47;localhost:1982</code></pre>



<p>Two of those flags earn their keep.&nbsp;<code>--disable-lcd-text</code>&nbsp;turns off subpixel font smoothing, which otherwise tints the chunky white text a faint pink on some screens.&nbsp;<code>--autoplay-policy=no-user-gesture-required</code>&nbsp;lets the background music start on its own at boot, so nobody has to click anything to get the beautiful-music bed going.</p>



<p>While you are in there, turn off screen blanking so the picture never sleeps:&nbsp;<code>sudo raspi-config</code>&nbsp;&gt; Display Options &gt; Screen Blanking &gt; No.</p>


<h2 class="wp-block-heading" id="step-5-get-it-onto-a-real-crt">Step 5: Get it onto a real CRT</h2>


<p>This is the whole point, so let&#8217;s do it right.</p>



<p>The easiest and most reliable hookup works on any Pi and any TV with a coax (antenna) input. Run&nbsp;HDMI from the Pi into an&nbsp;<a href="https://amzn.to/4ftrKsq">HDMI-to-coax RF modulator</a>, then run coax from the modulator into the TV, and tune the TV to&nbsp;channel 3 or 4. Your Pi is now a broadcast channel and the TV is receiving it over the air the way God and 1982 intended.</p>



<p>If you have an older Pi with the yellow composite jack and a TV with an RCA input, you can skip the modulator and go straight out composite instead. Add this to&nbsp;<code>/boot/firmware/config.txt</code>:</p>



<pre class="wp-block-code"><code>enable_tvout=1
sdtv_mode=0        # NTSC (use 2 for PAL)
sdtv_aspect=1      # 4:3</code></pre>



<p>Either way, if the TV crops the edges of the picture, bump up the overscan margin in the control room until nothing important gets cut off. There are no fake scanline filters in CABLE 82, on purpose. The CRT is the filter.</p>


<h2 class="wp-block-heading" id="step-6-give-it-a-soundtrack">Step 6: Give it a soundtrack</h2>


<p>The real channels were never silent. Drop a few audio files into the&nbsp;<code>music/</code>&nbsp;folder and CABLE 82 plays them as a continuous background bed behind the pages, looping the set, shuffling if you like. Two tracks ship with it to get you started. Aim for the sound the old channels actually used: beautiful music, easy listening, and eventually the famous smooth jazz. I generated mine, but any lounge-y instrumental works.</p>


<h2 class="wp-block-heading" id="a-channel-of-your-own">A channel of your own</h2>


<p>A Pi, an old TV, a coax cable, and a folder of files, and now there is a corner of your house that runs its own quiet little channel: your messages, your weather, your headlines, your dad jokes, scrolling by all day.</p>



<p>It&#8217;s not useful, exactly. It&#8217;s better than useful.</p>



<p>CABLE 82 is open source and lives at <a href="https://github.com/nothans/cable-82">github.com/nothans/cable-82</a>.</p>


<h2 class="wp-block-heading" id="project-demo-video">Project Demo Video</h2>


<p>Watch 6 minutes of glorious community news like it is 1982. Enjoy.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="750" height="422" src="https://www.youtube.com/embed/0YEvI_oFfqY?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>


<h2 class="wp-block-heading" id="update-july-27-2026-cheerlights-support">Update July 27, 2026: CheerLights Support</h2>


<p>I can&#8217;t believe that it took me a few days to do this&#8230; <a href="https://cheerlights.com/">CheerLights</a>. A perfect feed (for me) is to see the latest CheerLights color scroll by every once in a while. Okay, so now you can add CheerLights feed support with a custom message if needed.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://github.com/nothans/cable-82"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="422" data-attachment-id="5531" data-permalink="https://nothans.com/cable-82-turn-a-raspberry-pi-and-an-old-crt-into-a-1982-cable-bulletin-board-channel/image-133" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?fit=1920%2C1080&amp;ssl=1" data-orig-size="1920,1080" data-comments-opened="0" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?fit=750%2C422&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=750%2C422&#038;ssl=1" alt="" class="wp-image-5531" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=1536%2C864&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=750%2C422&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=480%2C270&amp;ssl=1 480w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?resize=1320%2C743&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image-23.png?w=1920&amp;ssl=1 1920w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption">CheerLights is now on the CABLE 82 project</figcaption></figure>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/cable-82-turn-a-raspberry-pi-and-an-old-crt-into-a-1982-cable-bulletin-board-channel/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5489</post-id>	</item>
		<item>
		<title>Layout your Game Room without Moving 300-pound Machines Around</title>
		<link>https://nothans.com/layout-your-game-room-without-moving-300-pound-machines-around</link>
					<comments>https://nothans.com/layout-your-game-room-without-moving-300-pound-machines-around#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Sun, 05 Jul 2026 23:24:39 +0000</pubDate>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[arcade]]></category>
		<category><![CDATA[game room]]></category>
		<category><![CDATA[pinball]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5462</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>A pinball machine weighs about 300 pounds. Arcade cabinets heavy. I am always looking to maximize my bonus room space&#8230; and dream. I built a quick-and-dirty web app to lay out your game room. Add games, rotate, resize, add clearance, add customized blocks. Iterate.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="750" height="422" src="https://www.youtube.com/embed/fwVzahs8-V0?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>


<h2 class="wp-block-heading" id="what-i-made">What I made</h2>


<p>It&#8217;s called <a href="https://github.com/nothans/gameroom-designer">Gameroom Designer</a>. It lays out your game room to scale, right in the browser. You set your room&#8217;s real dimensions, drop in machines at their real footprints, and slide everything around until it works, before you move a single machine.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://github.com/nothans/gameroom-designer"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="472" data-attachment-id="5463" data-permalink="https://nothans.com/layout-your-game-room-without-moving-300-pound-machines-around/gameroom-designer-screenshot" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?fit=1271%2C800&amp;ssl=1" data-orig-size="1271,800" data-comments-opened="0" data-image-title="gameroom designer app screenshot" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?fit=750%2C472&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?resize=750%2C472&#038;ssl=1" alt="screenshot  of the game room designer app" class="wp-image-5463" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?resize=1024%2C645&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?resize=300%2C189&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?resize=768%2C483&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?resize=750%2C472&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/gameroom-designer-screenshot.png?w=1271&amp;ssl=1 1271w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption">Gameroom Designer</figcaption></figure>
</div>


<p>You can try it here:&nbsp;<a href="https://nothans.github.io/gameroom-designer/">https://nothans.github.io/gameroom-designer/</a></p>


<h2 class="wp-block-heading" id="how-it-works">How it works</h2>


<p>Start by typing your room size in feet (or meters, if that&#8217;s your thing). You get a room drawn to scale with a grid.</p>



<p>Then you fill it. There&#8217;s a searchable catalog of real stuff at real sizes: pinball (Stern, JJP, the Atari and generic widebodies), arcade uprights and cocktails and sit-down racers, a pool table, air hockey, foosball, shuffleboard, plus couches, bar stools, storage, the works. A 27-inch-wide pinball takes up exactly as much room next to an 84-inch sofa as it would in real life. Click an item to drop it in, or drag it straight onto the floor.</p>



<p>From there it&#8217;s the fun part. Drag machines around. Rotate them. Grab a whole row of pinballs, line up their edges, space them out evenly. Drop a dashed &#8220;clearance&#8221; zone around the pool table so you don&#8217;t forget you need five feet to actually swing a cue. Add doors, swing arc and all, so you can see the door won&#8217;t clip the cabinet you parked next to it. Zoom out to take in the whole room, use the minimap to get around, and when it looks right, export a PNG to show your partner exactly why the couch has to move.</p>



<p>There are a few example layouts built in, too, if you&#8217;d rather poke at a finished room than start from an empty one.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5464" data-permalink="https://nothans.com/layout-your-game-room-without-moving-300-pound-machines-around/image-109" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?fit=750%2C750&amp;ssl=1" data-orig-size="750,750" data-comments-opened="0" data-image-title="Free Gameroom Designer App" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5464" style="width:512px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?w=750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/07/image.png?resize=500%2C500&amp;ssl=1 500w" sizes="auto, (max-width: 750px) 100vw, 750px" /></figure>
</div>

<h2 class="wp-block-heading" id="i-built-it-fast-with-ai">I built it fast, with AI</h2>


<p>I built and shipped this fast using Agentic AI.</p>



<p>The interesting part was never &#8220;the code got written.&#8221; That&#8217;s kind of a solved problem now if you&#8217;re one person building one thing. The interesting part was the loop. I&#8217;d use the tool, hit something that annoyed me, and fix it right then.</p>



<p>Dragging a rotated block sent it flying to the wrong spot, so I fixed the math. Resizing a block didn&#8217;t stick, so I fixed that. I shrank my browser window and the whole layout looked like it had wandered off, so I wrote it up as issue #1 and fixed that too. Ideas showed up and went in the same afternoon: circular clearance zones, doors and windows, even spacing, drag-straight-from-the-library. Then a deploy to GitHub Pages, a banner, a little intro video.</p>



<p>None of that is magic. It&#8217;s a build-use-fix loop, run tight. The machine is fast at the typing, but knowing what to build next is still the whole job.</p>


<h2 class="wp-block-heading" id="your-machine-your-data">Your machine, your data</h2>


<p>The whole thing runs in your browser. Your layout saves to your own machine, so there&#8217;s no account to make, no server to trust, and nothing leaving your computer. It&#8217;s free, and it&#8217;s open source under MIT, so the entire thing is on GitHub if you want to poke at it or fork it:&nbsp;<a href="https://github.com/nothans/gameroom-designer">https://github.com/nothans/gameroom-designer</a>.</p>


<h2 class="wp-block-heading" id="tell-me-whats-missing">Tell me what&#8217;s missing</h2>


<p>I just posted it over in the forum to get some real feedback, because I built this for people who have way more machines than I do.</p>



<p>So go break it. Tell me which machine I forgot, which part feels clunky, what you&#8217;d add. That&#8217;s the fastest way this gets any good.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/layout-your-game-room-without-moving-300-pound-machines-around/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5462</post-id>	</item>
		<item>
		<title>Abode 101: A Practical Project to Learn the Open Knowledge Format (OKF)</title>
		<link>https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf</link>
					<comments>https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Sun, 28 Jun 2026 17:14:36 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[abode101]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[okf]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5457</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://www.youtube.com/watch?v=gYMh5LDbtw8" target="_blank" rel=" noreferrer noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5459" data-permalink="https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf/okf-for-your-house-abode101" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?fit=2048%2C2048&amp;ssl=1" data-orig-size="2048,2048" data-comments-opened="0" data-image-title="Google OKF for your house abode101" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5459" style="width:556px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=1536%2C1536&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=750%2C750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=500%2C500&amp;ssl=1 500w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?resize=1320%2C1320&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-for-your-house-abode101.png?w=2048&amp;ssl=1 2048w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption">Google OKF for Your House</figcaption></figure>
</div>


<p>I was standing in the hardware store holding a dead coin cell, squinting at it, trying to remember if the Lutron dimmer in my hallway takes a CR2032 or one of the other fourteen round silver batteries that all look exactly the same. So I guessed. I bought two of the wrong one. Classic.</p>



<p>Here is the thing about a house. You slowly learn a thousand tiny facts about it. The vent sizes. The filter part numbers. The spa was installed in some year you&#8217;ll never remember. The good info is scattered across manuals in a junk drawer, an email from the installer, a photo of a model plate you took and never looked at again. By the time you actually need a fact, it&#8217;s gone.</p>



<p>I finally fixed it. Not with an app. With a folder.</p>


<h2 class="wp-block-heading" id="the-idea-i-borrowed">The idea I borrowed</h2>


<p>Earlier this year Andrej Karpathy posted a little pattern he called an &#8220;LLM wiki.&#8221; Instead of the usual retrieval setup where you chop documents into chunks and stuff them in a vector database, you just keep a folder of Markdown files that the AI itself writes and maintains. The model builds the connections once, when it learns something, instead of re-deriving them every single time you ask. The internet looked at it and went &#8220;wait, it&#8217;s just a folder? why did we ever do the other thing.&#8221;</p>



<p>Then Google Cloud made it official. On June 12 they published the&nbsp;<a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md">Open Knowledge Format</a>, or OKF. It&#8217;s a tiny, vendor-neutral spec: a directory of Markdown files, one concept per file, a bit of YAML at the top, an index, links between them. No database. No SDK. Readable by a human and by any agent. That&#8217;s the whole thing.</p>



<p>So I pointed it at my house. The project is called Abode 101.</p>


<h2 class="wp-block-heading" id="what-i-actually-built">What I actually built</h2>


<p><a href="https://github.com/nothans/abode101" target="_blank" rel="noreferrer noopener">Abode 101</a> is an OKF folder about my home. There&#8217;s a file for the Lutron dimmer, one for the swim spa, one for the HVAC vents, one for the smoke alarms. There&#8217;s an <code>index.md</code> the AI reads first so it knows where to look. To use it, I don&#8217;t open an app. I just talk to it in Claude Code.</p>



<pre class="wp-block-code"><code>you ▸ what's the battery for the Lutron dimmer?
abode ▸ Panasonic CR2032, per the install guide (page 10).</code></pre>



<p>That&#8217;s the fact I drove to the store without. Now it&#8217;s one question away, and it tells me where it got the answer.</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="750" height="422" src="https://www.youtube.com/embed/gYMh5LDbtw8?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div><figcaption class="wp-element-caption">Abode101 Explainer Video</figcaption></figure>



<p>But a folder of files just sitting there is a filing cabinet. The magic is in two things the bare spec leaves out.</p>


<h2 class="wp-block-heading" id="thing-one-the-loop">Thing one: the loop</h2>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="572" height="1024" data-attachment-id="5460" data-permalink="https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf/okf-loop" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?fit=1429%2C2560&amp;ssl=1" data-orig-size="1429,2560" data-comments-opened="0" data-image-title="okf loop" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?fit=572%2C1024&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop.png?resize=572%2C1024&#038;ssl=1" alt="" class="wp-image-5460" style="width:484px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=572%2C1024&amp;ssl=1 572w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=768%2C1376&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=857%2C1536&amp;ssl=1 857w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=1143%2C2048&amp;ssl=1 1143w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=750%2C1344&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?resize=1320%2C2365&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-loop-scaled.png?w=1429&amp;ssl=1 1429w" sizes="auto, (max-width: 572px) 100vw, 572px" /></figure>
</div>


<p>OKF standardizes the files. It says nothing about keeping them fresh. Karpathy&#8217;s original idea had the AI do the maintaining, and that&#8217;s the part I cared about most, so I built it back in as a set of playbooks.</p>



<p>I capture a thing by telling it &#8220;I bought X,&#8221; or by dropping a manual, a receipt, or a photo of a label into an inbox folder. It reads whatever I throw at it, pulls out the real specs, and files them. Then overnight it does the boring homework I never do. It looks up the filter I just bought, finds the replacement part, figures out how often it needs changing, and adds a reminder. I wake up and my house knows more than it did when I went to bed.</p>


<h2 class="wp-block-heading" id="thing-two-it-refuses-to-guess">Thing two: it refuses to guess</h2>

<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="572" height="1024" data-attachment-id="5458" data-permalink="https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf/okf-battery" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?fit=1429%2C2560&amp;ssl=1" data-orig-size="1429,2560" data-comments-opened="0" data-image-title="okf battery answer" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?fit=572%2C1024&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery.png?resize=572%2C1024&#038;ssl=1" alt="" class="wp-image-5458" style="width:474px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=572%2C1024&amp;ssl=1 572w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=768%2C1376&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=857%2C1536&amp;ssl=1 857w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=1143%2C2048&amp;ssl=1 1143w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=750%2C1344&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?resize=1320%2C2365&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/okf-battery-scaled.png?w=1429&amp;ssl=1 1429w" sizes="auto, (max-width: 572px) 100vw, 572px" /></figure>
</div>


<p>This is the part I&#8217;m proud of. Every exact fact carries its source and a confidence level. A battery type from the manufacturer&#8217;s manual is &#8220;verified&#8221; and it gets cited. A spec from a random Amazon listing is &#8220;reported&#8221; and ranked lower. And when I ask something it doesn&#8217;t actually know, it says so.</p>



<pre class="wp-block-code"><code>you ▸ what size is the kitchen toe-kick vent?
abode ▸ Not recorded. It's marked TODO, needs measuring. I won't guess.</code></pre>



<p>An AI that says &#8220;I don&#8217;t know&#8221; instead of inventing a confident wrong number. For house facts, where the wrong answer means a second trip to the store or a part that doesn&#8217;t fit, that refusal is the feature.</p>



<p>I ran a little eval suite over it to make sure. Twenty-one questions, answered cold. It got the exact facts right, with sources, and on the three questions it shouldn&#8217;t know, it refused all three. That&#8217;s the behavior I want from something I&#8217;m going to trust with my house.</p>


<h2 class="wp-block-heading" id="why-a-folder-beats-an-app">Why a folder beats an app</h2>


<p>I could have built a slick app with a database. I&#8217;m glad I didn&#8217;t. The folder is portable, it diffs in version control, it works with any model, and I own it. There&#8217;s no service to shut down, no export button I&#8217;ll go hunting for in five years. When the next better model comes out, I point it at the same folder and it just works. Try that with your smart-home app from 2014.</p>


<h2 class="wp-block-heading" id="get-it">Get it</h2>


<p>I open-sourced the framework. The structure, the agent instructions, the playbooks, even the eval harness are all in the repo. My actual house data stays on my machine, gitignored, because you do not need to know my spa&#8217;s gallon count. You fork it and fill it with your own home.</p>



<p><strong>→&nbsp;<a href="https://github.com/nothans/abode101">github.com/nothans/abode101</a></strong></p>



<p>Go give your house a memory. And maybe check what battery your dimmer takes before you drive to the store. Just a thought&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/abode-101-a-practical-project-to-learn-the-open-knowledge-format-okf/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5457</post-id>	</item>
		<item>
		<title>Create the &#8220;Best Agent Skill&#8221; with SkillOpt from Microsoft Research</title>
		<link>https://nothans.com/create-the-best-agent-skill-with-skillopt-from-microsoft-research</link>
					<comments>https://nothans.com/create-the-best-agent-skill-with-skillopt-from-microsoft-research#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Fri, 19 Jun 2026 01:15:49 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Agent Skills]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[Microsoft Research]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[SkillOpt]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5447</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>For two years the move was simple: pick a better model. Then the models got good, and stayed good, and the gaps between them got boring. So the interesting lever is the other thing you hand the agent now. The skill file.</p>



<p>Microsoft Research just shipped a tool called <a href="https://github.com/microsoft/SkillOpt">SkillOpt</a> that takes that idea literally.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>SkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.</p>
</blockquote>



<p>It treats the skill markdown you hand an agent (the instructions, the system prompt, the SKILL.md) as trainable state. It runs epochs. It has a batch size. It has a learning rate. It just never touches the model weights. The weights stay frozen behind the API. The thing that gets trained is the text.</p>



<p>The loop is short. Run the agent on a batch of tasks. Score each one. A second model reads the failures and proposes small edits to the skill file. Keep an edit only if it improves a held-out score. Repeat. What you get at the end is a&nbsp;<code>best_skill.md</code>&nbsp;you drop in front of the same unchanged model.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><a href="https://github.com/microsoft/SkillOpt"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5448" data-permalink="https://nothans.com/create-the-best-agent-skill-with-skillopt-from-microsoft-research/image-108" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?fit=750%2C750&amp;ssl=1" data-orig-size="750,750" data-comments-opened="0" data-image-title="SkillOpt from Microsoft Research" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5448" style="width:504px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?w=750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/image.png?resize=500%2C500&amp;ssl=1 500w" sizes="auto, (max-width: 750px) 100vw, 750px" /></a><figcaption class="wp-element-caption">Microsoft Research <a href="https://github.com/microsoft/SkillOpt">SkillOpt</a></figcaption></figure>
</div>


<p>I wanted to see it actually work, so I gave it a job&#8230;</p>


<h2 class="wp-block-heading" id="the-setup">The setup</h2>


<p>I had OpenAI Codex do the writing. The task: take a paragraph stuffed with AI slop and clean it up. The skill it started from was short:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Improve the passage so it reads a little better. Keep the meaning and roughly the length.</p>
</blockquote>



<p>No mention of slop. No list of banned words. Nothing to go on.</p>



<p>The verifier was the part that mattered. I wrote a dumb little counter that scans the output for the tells (the canned phrases, the em-dashes) and returns how many are left. Fewer is better. That is the whole eval. Objective, cheap, no judgment calls.</p>



<p>Then I let SkillOpt run.</p>


<h2 class="wp-block-heading" id="what-it-wrote">What it wrote</h2>


<p>The seed turned into a thirty-line deslop skill. SkillOpt wrote it.</p>



<p>It worked out, on its own, that &#8220;remove AI slop&#8221; is a removal constraint and not a tone nudge. It named the exact phrases that kept leaking through (&#8220;let&#8217;s dive in,&#8221; &#8220;have you ever wondered,&#8221; &#8220;it&#8217;s worth noting,&#8221; &#8220;furthermore,&#8221; &#8220;in conclusion,&#8221; &#8220;great question&#8221;). It flagged em-dashes. And it caught the sneaky failure mode I never told it about: the model dodging a banned word by swapping in a synonym. That one became its own rule, the last line of the file:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Before answering, do a quick scan to ensure none of the original flagged words remain, including close synonyms you may have introduced.</p>
</blockquote>



<p>The score went from passing half the held-out passages to passing all of them. The skill it wrote is one I would actually keep.</p>


<h2 class="wp-block-heading" id="the-part-worth-keeping">The part worth keeping</h2>


<p>The optimizer is the easy part.</p>



<p>I went in assuming the clever bit was the model proposing edits. It isn&#8217;t. The clever bit is the verifier. Give SkillOpt a score and nothing else and it does nothing. I tried that first. It saw the failures, shrugged, and changed not a single line, because &#8220;you got a 0.6&#8221; tells it nothing about what to fix. The run that worked was the one where the verifier also said which words leaked. Same model, same loop. The difference was the signal.</p>



<p>So the rule of thumb is less &#8220;use the self-improving optimizer&#8221; and more: can you score this cheaply, and can you tell it why it failed. If yes, the skill mostly writes itself. If no, there is nothing to train and the fancy loop sits there idle.</p>



<p>That is also the catch, and it is the same catch hiding under every self-improving-agent demo. A slop counter is a clean verifier. Most of what you do in a day is not. &#8220;Was this brief any good.&#8221; &#8220;Did this post land.&#8221; No cheap score, no training. The optimizer was never the bottleneck. The verifier is.</p>



<p>So build the verifier first. Get that right and the skill mostly writes itself.</p>


<h2 class="wp-block-heading" id="bonus-a-taste-of-running-it">Bonus: a taste of running it</h2>


<p>The repo is&nbsp;<a href="https://github.com/microsoft/SkillOpt">github.com/microsoft/SkillOpt</a>. MIT licensed, Python.</p>



<p>Get it:</p>



<pre class="wp-block-code"><code>pip install skillopt
# or, to poke at the internals:
git clone https://github.com/microsoft/SkillOpt &amp;&amp; cd SkillOpt &amp;&amp; pip install -e .</code></pre>



<p>The mental model is one small folder per task. A loader that hands over your examples, a rollout that runs your agent and scores it, and a seed skill to start from. SkillOpt&#8217;s whole job is to grow that seed.</p>



<p>The config reads like a training run, on purpose:</p>



<pre class="wp-block-code"><code>train:
  num_epochs: 4
  batch_size: 40
optimizer:
  learning_rate: 4        # max edits to the skill per step
  lr_scheduler: cosine
evaluation:
  use_gate: true          # keep an edit only if it beats the held-out score
model:
  optimizer: gpt-5.4      # the model that proposes the edits</code></pre>



<p>Then it is one command:</p>



<pre class="wp-block-code"><code>python scripts/train.py --config configs/yourtask/default.yaml</code></pre>



<p>The only part that is really on you is the scoring. Your rollout returns, per task, a pass/fail and a number between 0 and 1:</p>



<pre class="wp-block-code"><code>return {"id": task_id, "hard": passed, "soft": fraction_correct}</code></pre>



<p>That is the whole contract. Give it tasks, a way to score them, and a skill to start from. It runs the epochs.</p>



<p>One side note: keep the tasks hard enough that the agent fails some of them. If it aces everything on the seed skill, there is nothing to learn and SkillOpt politely does nothing. Ask me how I know.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/create-the-best-agent-skill-with-skillopt-from-microsoft-research/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5447</post-id>	</item>
		<item>
		<title>What I Learned from Garry Tan and gstack</title>
		<link>https://nothans.com/what-i-learned-from-garry-tan-and-gstack</link>
					<comments>https://nothans.com/what-i-learned-from-garry-tan-and-gstack#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Sat, 06 Jun 2026 15:28:44 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[Agent Skills]]></category>
		<category><![CDATA[agents]]></category>
		<category><![CDATA[Garry Tan]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5438</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>Garry Tan, the guy who runs Y Combinator, just open-sourced a toolkit called <a href="https://github.com/garrytan/gstack">gstack</a>. It runs on top of Claude Code and turns it into a virtual engineering team. Twenty-three specialized skills, eight power tools, each one playing a role you&#8217;d normally have to hire for. A CEO that rethinks your product. An engineering manager that locks down the architecture. A designer that catches AI slop. A QA lead that drives a real browser and files bugs against you.</p>



<p>I read through it expecting to roll my eyes. Instead I sat there nodding, because I&#8217;d accidentally built a tiny version of the same thing for this blog.</p>


<h2 class="wp-block-heading" id="the-pitch">The pitch</h2>


<p>gstack&#8217;s whole argument is that solo builders don&#8217;t lose to big teams because they&#8217;re worse engineers. They lose because they skip process. One person at a keyboard, prompting Claude into existence one vibe at a time, eventually ships something that works. Until it doesn&#8217;t. No review. No second opinion. No one asking &#8220;wait, should we even build this?&#8221;</p>



<p>So gstack bakes the process in. Every skill is a slash command, and each command plays a role in a pipeline:</p>



<p><strong>Think → Plan → Build → Review → Test → Ship → Reflect</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="500" data-attachment-id="5437" data-permalink="https://nothans.com/gstack-overview-infographic" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?fit=1536%2C1024&amp;ssl=1" data-orig-size="1536,1024" data-comments-opened="0" data-image-title="gstack-overview-infographic" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?fit=750%2C500&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=750%2C500&#038;ssl=1" alt="gstack: seven stages from Think to Reflect, with roles like CEO, Designer, Eng Manager, QA, Security, and Release mapped underneath." class="wp-image-5437" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=1024%2C683&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=300%2C200&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=768%2C512&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=750%2C500&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=420%2C280&amp;ssl=1 420w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?resize=1320%2C880&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/06/gstack-overview-infographic.png?w=1536&amp;ssl=1 1536w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">gsta</figcaption></figure>
</div>


<p>You start a project with&nbsp;<code>/office-hours</code>, which hits you with six forcing questions before you write a line of code. Then&nbsp;<code>/plan-ceo-review</code>&nbsp;challenges your scope.&nbsp;<code>/plan-eng-review</code>&nbsp;draws the data-flow diagrams and enumerates the edge cases. You build.&nbsp;<code>/review</code>&nbsp;does a staff-engineer pass and auto-fixes the obvious stuff.&nbsp;<code>/qa</code>&nbsp;opens an actual Chromium browser, clicks through your app, finds bugs, and writes a regression test for each one it fixes.&nbsp;<code>/ship</code>&nbsp;runs the suite and opens the PR.</p>



<p>Each stage feeds the next. The CEO&#8217;s decisions constrain the engineer. The engineer&#8217;s plan constrains the build. Nothing happens in a vacuum. That&#8217;s exactly the part solo work gets wrong.</p>



<p>There&#8217;s a whole security wing too. A&nbsp;<code>/cso</code>&nbsp;skill that runs OWASP Top 10 and STRIDE threat modeling. A sidebar Claude that watches for prompt injection. A&nbsp;<code>/careful</code>&nbsp;mode that warns you before&nbsp;<code>rm -rf</code>&nbsp;ruins your afternoon. It&#8217;s a lot. The point isn&#8217;t that you use all of it. The point is that the roles exist, named and on call.</p>


<h2 class="wp-block-heading" id="why-this-looked-familiar">Why this looked familiar</h2>


<p>Here&#8217;s the thing. I don&#8217;t ship code through a blog. I ship words. But the moment I saw that pipeline I recognized it, because the posts you&#8217;re reading go through the same kind of relay.</p>



<p>When I write here, an idea doesn&#8217;t go straight from my head to WordPress. It moves through stages, and each stage has one job:</p>



<ul class="wp-block-list">
<li><strong>Research</strong> does the digging and writes up a structured report. Pitch, key facts, angle, the competition check.</li>



<li><strong>Refine</strong> tightens the structure and pacing without touching the voice.</li>



<li><strong>De-slop</strong> strips out the AI tells. The em-dashes, the &#8220;it&#8217;s not just X, it&#8217;s Y,&#8221; the forced enthusiasm, the closer that tries to sound profound.</li>



<li><strong>Voice</strong> rewrites it to sound like me. Short sentences. Plain words. No throat-clearing.</li>



<li><strong>Format</strong> turns it into clean WordPress blocks.</li>
</ul>



<p>Each one hands off to the next. Same shape as gstack. A CEO who reframes the product is doing what my research stage does for a post. A designer who catches AI slop is, almost word for word, my de-slop pass. Garry Tan built an org chart for shipping software. I built a smaller one for shipping writing, and I didn&#8217;t even notice the resemblance until his showed up.</p>



<p>I&#8217;m not claiming I invented anything. The idea is in the water. Once you spend enough time working alongside an agent, you stop treating it like one genius who does everything and start treating it like a team you have to manage. You give each role a narrow job and a clean handoff. That&#8217;s not a trick. It&#8217;s just how good teams have always worked, now running in a terminal.</p>


<h2 class="wp-block-heading" id="the-number-everyones-going-to-argue-about">The number everyone&#8217;s going to argue about</h2>


<p>gstack ships with a doc making a bold claim: Garry measured his own output and found he&#8217;s writing about 810 times more code per day than he did back in 2013 when he was coding part-time around a day job. Eleven thousand logical lines a day across his first 108 days.</p>



<p>Your skepticism alarm should be going off. So was his. He concedes up front that lines of code is a garbage quality metric. His own line: measuring programming progress by lines of code is like measuring aircraft-building progress by weight. So he deflates the number hard. Strips comments and blanks, applies a 2x penalty for AI being verbose and defensive, and lands at something like 5,700 lines a day. Still a wild figure. Still self-reported, so take it with salt.</p>



<p>But the interesting claim isn&#8217;t the speed. It&#8217;s the quality holding steady while the speed goes up. A 2 percent revert rate, right in line with the open-source baseline. Two thousand-plus automated tests with CI. A 95 percent success rate across 305,000 skill runs. His actual thesis is buried under the headline number:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Testing at multiple levels is what makes AI-assisted coding actually work.&#8221;</p>
</blockquote>



<p>That one I believe without reservation, because it&#8217;s the same thing the pipeline is really about. The process isn&#8217;t there to make the agent faster. It&#8217;s there to catch the agent when it&#8217;s confidently wrong, which it will be, several times a day. Every stage is a checkpoint, a chance for something to get caught before it ships. The payoff isn&#8217;t speed, it&#8217;s fewer mistakes reaching the end.</p>


<h2 class="wp-block-heading" id="what-i-did-with-it">What I did with it</h2>


<p>I&#8217;m not installing the whole thing. gstack is TypeScript and Bun and Playwright, built for shipping web apps, and Windows is a second-class citizen in it. Not my stack. Not my use case.</p>



<p>So I stole the front of it instead. The skill I keep coming back to is&nbsp;<code>/office-hours</code>: six forcing questions you have to answer before you&#8217;re allowed to build anything. Who is this for. What&#8217;s the sharpest version of it. What are you quietly avoiding. It&#8217;s a CEO review for an idea that doesn&#8217;t exist yet.</p>



<p>That maps straight onto the worst part of blogging, which is deciding what&#8217;s even worth writing. So I pointed it at this blog. Before a topic earns a draft, I run it through the same kind of interrogation in Claude Code. What&#8217;s the one sentence. Who already wrote it better. What&#8217;s the angle only I have. Why now. Most ideas die right there, which is the point. The ones that live show up to the draft stage already knowing what they are.</p>



<p>This post is one of them. gstack was the raw idea. The forcing questions are what turned &#8220;gstack exists, that&#8217;s neat&#8221; into something with an angle worth your time. The tool I borrowed from is the tool that helped me write about borrowing from it.</p>



<p>So here&#8217;s what you should know today. gstack is out there, it&#8217;s free, and even if you never run a line of it, the shape is worth stealing. Garry Tan built that discipline for code. I run a lighter version of it on words. You can point it at whatever you make. The pipeline is the product. The agent&#8217;s just the labor.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/what-i-learned-from-garry-tan-and-gstack/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5438</post-id>	</item>
		<item>
		<title>AI Agents for Hardware Engineering</title>
		<link>https://nothans.com/ai-agents-for-hardware-engineering</link>
					<comments>https://nothans.com/ai-agents-for-hardware-engineering#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Fri, 22 May 2026 21:59:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Simulink]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5431</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>There&#8217;s a belief going around that you can prompt your way to anything. Hand the AI a problem, walk away, come back to working code.</p>



<p>Fine for a side-project web app. Does not work for an inverted pendulum spinning on your desk.</p>


<h2 class="wp-block-heading" id="the-pit-and-the-pendulum">The Pit and the Pendulum</h2>


<p>MathWorks just published a <a href="https://www.youtube.com/watch?v=-G4H2DmhR28">Tech Talk by Brian Douglas</a>. It is worth watching if you build hardware.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="750" height="422" src="https://www.youtube.com/embed/-G4H2DmhR28?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>The setup is a Quanser cube servo with an inverted pendulum, a Raspberry Pi running the controller, and a coding agent wired into Simulink through the <a href="https://github.com/matlab/simulink-agentic-toolkit">Simulink Agentic Toolkit</a>. The agent&#8217;s job is to swing the pendulum up and balance it.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5433" data-permalink="https://nothans.com/ai-agents-for-hardware-engineering/image-107" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?fit=1024%2C1024&amp;ssl=1" data-orig-size="1024,1024" data-comments-opened="0" data-image-title="AI Agents for Hardware Engineering, Simulink Agentic Toolkit" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5433" style="width:559px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=750%2C750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/image-1.png?resize=500%2C500&amp;ssl=1 500w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption"><a href="https://github.com/matlab/simulink-agentic-toolkit">Simulink Agentic Toolkit</a></figcaption></figure>
</div>


<p>Balancing an inverted pendulum is a classic control problem because it&#8217;s unstable by nature. Get the math wrong and the pendulum falls. Get the code wrong and a 12V motor jerks the cube into something it shouldn&#8217;t.</p>


<h2 class="wp-block-heading" id="what-happens-if-you-just-prompt-it">What Happens If You Just Prompt It</h2>


<p>The tempting move is the one most of us have done with web apps. Open a chat, describe the system, ask for the code. One prompt, big blob, ship it.</p>



<p>The MathWorks engineers walk through why that falls apart for hardware:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;If you rely on AI to generate code directly, that process is much less structured&#8230; it&#8217;s often unclear exactly how or why a particular implementation was created, making it harder to trust and verify.&#8221;</p>



<p>Brian Douglas</p>
</blockquote>



<p>Hardware is unforgiving. You can&#8217;t roll back a destroyed motor with a git revert. When a physical system fails, you need to know which assumption broke, which equation got the wrong constant, which sample rate the controller is actually running at. A black box of generated C code doesn&#8217;t tell you any of that.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;You don&#8217;t want to let your AI agent skip parts of your engineering workflow. That&#8217;s how you can get yourself into trouble with a final product that doesn&#8217;t meet your objective or worse, is just purely unsafe.&#8221;</p>



<p>Brian Douglas</p>
</blockquote>


<h2 class="wp-block-heading" id="the-workflow-is-the-script">The Workflow Is the Script</h2>


<p>The answer is to keep the AI inside the workflow engineers already trust: Model-Based Design. The agent doesn&#8217;t replace the workflow. It runs each step inside it, faster.</p>



<p><strong>Define quantifiable requirements.</strong>&nbsp;Before any code, the human and the AI agree on what success looks like. Spin-up speed. Wobble limits. The 12V motor constraint. These targets become the benchmarks for verification later.</p>



<p><strong>Use a trusted model.</strong>&nbsp;Instead of letting the AI invent a custom physics engine, the workflow points it at an existing Simulink model. The agent runs linearization through the Simulink Agentic Toolkit and reports the system&#8217;s poles back to the human. The math comes from validated tools, not from a language model freestyling differential equations.</p>



<p><strong>Use a trusted controller.</strong>&nbsp;Same logic. The agent is told to use the MPC Toolbox. Model Predictive Control has decades of theory behind it and a deterministic implementation. If something looks wrong, you can tune it manually. You&#8217;re not debugging an optimizer the AI invented on the fly.</p>



<p><strong>Verify in layers.</strong>&nbsp;Three stages before the code touches hardware:</p>



<ul class="wp-block-list">
<li><strong>MIL</strong> (Model-in-the-Loop): the controller runs against the theoretical model</li>



<li><strong>SIL</strong> (Software-in-the-Loop): the generated embedded C code runs on a computer, behaving exactly like the simulation</li>



<li><strong>PIL</strong> (Processor-in-the-Loop): the C code runs on the actual target Raspberry Pi</li>
</ul>



<p>Each layer catches different bugs. Skip one and you&#8217;ll catch that bug on hardware instead.</p>



<p><strong>Deploy and iterate.</strong>&nbsp;Only after layered verification does the code go on the real pendulum.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Instead of asking an agent to solve your problem however it wants, you tell it to follow an engineering workflow that you understand.&#8221;</p>



<p>Brian Douglas</p>
</blockquote>



<p>The AI executes. The human directs.</p>


<h2 class="wp-block-heading" id="the-hardware-truth">The Hardware Truth</h2>


<p>Here&#8217;s the part of the video I liked best. They ran the verified controller on the real pendulum and it didn&#8217;t quite work. The physical hardware behaved differently from the model.</p>



<p>This is what the vibe-coding fantasy ignores. Reality disagrees with simulation, especially the first time. You will need to iterate. The thing that matters is whether you can.</p>



<p>Because the team followed the workflow, they could. The model was traceable. The requirements were quantifiable. The controller was inspectable. They used the AI to update the physics model, ran it back through MIL, SIL, and PIL, and tried again. No starting over.</p>



<p>The workflow doesn&#8217;t promise perfect code on the first pass. It promises code you can fix.</p>


<h2 class="wp-block-heading" id="the-director-pattern">The Director Pattern</h2>


<p>A few months <a href="https://nothans.com/the-matlab-engineering-super-stack" data-type="link" data-id="https://nothans.com/the-matlab-engineering-super-stack">ago</a>, I wrote about Seth DeLand&#8217;s framing of agentic AI for engineers. The headline idea: you&#8217;re not being replaced, you&#8217;re being promoted. The engineer becomes the one who defines the problem, sets the constraints, and shapes the space where the AI works.</p>



<p>The MathWorks Tech Talk is what that looks like in hardware. The AI isn&#8217;t the engineer. It&#8217;s the agent. You&#8217;re the director.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Agentic AI is powerful, but for engineering, the value comes from how you use it. You get the speed and productivity benefits of AI without sacrificing trust, safety, or understanding.&#8221;</p>



<p>Brian Douglas</p>
</blockquote>



<p>You don&#8217;t get speed and safety together by handing the AI a prompt and crossing your fingers. You get there by keeping the workflow you trust and letting the agent move faster inside it.</p>



<p>Speed without losing safety. Productivity without losing traceability.</p>



<p>For software, vibe coding is mostly fine. The blast radius is a wasted afternoon.</p>



<p>For hardware, the blast radius is a sparking motor and a pendulum on the floor.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/ai-agents-for-hardware-engineering/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5431</post-id>	</item>
		<item>
		<title>Summer of BBQ 2026: Texas-Style Brisket Smoking Process Updates</title>
		<link>https://nothans.com/summer-of-bbq-2026-texas-style-brisket-smoking-process-updates</link>
					<comments>https://nothans.com/summer-of-bbq-2026-texas-style-brisket-smoking-process-updates#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Tue, 12 May 2026 15:08:08 +0000</pubDate>
				<category><![CDATA[BBQ]]></category>
		<category><![CDATA[brisket]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5426</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>Four years <a href="https://nothans.com/make-a-texas-brisket">ago</a>, I wrote up how I cook a Texas-style brisket at home on the WSM. The plan was to change one thing for every cook and see what works. A few things did.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="750" data-attachment-id="5428" data-permalink="https://nothans.com/summer-of-bbq-2026-texas-style-brisket-smoking-process-updates/summer-of-bbq-2026" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?fit=1024%2C1024&amp;ssl=1" data-orig-size="1024,1024" data-comments-opened="0" data-image-title="Summer of BBQ 2026" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5428" style="width:522px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=750%2C750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/05/Summer-of-BBQ-2026.png?resize=500%2C500&amp;ssl=1 500w" sizes="auto, (max-width: 750px) 100vw, 750px" /></figure>
</div>

<h2 class="wp-block-heading" id="the-process-in-a-nutshell">The process&#8230; in a nutshell.</h2>


<p>Buy an untrimmed brisket. Packer cut. Trim to a quarter-inch fat cap. Rub with a <a href="https://nothans.com/texas-brisket-rub-recipe">rub</a> of coarse salt and pepper (and nothing else, right). Smoke at 225°F on a Weber Smokey Mountain over post oak and pecan until the bark sets. Wrap in pink butcher paper with rendered tallow. Smoke until the probe slides in like butter. Rest in a dry cooler for hours. Slice against the grain.</p>



<p>I tried a few smokers over the years, but I still love my Weber Smoky Mountain (WSM). Harry Soo, who has won Grand Championships on the exact smoker said it best:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Where else in the world can $300 and a pit get you the opportunity to cook against the best Pit Masters in the world?&#8221;</p>
</blockquote>


<h2 class="wp-block-heading" id="what-got-validated-over-the-years">What got validated over the years</h2>


<p><strong>Lawry&#8217;s in the rub.</strong>&nbsp;The original recipe was half Lawry&#8217;s Seasoned Salt, half kosher salt, full cup of coarse Tellicherry pepper. People on the internet had opinions. Then Goldee&#8217;s in Fort Worth got named the #1 barbecue in Texas by Texas Monthly, and pitmaster Jonny White told the magazine,&nbsp;<a href="https://www.texasmonthly.com/bbq/seasoning-worst-kept-secret-texas-barbecue/">&#8220;Lawry&#8217;s goes on all the briskets at Goldee&#8217;s.&#8221;</a>&nbsp;He called it the best secret ingredient in barbecue. I&#8217;d like it noted for the record.</p>



<p><strong>Water in the pan.</strong> There&#8217;s a whole cottage industry telling you to replace the WSM water pan with sand, ceramic, or nothing. I tried them all. I went back to water. <a href="https://www.virtualweberbullet.com/using-water-pan-weber-smokers/">Chris Allingham at Virtual Weber Bullet</a> said, &#8220;It&#8217;s almost impossible to run the Weber Bullet over 275°F as long as the pan is filled with water.&#8221; </p>



<p><strong>The long rest.</strong> The 4-6 hour rest seemed to be perfect for brisket. Don&#8217;t skip the rest phase.</p>


<h2 class="wp-block-heading" id="what-changed-in-five-years">What changed in five years</h2>


<p><strong>Two probes, not one.</strong> This is the single biggest jump in quality. The flat and the point are two different cooks happening on one piece of meat. The point runs about 10°F hotter than the flat for most of the smoke. I used to pull when the flat hit 170°F. Now I pull on the average. </p>



<p><strong>I write down every cook.</strong> Brisket weight, flat-to-point thickness ratio, ambient temp, fuel load, the time the probe-test passes. Median probe-test temp across 100 cooks: 203°F. Range: 198°F to 209°F. </p>



<p><strong>I plan the rest, not the cook.</strong> I used to plan backwards from &#8220;brisket goes on the smoker.&#8221; Now I plan backwards from &#8220;brisket comes out of the cooler.&#8221;</p>


<h2 class="wp-block-heading" id="what-im-trying-next">What I&#8217;m trying next</h2>


<p>The list for this summer:</p>



<ul class="wp-block-list">
<li><strong>Buy by shape, not weight.</strong> The hypothesis is that an aerodynamic 12-pounder beats a lumpy 16-pounder every time.</li>



<li><strong>Render my own tallow every cook.</strong> I&#8217;ve used jarred Wagyu tallow. It&#8217;s fine. Tallow rendered from the trimmings of the brisket I&#8217;m cooking is the same flavor DNA as what&#8217;s on the grate.</li>



<li><strong>Fewer wood chunks, earlier.</strong> I think I&#8217;ve been over-smoking the bark in hour two. Going to try three chunks instead of five and see if the bark changes.</li>
</ul>


<h2 class="wp-block-heading" id="the-short-list">The short list</h2>


<ol class="wp-block-list">
<li>Buy by shape, not by weight.</li>



<li>Two probes. One in the flat, one in the point.</li>



<li>Salt, pepper, and Lawry&#8217;s.</li>



<li>Trust the water pan. It&#8217;s the WSM&#8217;s cruise control.</li>



<li>Rest longer than feels reasonable.</li>



<li>Keep a log. </li>
</ol>


<h2 class="wp-block-heading" id="in-the-year-2030">In the year 2030&#8230;</h2>


<p>I&#8217;m going to write the 2030 version of this post and half of what I wrote here will be updated, maybe AI will unlock more secrets of brisket smoking.</p>



<p>If you cook a brisket from the original guide, or from this update, tell me how it went. What you changed. What would you do differently? The more we share, the better we all get.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/summer-of-bbq-2026-texas-style-brisket-smoking-process-updates/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5426</post-id>	</item>
	</channel>
</rss>
