<?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>Hans Scharler &#8211; About Things | A Hans Scharler Blog</title>
	<atom:link href="https://nothans.com/author/hans/feed" rel="self" type="application/rss+xml" />
	<link>https://nothans.com</link>
	<description>Life, Comedy, Games, Tech, Marketing, and Community</description>
	<lastBuildDate>Sat, 08 Aug 2026 18:31:47 +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>Hans Scharler &#8211; 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>Use AI to Help You Create the Fantasy Football League Winning Team Name</title>
		<link>https://nothans.com/use-ai-to-help-you-create-the-fantasy-football-league-winning-team-name</link>
					<comments>https://nothans.com/use-ai-to-help-you-create-the-fantasy-football-league-winning-team-name#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Sat, 08 Aug 2026 18:27:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[fantasy football]]></category>
		<category><![CDATA[Prompt Engineering]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5565</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>Draft season is here again, and your team still needs a name that beats &#8220;Team Smith.&#8221; I first wrote on how to use <a href="https://nothans.com/use-chatgpt-to-generate-the-perfect-fantasy-football-team-name">ChatGPT for fantasy football team names</a> back in 2023, then enhanced it with a <a href="https://nothans.com/ai-fantasy-football-name-generator-tutorial-and-prompt-templates">custom GPT</a> in 2024. Since then the AI tools have gotten better and the method has gotten simpler, so this is the updated version for the 2026 season. The templates below still work in any of the major AI chatbots.</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="600" data-attachment-id="5571" data-permalink="https://nothans.com/use-ai-to-help-you-create-the-fantasy-football-league-winning-team-name/image-145" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?fit=2000%2C1600&amp;ssl=1" data-orig-size="2000,1600" data-comments-opened="0" data-image-title="Fantast football team name champion" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?fit=750%2C600&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=750%2C600&#038;ssl=1" alt="" class="wp-image-5571" style="width:538px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=1024%2C819&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=300%2C240&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=768%2C614&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=1536%2C1229&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=750%2C600&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=1320%2C1056&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?resize=80%2C64&amp;ssl=1 80w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image-1.png?w=2000&amp;ssl=1 2000w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
</div>

<h2 class="wp-block-heading" id="what-you-need">What you need</h2>


<p>Any of the big three AI chatbots, all of which have free tiers:</p>



<ul class="wp-block-list">
<li><a href="https://chatgpt.com">ChatGPT</a></li>



<li><a href="https://claude.ai">Claude</a></li>



<li><a href="https://gemini.google.com">Gemini</a></li>
</ul>



<p>They&#8217;re all good at this. Wordplay, puns, and pop-culture mashups are the kind of thing these models genuinely enjoy (if models can enjoy things).</p>



<p>The original version of this tutorial pointed to a custom GPT I built for exactly this job. You don&#8217;t need it anymore. You don&#8217;t need a name-generator website either. The base models got good enough that the wrapper became the long way around, and a plain chat with a decent prompt beats both.</p>


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


<p>The 2024 version had a warm-up step where you told the AI your objective and asked it to respond OKAY before sending the real prompt. You can skip that now; the models don&#8217;t need to be eased into anything anymore. Everything goes in one prompt, and the whole method is three steps:</p>



<ol class="wp-block-list">
<li>Open a new chat in ChatGPT, Claude, or Gemini.</li>



<li>Pick a prompt template below, replace the [BRACKETED] words, and send it.</li>



<li>When a direction makes you grin, ask for more: &#8220;give me 10 more like #3&#8221; works exactly like you&#8217;d hope.</li>
</ol>


<h2 class="wp-block-heading" id="the-20-prompt-templates">The 20 prompt templates</h2>


<ol class="wp-block-list">
<li>Generate 5 funny fantasy football team names based on [PLAYER NAME]&#8217;s name or playing style.</li>



<li>Create 5 clever fantasy football team names inspired by the [TEAM NAME] and their history or current roster.</li>



<li>Come up with 5 witty fantasy football team names centered around [POSITION] players.</li>



<li>Blend NFL references with [MOVIE/TV SHOW/BOOK] to create 5 unique fantasy football team names.</li>



<li>Generate 5 punny fantasy football team names using football terminology and common phrases.</li>



<li>Create 5 alliterative fantasy football team names starting with the letter [LETTER].</li>



<li>Combine [CITY/STATE] references with football terms to make 5 locally-themed fantasy team names.</li>



<li>Generate 5 playful trash-talking fantasy football team names that imply dominating the competition.</li>



<li>Create 5 fantasy football team names that blend [PROFESSION] terminology with football references.</li>



<li>Come up with 5 fantasy football team names that incorporate [HOLIDAY/SEASON] themes.</li>



<li>Generate 5 appetizing fantasy football team names that combine [FOOD] with player names or football terms.</li>



<li>Create 5 fantasy football team names that blend [MUSIC GENRE/ARTIST] references with NFL players or teams.</li>



<li>Combine names of [HISTORICAL ERA] figures with football terminology to create 5 unique team names.</li>



<li>Generate 5 epic fantasy football team names inspired by [MYTHOLOGY] and NFL players or terms.</li>



<li>Create 5 geeky fantasy football team names that combine [SCIENTIFIC FIELD/TECH COMPANY] with NFL references.</li>



<li>Come up with 5 colorful fantasy football team names incorporating [COLOR] and player names or football terms.</li>



<li>Generate 5 wild fantasy football team names that blend [ANIMAL SPECIES] characteristics with NFL players or terms.</li>



<li>Create 5 electrifying fantasy football team names inspired by [WEATHER EVENT] and football references.</li>



<li>Blend elements from [FICTIONAL WORLD/UNIVERSE] with NFL references to create 5 fantastical fantasy football team names.</li>



<li>Generate 5 multi-sport fantasy football team names that combine NFL references with terms from [OTHER SPORT].</li>
</ol>


<h2 class="wp-block-heading" id="an-example">An example</h2>


<p>My go-to demo is template #4: &#8220;Blend NFL references with Deadpool to create 5 unique fantasy football team names.&#8221; The best result it ever gave me is still&nbsp;<strong>Mercs with a Mouthguard</strong>, riffing on Deadpool being the Merc with a Mouth in the comics. That one made the jump to a real league.</p>


<h2 class="wp-block-heading" id="the-new-trick-make-it-about-your-league">The new trick: make it about your league</h2>


<p>This is the part that didn&#8217;t exist in the original tutorial. A name-generator website hands everyone the same list. The AI can work with your league specifically. Paste in your context along with the template:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Here are the other team names in my league: [PASTE THE LIST]. I finished [YOUR FINISH] last season, and I just drafted [YOUR KEY PLAYERS]. Generate 5 fantasy football team names that fit this league and gently roast my rivals.</p>
</blockquote>



<p>Names that reference your buddy&#8217;s decade-long championship drought hit different than anything a template can produce. This also works for the sadder traditions: ask for last-place punishment team names and it delivers those too.</p>


<h2 class="wp-block-heading" id="bonus-generate-a-logo">Bonus: generate a logo</h2>


<p>In 2024 this step required a separate image tool. Now ChatGPT and Gemini generate images right in the chat, so once you&#8217;ve picked your name, keep going:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Create a fantasy football team logo for &#8220;[YOUR TEAM NAME]&#8221;: bold, cartoon mascot style, sized for a league avatar.</p>
</blockquote>



<p>Ask for two or three style variations and pick the one that looks best at thumbnail size, because that&#8217;s the only size your league will ever see it.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" decoding="async" width="750" height="750" data-attachment-id="5570" data-permalink="https://nothans.com/use-ai-to-help-you-create-the-fantasy-football-league-winning-team-name/image-144" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?fit=2048%2C2048&amp;ssl=1" data-orig-size="2048,2048" 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/08/image.png?fit=750%2C750&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=750%2C750&#038;ssl=1" alt="" class="wp-image-5570" style="width:528px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=1536%2C1536&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=530%2C530&amp;ssl=1 530w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=750%2C750&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=500%2C500&amp;ssl=1 500w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?resize=1320%2C1320&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2026/08/image.png?w=2048&amp;ssl=1 2048w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Kittle Shop of Horrors</figcaption></figure>
</div>


<p>The name is the only part of your season you have full control over&#8230;</p>


<h2 class="wp-block-heading" id="appendix-100-names-that-survived-the-cull">Appendix: 100 names that survived the cull</h2>


<p>One more thing, since the whole post is about the method: I ran it on itself. A few hundred generated names across ten different template directions, then a hard cull of anything that sounded like it shipped with a default league. These 100 survived, each with the recipe behind it so you can find your player or your favorite reference. Steal freely; your league never has to know.</p>


<h3 class="wp-block-heading" id="quarterback-puns">Quarterback puns</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>1</td><td>Stroud Nine</td><td>C.J. Stroud + cloud nine</td></tr><tr><td>2</td><td>The Lamartian</td><td>Lamar Jackson + The Martian</td></tr><tr><td>3</td><td>Allentown Abbey</td><td>Josh Allen + Downton Abbey, with a nod to Billy Joel&#8217;s &#8220;Allentown&#8221;</td></tr><tr><td>4</td><td>Jayden and the Argonauts</td><td>Jayden Daniels + Jason and the Argonauts</td></tr><tr><td>5</td><td>Love in the Time of Blitzes</td><td>Jordan Love + Love in the Time of Cholera</td></tr><tr><td>6</td><td>Maye December</td><td>Drake Maye + a May-December romance</td></tr><tr><td>7</td><td>Purdy Little Liars</td><td>Brock Purdy + Pretty Little Liars</td></tr><tr><td>8</td><td>The Burrow Identity</td><td>Joe Burrow + The Bourne Identity</td></tr><tr><td>9</td><td>Taking the Season Goff</td><td>Jared Goff + taking the season off</td></tr><tr><td>10</td><td>Herbie Fully Loaded</td><td>Justin Herbert + Herbie: Fully Loaded</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="running-back-puns">Running back puns</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>11</td><td>Gibbs Free Energy</td><td>Jahmyr Gibbs + Gibbs free energy, the thermodynamics term</td></tr><tr><td>12</td><td>Saquontum of Solace</td><td>Saquon Barkley + Quantum of Solace, the James Bond movie</td></tr><tr><td>13</td><td>Grand Theft Achane</td><td>De&#8217;Von Achane + Grand Theft Auto</td></tr><tr><td>14</td><td>Jeanty in a Bottle</td><td>Ashton Jeanty + Christina Aguilera&#8217;s &#8220;Genie in a Bottle&#8221;</td></tr><tr><td>15</td><td>Derrick and the Dominos</td><td>Derrick Henry + Derek and the Dominos, Eric Clapton&#8217;s band</td></tr><tr><td>16</td><td>Breece Witherspoon</td><td>Breece Hall + Reese Witherspoon</td></tr><tr><td>17</td><td>Bucky Irving Berlin</td><td>Bucky Irving + the songwriter Irving Berlin</td></tr><tr><td>18</td><td>Too Many Cooks</td><td>James Cook + the Adult Swim sketch</td></tr><tr><td>19</td><td>Pacheco de Mayo</td><td>Isiah Pacheco + Cinco de Mayo</td></tr><tr><td>20</td><td>The Jonathan Taylor Thomases</td><td>Jonathan Taylor + Jonathan Taylor Thomas of Home Improvement</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="pass-catcher-puns">Pass catcher puns</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>21</td><td>Chase Sapphire Preferred</td><td>Ja&#8217;Marr Chase + the Chase credit card</td></tr><tr><td>22</td><td>CeeDee-ROM</td><td>CeeDee Lamb + CD-ROM</td></tr><tr><td>23</td><td>Amon-Ra Ra Rasputin</td><td>Amon-Ra St. Brown + Boney M.&#8217;s &#8220;Rasputin&#8221;</td></tr><tr><td>24</td><td>Puka Face</td><td>Puka Nacua + Lady Gaga&#8217;s &#8220;Poker Face&#8221;</td></tr><tr><td>25</td><td>Rome-ing Charges</td><td>Rome Odunze + roaming charges</td></tr><tr><td>26</td><td>Nabers Say Never</td><td>Malik Nabers + never say never</td></tr><tr><td>27</td><td>Zay Flowers for Algernon</td><td>Zay Flowers + the novel Flowers for Algernon</td></tr><tr><td>28</td><td>The Marvin Harrison Jr. Mints</td><td>Marvin Harrison Jr. + Junior Mints</td></tr><tr><td>29</td><td>McBride of Frankenstein</td><td>Trey McBride + Bride of Frankenstein</td></tr><tr><td>30</td><td>Kittle Shop of Horrors</td><td>George Kittle + Little Shop of Horrors</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="movie-and-tv-mashups">Movie and TV mashups</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>31</td><td>My Outie Drafted This Team</td><td>Severance</td></tr><tr><td>32</td><td>Only Murders in the End Zone</td><td>Only Murders in the Building</td></tr><tr><td>33</td><td>Dead Roster Reckoning</td><td>Mission: Impossible &#8211; Dead Reckoning</td></tr><tr><td>34</td><td>Everything Everywhere All at 1PM</td><td>Everything Everywhere All at Once + the Sunday 1PM kickoff window</td></tr><tr><td>35</td><td>Lisan al-Gridiron</td><td>Dune&#8217;s Lisan al-Gaib</td></tr><tr><td>36</td><td>The Bear (Not the Team)</td><td>The Bear + the Chicago Bears</td></tr><tr><td>37</td><td>Baba Yaga&#8217;s Bench</td><td>John Wick</td></tr><tr><td>38</td><td>White Lotus Waiver Pool</td><td>The White Lotus</td></tr><tr><td>39</td><td>One Way Out (of Last Place)</td><td>Andor</td></tr><tr><td>40</td><td>Boar on the Floor</td><td>Succession</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="music-mashups">Music mashups</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>41</td><td>Fleetwood Sack</td><td>Fleetwood Mac + the quarterback sack</td></tr><tr><td>42</td><td>Protect Ya Blindside</td><td>Wu-Tang Clan&#8217;s &#8220;Protect Ya Neck&#8221; + the blind side</td></tr><tr><td>43</td><td>They Not Like Us (0-5)</td><td>Kendrick Lamar&#8217;s &#8220;Not Like Us&#8221; + an honest record</td></tr><tr><td>44</td><td>Pink Pony Punt Club</td><td>Chappell Roan&#8217;s &#8220;Pink Pony Club&#8221;</td></tr><tr><td>45</td><td>Drake London Calling</td><td>Drake London + The Clash&#8217;s &#8220;London Calling&#8221;</td></tr><tr><td>46</td><td>Mo Yards Mo Problems</td><td>The Notorious B.I.G.&#8217;s &#8220;Mo Money Mo Problems&#8221;</td></tr><tr><td>47</td><td>Certified Bye-Week Boy</td><td>Drake&#8217;s Certified Lover Boy</td></tr><tr><td>48</td><td>Heartbreak Hotel: Week 17</td><td>Elvis + fantasy championship week</td></tr><tr><td>49</td><td>Bijan and the Jets</td><td>Bijan Robinson + Elton John&#8217;s &#8220;Bennie and the Jets&#8221;</td></tr><tr><td>50</td><td>Total Eclipse of the Depth Chart</td><td>Bonnie Tyler&#8217;s &#8220;Total Eclipse of the Heart&#8221;</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="science-and-tech">Science and tech</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>51</td><td>Schrödinger&#8217;s Kicker</td><td>Schrödinger&#8217;s cat; he&#8217;s good and bad until you check the box score</td></tr><tr><td>52</td><td>The Higgins Boson</td><td>Tee Higgins + the Higgs boson</td></tr><tr><td>53</td><td>A.J. Brownian Motion</td><td>A.J. Brown + Brownian motion</td></tr><tr><td>54</td><td>Regression to the Meanest</td><td>regression to the mean, the stats concept</td></tr><tr><td>55</td><td>DROP TABLE Opponents;</td><td>the SQL injection joke, via xkcd&#8217;s Little Bobby Tables</td></tr><tr><td>56</td><td>sudo Win Championship</td><td>the Linux sudo command</td></tr><tr><td>57</td><td>404: Running Game Not Found</td><td>the HTTP 404 error</td></tr><tr><td>58</td><td>Monte Carlo Mock Draft</td><td>Monte Carlo simulations</td></tr><tr><td>59</td><td>Small Sample Size Kings</td><td>the analyst&#8217;s favorite caveat</td></tr><tr><td>60</td><td>Left on Read Option</td><td>left on read + the read option</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="aiera-names">AI-era names</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>61</td><td>Vibe Drafted</td><td>vibe coding, but for your roster</td></tr><tr><td>62</td><td>Context Window Shoppers</td><td>an LLM&#8217;s context window + window shopping</td></tr><tr><td>63</td><td>Token Limit Exceeded</td><td>what the chatbot says when you paste your whole league history</td></tr><tr><td>64</td><td>Trust Me, I&#8217;m an LLM</td><td>large language model confidence</td></tr><tr><td>65</td><td>The Hallucinated Rankings</td><td>AI hallucinations</td></tr><tr><td>66</td><td>Fine-Tuned Machine</td><td>model fine-tuning + a finely tuned machine</td></tr><tr><td>67</td><td>Prompt and Circumstance</td><td>&#8220;Pomp and Circumstance,&#8221; the graduation march</td></tr><tr><td>68</td><td>My Chatbot Picked This Name</td><td>full transparency</td></tr><tr><td>69</td><td>The Overfitters</td><td>overfitting, machine learning&#8217;s classic mistake</td></tr><tr><td>70</td><td>Deep Learning, Shallow Bench</td><td>deep learning + a thin roster</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="myth-history-and-literature">Myth, history, and literature</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>71</td><td>Sisyphus: This Is My Year</td><td>the boulder, the hill, your annual optimism</td></tr><tr><td>72</td><td>Achilles&#8217; Hamstring</td><td>Achilles&#8217; heel, relocated to where football careers actually end</td></tr><tr><td>73</td><td>Et Tu, Kicker?</td><td>Julius Caesar&#8217;s &#8220;Et tu, Brute?&#8221; + the kicker who loses your week</td></tr><tr><td>74</td><td>The Byzantine Umpires</td><td>the Byzantine Empire + the umpire, a real football official</td></tr><tr><td>75</td><td>DeVonta&#8217;s Inferno</td><td>DeVonta Smith + Dante&#8217;s Inferno</td></tr><tr><td>76</td><td>Icarus on the Waiver Wire</td><td>Icarus, flying too close to a hot pickup</td></tr><tr><td>77</td><td>The Oracle Said Start Him</td><td>the Oracle of Delphi + start/sit advice</td></tr><tr><td>78</td><td>Loki&#8217;s Practice Squad</td><td>Norse mythology&#8217;s trickster</td></tr><tr><td>79</td><td>Caesar&#8217;s Salary Cap</td><td>Julius Caesar + Caesar salad + the cap</td></tr><tr><td>80</td><td>The Canterbury Tailgates</td><td>The Canterbury Tales</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="group-chat-trash-talk">Group chat trash talk</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>81</td><td>12 Men in the Group Chat</td><td>the 12-men-on-the-field penalty + your league&#8217;s group chat</td></tr><tr><td>82</td><td>Per My Last Email, I Won</td><td>corporate passive aggression</td></tr><tr><td>83</td><td>My Bench Outscored You</td><td>the deepest cut in fantasy</td></tr><tr><td>84</td><td>Championship Window Shoppers</td><td>a closing championship window + window shopping</td></tr><tr><td>85</td><td>The Autodraft Andys</td><td>missing your own draft</td></tr><tr><td>86</td><td>Emotional Support Kicker</td><td>emotional support animals</td></tr><tr><td>87</td><td>Bye Week Felicia</td><td>&#8220;Bye, Felicia&#8221; from Friday</td></tr><tr><td>88</td><td>The Airing of Grievances</td><td>Festivus, from Seinfeld</td></tr><tr><td>89</td><td>Projected to Lose by 2</td><td>the projection that haunts every Monday night</td></tr><tr><td>90</td><td>Commissioner&#8217;s Least Favorite</td><td>a badge of honor</td></tr></tbody></table></figure>


<h3 class="wp-block-heading" id="deep-cuts-and-current-events">Deep cuts and current events</h3>


<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>#</th><th>Team name</th><th>How it came to be</th></tr></thead><tbody><tr><td>91</td><td>Tush Push Truthers</td><td>the Eagles&#8217; tush push and the annual ban debate</td></tr><tr><td>92</td><td>Buffering Since Kickoff</td><td>streaming-era NFL, Netflix Christmas games included</td></tr><tr><td>93</td><td>Training for the 2028 Olympics</td><td>flag football debuts at the LA 2028 Games</td></tr><tr><td>94</td><td>The Platypus Package</td><td>if the Wildcat formation exists, why not</td></tr><tr><td>95</td><td>Cheetahs Never Prosper</td><td>cheaters never prosper + Tyreek Hill&#8217;s cheetah persona</td></tr><tr><td>96</td><td>The Snow Game Romantics</td><td>people who think every December game should look like a snow globe</td></tr><tr><td>97</td><td>Travis Hunter Gatherers</td><td>Travis Hunter, who plays both ways + hunter-gatherers</td></tr><tr><td>98</td><td>Zero RB Zealots</td><td>the Zero RB draft strategy</td></tr><tr><td>99</td><td>Full-Court Press Coverage</td><td>basketball&#8217;s full-court press + press coverage</td></tr><tr><td>100</td><td>Low &amp; Slow Offense</td><td>barbecue methodology applied to clock management</td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/use-ai-to-help-you-create-the-fantasy-football-league-winning-team-name/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5565</post-id>	</item>
		<item>
		<title>Live Preview of HTML Files in Visual Studio Code</title>
		<link>https://nothans.com/live-preview-of-html-files-in-visual-studio-code</link>
					<comments>https://nothans.com/live-preview-of-html-files-in-visual-studio-code#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 18:45:07 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Live Preview]]></category>
		<category><![CDATA[Visual Studio Code]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=5560</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>This post started as a <a href="https://nothans.com/til-how-to-use-live-server-in-visual-studio-code">TIL</a>: I was building a little arcade game called <a href="https://shoot.nothans.com/">Shoot</a>, opened the index.html and the Web Audio API refused to load a single sound because of CORS. (A shooter with no shooting sounds is mostly just pointing.) The fix was a local development server, and the tool I found was the Live Server extension for Visual Studio Code.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img data-recalc-dims="1" decoding="async" width="750" height="460" data-attachment-id="4817" data-permalink="https://nothans.com/til-how-to-use-live-server-in-visual-studio-code/image-47" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?fit=971%2C595&amp;ssl=1" data-orig-size="971,595" data-comments-opened="0" data-image-title="Live Preview extension for Visual Studio Code" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?fit=750%2C460&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?resize=750%2C460&#038;ssl=1" alt="" class="wp-image-4817" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?w=971&amp;ssl=1 971w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?resize=300%2C184&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?resize=768%2C471&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/10/image.png?resize=750%2C460&amp;ssl=1 750w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
</div>


<p>That problem I had hasn&#8217;t changed, but the best answer has. Live Server went years without maintenance, and in early 2026 a critical security vulnerability in its dev server was publicly disclosed before it finally got a patch. Meanwhile, Microsoft now ships a first-party extension that does the same job: <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server">Live Preview</a>. Same right-click workflow, actively maintained, and it&#8217;s what I use now.</p>


<h2 class="wp-block-heading" id="why-you-need-a-local-server-at-all">Why you need a local server at all</h2>


<p>Open an HTML file from disk and the browser loads it with a&nbsp;<code>file://</code>&nbsp;address. That works right up until your page tries to fetch a file, load a JavaScript module, or play audio. Then the browser blocks it, for security reasons. Your code isn&#8217;t broken; it just needs to be served over HTTP like a real website. A local development server does exactly that, on your own machine, at an address like&nbsp;<code>http://127.0.0.1:3000</code>.</p>


<h2 class="wp-block-heading" id="the-quick-answer-live-preview">The quick answer: Live Preview</h2>


<p><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server">Live Preview</a>&nbsp;is Microsoft&#8217;s extension for exactly this.</p>



<ol class="wp-block-list">
<li>Open the Extensions panel (<code>Ctrl+Shift+X</code>), search for <strong>Live Preview</strong> by Microsoft, and install it.</li>



<li>Open your HTML file.</li>



<li>Right-click in the editor and choose <strong>Show Preview</strong>.</li>
</ol>



<p>You get a live browser panel right inside VS Code, and it refreshes automatically as you type. When you want the full browser experience (developer tools, real window size), use&nbsp;<strong>Show Preview in External Browser</strong>&nbsp;instead, or just open the&nbsp;<code>http://127.0.0.1:3000</code>&nbsp;address it prints.</p>


<h2 class="wp-block-heading" id="what-happened-to-live-server">What happened to Live Server</h2>


<p>The original version of this post recommended the Live Server extension by Ritwick Dey, and 80 million installs say I wasn&#8217;t alone. It still works, and the workflow is nearly identical: right-click the file,&nbsp;<strong>Open with Live Server</strong>, or hit the&nbsp;<strong>Go Live</strong>&nbsp;button in the status bar.</p>



<p>But the extension went years without maintenance, and in February 2026 a critical vulnerability (CVE-2025-65717) was publicly disclosed: visit the wrong webpage while Live Server is running, and that page can quietly pull files off your machine through the extension&#8217;s local server. Source code, config files, <code>.env</code> secrets, whatever the server can reach. Security researchers had been trying to reach the maintainer since mid-2025; the patch (version 5.7.10) landed only after the story went public. If you have Live Server installed, make sure it&#8217;s updated to 5.7.10 or later. Better yet, switch.</p>


<h2 class="wp-block-heading" id="no-extension-at-all">No extension at all</h2>


<p>If you&#8217;d rather not install anything, you already have a server or two on your machine:</p>



<pre class="wp-block-code"><code># Node
npx serve

# Python
python -m http.server 8000</code></pre>



<p>Run either one in your project folder and open the address it prints. You lose the auto-refresh, but for a quick test it&#8217;s hard to beat.</p>


<h2 class="wp-block-heading" id="debugging">Debugging</h2>


<p>Once the page is served, the browser&#8217;s developer tools (<code>F12</code>&nbsp;or&nbsp;<code>Ctrl+Shift+I</code>) work exactly as you&#8217;d expect: console, breakpoints, network tab, the works.</p>



<p>The original post suggested installing the &#8220;Debugger for Chrome&#8221; extension to debug from inside VS Code. You don&#8217;t need it anymore; JavaScript debugging is built into VS Code now. Create a&nbsp;<code>launch.json</code>&nbsp;with a&nbsp;<code>chrome</code>&nbsp;or&nbsp;<code>msedge</code>&nbsp;configuration pointed at your local server URL, hit F5, and set breakpoints right in the editor.</p>


<h2 class="wp-block-heading" id="the-game-by-the-way">The game, by the way</h2>


<p>Shoot shipped with sound! Play it here: <a href="https://shoot.nothans.com/">https://shoot.nothans.com/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/live-preview-of-html-files-in-visual-studio-code/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5560</post-id>	</item>
		<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" loading="lazy" 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="auto, (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" loading="lazy" 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="auto, (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="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="auto, (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>
	</channel>
</rss>
