<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Ctrl + Alt + Vent]]></title><description><![CDATA[One tech dad's rant therapy, served weekly(ish) with caffeine and sarcasm.]]></description><link>https://brewgator.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png</url><title>Ctrl + Alt + Vent</title><link>https://brewgator.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 02 Sep 2026 19:37:55 GMT</lastBuildDate><atom:link href="/__u/brewgator.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[LT Carbonell]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[brewgator@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[brewgator@substack.com]]></itunes:email><itunes:name><![CDATA[LT Carbonell]]></itunes:name></itunes:owner><itunes:author><![CDATA[LT Carbonell]]></itunes:author><googleplay:owner><![CDATA[brewgator@substack.com]]></googleplay:owner><googleplay:email><![CDATA[brewgator@substack.com]]></googleplay:email><googleplay:author><![CDATA[LT Carbonell]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[2026 UF Football Preview, Part 1: The Vibe]]></title><description><![CDATA[Napier&#8217;s Dead, Long Live Sumrall]]></description><link>https://brewgator.substack.com/p/2026-uf-football-preview</link><guid isPermaLink="false">https://brewgator.substack.com/p/2026-uf-football-preview</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 28 Aug 2026 13:03:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Napier&#8217;s Dead, Long Live Sumrall</h2><p>We did it. Billy&#8217;s gone. 4-8, 2-6 in the SEC, and the promise I made last year to wear black until either a natty or a firing turned out to only need one of those things. Didn&#8217;t need Vegas, didn&#8217;t need a miracle. Just needed one more bad year and an athletic director with a spine.</p><p>This is the first real coaching change of the Ctrl+Alt+Vent era, which feels like it should mean more than it does. I&#8217;ve been doing this preview thing for what, two years now, and both of them were basically &#8220;please, Billy, figure it out.&#8221; Now I get to do the fun version. New guy, clean slate, no more pretending a 6-6 season with a decent bowl game is actually progress.</p><h2>Who Is This Guy</h2><p>Jon Sumrall. 43-12 combined at Troy and Tulane. Three conference titles. Got Tulane into the CFP last year. On paper this is about as good as a Group of Five hire gets, and I don&#8217;t say that as a backhanded compliment the way people usually mean it when a school &#8220;settles&#8221; for a G5 guy.</p><p>Here&#8217;s the thing that actually matters to me: Napier&#8217;s whole pitch was &#8220;trust the process,&#8221; which is a phrase that should be legally banned from college football after about year three of not working. Sumrall&#8217;s pitch is simpler. He wins wherever he goes. That&#8217;s it. No vision boards, no five-year plan, just a guy who&#8217;s taken over two different programs and immediately made them better. I don&#8217;t need him to reinvent Florida football. I need him to be the kind of coach who&#8217;s already proven he can do the boring stuff well, and let the talent and resources here do the rest.</p><h2>The QB Battle Wasn&#8217;t Much of a Battle</h2><p>Aaron Philo is the Week 1 starter over Tramell Jones Jr., and honestly, I called this one. Philo&#8217;s Buster Faulkner&#8217;s guy from Georgia Tech, and Florida specifically brought Faulkner in as OC knowing Philo would follow. That&#8217;s not a coincidence, that&#8217;s the plan working exactly as designed. Familiarity with the system wins these things nine times out of ten, especially in year one when nobody wants to spend the first month of the season also relearning the playbook.</p><p>What I actually want to watch, though, is snap counts in the first two games. If Jones is getting real run, not garbage time, but real run against FAU and Campbell, that tells me this competition isn&#8217;t as settled as the depth chart says it is. Something closer to a 60/40 split and Sumrall&#8217;s basically telling us he&#8217;s still deciding. A clean Philo takeover and it&#8217;s exactly what it looks like on paper.</p><h2>The Good News</h2><p>Jadan Baugh is legitimately one of the best backs in the SEC, and maybe even the country. 1,100-plus yards last year on a team that couldn&#8217;t do much else offensively, which tells you everything about how much of that offense ran through him and how good he actually is. Dallas Wilson and Vernell Brown III give this receiver room some juice if the injuries cooperate, which is doing a lot of lifting in that sentence, but it&#8217;s more than we had last year.</p><p>And defensively there&#8217;s actual continuity for once. Bryce Thornton at safety and Cormani McClain at corner both stuck around, which after the portal era Florida&#8217;s had, feels almost quaint. Having returning starters in the secondary is not something I expected to be excited about, but here we are.</p><h2>The Bad News</h2><p>No proven pass rush. 3.5 sacks led the team last year, which is not a typo, that&#8217;s just how bad it was. The secondary lost real starters to the portal even with Thornton and McClain sticking around. And the offensive line took a real hit losing Jake Slaughter at center, which isn&#8217;t the kind of thing you just paper over with a good tackle transfer. Centers make an offensive line work as a unit, and replacing one mid-rebuild is not nothing.</p><p>The one thing giving me some hope up front is Phil Trautwein running that room. Former Gator tackle, two BCS titles as a player, back in Gainesville coaching the position he used to play. He&#8217;s on record saying he doesn&#8217;t know his starting five yet, &#8220;just because you started last year doesn&#8217;t mean you start this year,&#8221; which is either exactly the open competition this group needs or a sign nobody&#8217;s separated themselves. I&#8217;m choosing to read it as the former. If anyone can find a functional line in that room, I like the odds of it being the guy who actually played the position at a high level here.</p><p>So the formula here is pretty clear. If the defensive front can generate any pressure at all and the O-line holds together around a new center, this team is dangerous. If either of those things goes sideways, we&#8217;re looking at a long year no matter how good Baugh is. Not just my read either, those are the same two things the preview podcast circuit keeps flagging, so at least I know I&#8217;m not just being a pessimist for the sake of it.</p><h2>The Actual Questions I Have</h2><p>This is really what Part 1 is about, more than any single stat or roster note. Does Sumrall&#8217;s culture reset actually show up on the field this year, or is Year One just about not being an embarrassment while the real payoff comes in year two or three? I don&#8217;t think anyone honestly knows yet, including probably Sumrall himself.</p><p>And is this a &#8220;reset the vibes&#8221; year, where we&#8217;re just happy to have a coach who seems competent and isn&#8217;t dodging questions about his job security in August, or is this an actual &#8220;we should be winning these games&#8221; year? Those are two very different ways to watch a season, and I think most Gator fans haven&#8217;t fully decided which one they&#8217;re doing yet. I know I haven&#8217;t.</p><p>Honest temperature check: fan mood feels better than it has in years, but it&#8217;s the specific kind of better that comes from lowered expectations, not raised ones. Nobody&#8217;s talking playoff. Everyone&#8217;s just relieved the vibes aren&#8217;t actively bad anymore. That&#8217;s a real improvement. It&#8217;s just worth being honest that &#8220;not actively bad&#8221; and &#8220;good&#8221; are not the same thing.</p><h2>So What Do I Actually Think Happens</h2><p>Outside consensus has this team at 7-5, but I like the floor/ceiling framing I keep hearing on the preview podcast circuit better than picking one clean number. Floor&#8217;s 2-10, if the only games we can actually pencil in as wins are FAU and Campbell and everything else breaks wrong. Ceiling&#8217;s 8-4. Realistic expectation is somewhere around 7-8 wins, and I&#8217;ll take that, with the same disclaimer I gave last year: I can confidently say 8-4, or 7-5, or, whispering now, 2-10 if the O-line completely falls apart and the pass rush stays nonexistent. Probably somewhere in the middle, closer to the optimistic end, because I think Sumrall&#8217;s floor is higher than Napier&#8217;s ever was even in a rebuild year.</p><p>Part 2 gets into the schedule itself, week by week, including a rivalry game that&#8217;s leaving Jacksonville for the first time since 1995, which deserves its own several paragraphs of complaining.</p>]]></content:encoded></item><item><title><![CDATA[How to Spend 20 Hours Preparing for a 2-Hour Hobby]]></title><description><![CDATA[Results may vary]]></description><link>https://brewgator.substack.com/p/how-to-spend-20-hours-preparing-for</link><guid isPermaLink="false">https://brewgator.substack.com/p/how-to-spend-20-hours-preparing-for</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 17 Jul 2026 13:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-kOw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd85649d9-547f-478a-92dd-f250d4a87177_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d85649d9-547f-478a-92dd-f250d4a87177_1536x1024.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d85649d9-547f-478a-92dd-f250d4a87177_1536x1024.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>I&#8217;ve started noticing a pattern about myself.</p><p>Whenever I pick up a new hobby, I tell myself I&#8217;m just going to keep it simple.</p><p>&#8220;I&#8217;m going to train for a marathon.&#8221;</p><p>&#8220;I&#8217;m going to learn more about Bitcoin.&#8221;</p><p>&#8220;I want to smoke a really good brisket.&#8221;</p><p>Normal enough.</p><p>But somewhere between deciding I want to do something and actually doing it, my brain takes a detour.</p><p>I start reading.</p><p>Then I read some more.</p><p>Then I find a Reddit thread from 2018 where two people are arguing about something so ridiculously specific that I didn&#8217;t even realize it <em>could</em> be debated. Naturally, I have to figure out who&#8217;s right.</p><p>One article turns into YouTube videos. Those turn into podcasts. Then books. Then blog posts from people who have dedicated an alarming percentage of their lives to whatever niche thing I became interested in three days ago.</p><p>Eventually I look up and realize I&#8217;ve spent ten hours learning how to do the hobby and maybe two hours actually doing it.</p><p>Running was probably the first time I really noticed it.</p><p>I thought marathon training meant... well... running.</p><p>Instead I learned about heart rate zones, cadence, fueling, VO&#8322; max, recovery, hydration, shoes, socks, stretching, strength training, sleep quality. Every answer seemed to come with three more things I &#8220;needed&#8221; to understand first.</p><p>Then, because apparently I can&#8217;t leave well enough alone, everything got connected together. Runna feeds Strava. Strava feeds Apple Health. My watch knows how well I slept, how hard I trained, whether I should recover, and probably what mood I&#8217;m in before I do.</p><p>The funny part is none of that actually makes you a runner.</p><p>You still have to go outside.</p><p>Bitcoin went exactly the same way.</p><p>I bought a little because it seemed interesting.</p><p>That somehow turned into learning how mining works, why proof of work matters, what private keys actually are, why people care about running their own node, and eventually... running my own node.</p><p>If you&#8217;ve never done that, just know there&#8217;s something objectively funny about spending an entire Saturday making sure software whose primary job is to quietly exist... is quietly existing.</p><p>For a while I thought this was just an engineer thing.</p><p>And maybe it is. We like systems. We like understanding how things work. If something feels random, our first instinct is to find the underlying rules.</p><p>But I don&#8217;t think that&#8217;s the whole story.</p><p>I think I genuinely enjoy learning.</p><p>Not learning in the &#8220;I want another degree&#8221; sense.</p><p>More like pulling on a thread because I want to see where it goes.</p><p>I like getting to the point where I stop memorizing facts and start understanding why things work the way they do.</p><p>That&#8217;s true whether it&#8217;s Bitcoin, marathon training, barbecue, sports betting, or trying to figure out why one soccer team keeps outperforming its expected goals. Once I feel like I can see the system underneath everything, that&#8217;s the part I really enjoy.</p><p>The downside is there&#8217;s no finish line.</p><p>Every hobby has another article to read.</p><p>Another expert to listen to.</p><p>Another piece of gear someone swears changed everything.</p><p>Another rabbit hole.</p><p>If you&#8217;re not careful, the preparation quietly becomes the hobby.</p><p>I&#8217;ve caught myself researching the perfect long run instead of just going for one. Reading reviews instead of buying the thing. Watching videos instead of trying it myself.</p><p>It&#8217;s kind of like sports betting.</p><p>At some point, more information stops making your prediction meaningfully better. You&#8217;re just finding new ways to feel more confident about the same uncertainty.</p><p>Learning can work the same way.</p><p>At some point, you&#8217;re not learning because it&#8217;s useful anymore.</p><p>You&#8217;re learning because learning itself has become the hobby.</p><p>I&#8217;m not even sure that&#8217;s a bad thing.</p><p>I just have to remind myself every once in a while to close the laptop and actually go do the thing.</p><p>Otherwise I&#8217;ll eventually become the world&#8217;s leading expert on hobbies I&#8217;ve barely started.</p>]]></content:encoded></item><item><title><![CDATA[Reading Hogwarts Again]]></title><description><![CDATA[Last week, while packing for our family trip to Mexico, my daughter made sure to put Harry Potter and the Chamber of Secrets in her suitcase.]]></description><link>https://brewgator.substack.com/p/reading-hogwarts-again</link><guid isPermaLink="false">https://brewgator.substack.com/p/reading-hogwarts-again</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Wed, 24 Jun 2026 13:03:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eGwJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eGwJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 424w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 848w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eGwJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2611563,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://brewgator.substack.com/i/203290187?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 424w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 848w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eGwJ!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccf031e-4444-4ac4-9592-3340e889f0e3_1254x1254.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Last week, while packing for our family trip to Mexico, my daughter made sure to put <em>Harry Potter and the Chamber of Secrets</em> in her suitcase.</p><p>Not a swimsuit.</p><p>Not a stuffed animal.</p><p>Not one of the seventeen random items children somehow deem essential for international travel.</p><p>A 352-page novel.</p><p>Her reasoning was simple: she was pretty sure she&#8217;d finish <em>Sorcerer&#8217;s Stone</em> while we were gone and wanted to make sure she had the next book ready.</p><p>Thankfully, she did.</p><p>Otherwise I probably would have spent half the vacation listening to complaints about not having the sequel.</p><p>The funny part is that this level of planning required a second trip to a different library before we even left. Our local library didn&#8217;t have a copy available, and apparently &#8220;waiting&#8221; was not an acceptable solution.</p><p>This wasn&#8217;t a casual reader preparing for vacation.</p><p>This was an addict making sure her supply chain remained uninterrupted.</p><p>The whole thing started a few weeks earlier when I took her to the library because I wanted her to read something more challenging.</p><p>At eight years old, she had been tearing through <em>Magic Tree House</em> books at an alarming rate. I don&#8217;t mean she was reading them quickly. I mean she was consuming them. We&#8217;d check out a stack and a day later she&#8217;d be asking when we were going back for more.</p><p>As a parent, this is the kind of problem you&#8217;re thrilled to have.</p><p>Still, it felt like she was ready for something bigger.</p><p>So I casually suggested she look at some different options.</p><p>Very casually.</p><p>The kind of casual that only parents think is casual.</p><p>&#8220;Well,&#8221; I said, &#8220;there&#8217;s Harry Potter. Or Percy Jackson. Or...&#8221;</p><p>I don&#8217;t remember what came after that because she had already locked onto Harry Potter.</p><p>To be fair, she saw right through my little performance. She knew exactly what I was doing.</p><p>Children are much better at detecting parental agendas than we give them credit for.</p><p>The funny thing is that she&#8217;d already seen all the Harry Potter movies. Multiple times. I figured that might reduce some of the magic. She already knew the story. She already knew who the characters were. She already knew where everything was headed.</p><p>I was wrong.</p><p>Very wrong.</p><p>Within days she had become completely obsessed.</p><p>She carries the book everywhere.</p><p>At one point she brought along a Harry Potter spell book because she wanted to cross-reference spells mentioned in the novel and learn more about them.</p><p>Again, this is not normal behavior.</p><p>This is what happens when a child discovers a new special interest and decides to make it everyone else&#8217;s business.</p><p>The part I&#8217;ve enjoyed most is listening to her compare the books to the movies.</p><p>Every few pages she&#8217;ll excitedly point out a scene that wasn&#8217;t included or a detail that was changed.</p><p>It&#8217;s like listening to a tiny literary critic.</p><p>&#8220;Dad, they left this part out.&#8221;</p><p>&#8220;Dad, this makes way more sense in the book.&#8221;</p><p>&#8220;Dad, that&#8217;s not what happened.&#8221;</p><p>She&#8217;s not wrong, either.</p><p>Which brings me to another unexpected discovery.</p><p>In an effort to keep up with her, I started listening to the new Harry Potter audiobooks.</p><p>The ones with the full cast.</p><p>As an aside, they&#8217;re really good.</p><p>I wanted to be able to talk to her about the books while she was reading them. What I didn&#8217;t expect was realizing how much I had forgotten.</p><p>Entire scenes.</p><p>Entire chapters.</p><p>Entire plot points.</p><p>In fact, I eventually realized something even stranger.</p><p>I don&#8217;t think I ever actually read <em>Sorcerer&#8217;s Stone</em>.</p><p>At least not when it first came out.</p><p>I think I saw the movie and then started with <em>Chamber of Secrets</em>.</p><p>Which means that while my daughter was experiencing the first book for the first time, parts of it were effectively new to me too.</p><p>That felt oddly fitting.</p><p>Harry Potter was one of the defining stories of my childhood.</p><p>I remember waiting for the midnight releases.</p><p>I remember racing through the later books.</p><p>I remember reading <em>Deathly Hallows</em> in what felt like a single weekend because there was absolutely no chance I was waiting to find out what happened.</p><p>More than that, I remember how universal it all felt.</p><p>Everybody read Harry Potter.</p><p>Everybody talked about Harry Potter.</p><p>Every new movie felt like an event.</p><p>The books weren&#8217;t just books. They were part of the culture.</p><p>You could walk into school on Monday and instantly have something to talk about.</p><p>For a lot of kids my age, Harry Potter wasn&#8217;t just a story. It was a shared experience.</p><p>Most childhood obsessions don&#8217;t survive long enough for you to revisit them with your own children.</p><p>Some disappear entirely.</p><p>Others get frozen in time.</p><p>Harry Potter is one of the few that managed to stick around.</p><p>Despite all the complicated conversations surrounding the author in recent years, the books themselves continue to find new readers.</p><p>And now, somehow, one of those readers is my daughter.</p><p>What&#8217;s funny is that the books aren&#8217;t really the thing I&#8217;ve been thinking about.</p><p>What I&#8217;ve actually been thinking about is how quickly kids grow up.</p><p>There wasn&#8217;t some dramatic moment where I suddenly realized she was old enough for Harry Potter.</p><p>If anything, I&#8217;m glad we waited.</p><p>Could she have read it a year ago?</p><p>Probably.</p><p>But now she wanted to read it.</p><p>That&#8217;s the difference.</p><p>You can&#8217;t manufacture curiosity.</p><p>You can&#8217;t force obsession.</p><p>You can hand your kid a book, but you can&#8217;t make them love it.</p><p>That part has to happen on its own.</p><p>Lately I&#8217;ve been having more and more moments like this.</p><p>She&#8217;s on a competitive dance team now, and every time I watch the older girls perform, they seem so grown up on stage.</p><p>Then you see them afterward.</p><p>They&#8217;re laughing.</p><p>Being goofy.</p><p>Talking about snacks.</p><p>They&#8217;re still kids.</p><p>The same thing is happening here.</p><p>My daughter is old enough to disappear into a three-hundred-page novel.</p><p>Old enough to make connections between books and movies.</p><p>Old enough to have strong opinions about adaptation choices.</p><p>And yet she&#8217;s still bringing a spell book to Mexico.</p><p>She&#8217;s still my baby girl.</p><p>That&#8217;s the weird thing about parenting.</p><p>The changes happen so gradually you barely notice them.</p><p>Then one day you&#8217;re standing in a library watching your kid walk toward a shelf that once defined your own childhood.</p><p>A few weeks later you&#8217;re both talking about Hogwarts over breakfast.</p><p>And suddenly two decades disappear.</p><p>When I handed her Harry Potter, I thought I was giving her a harder book.</p><p>What I was actually giving her was an invitation into a conversation that started long before she was born.</p><p>A conversation I once had with my friends.</p><p>A conversation that now belongs to us.</p><p>Books have a unique ability to do that.</p><p>They connect people who would otherwise be separated by years, decades, even generations.</p><p>The magic was never really Hogwarts.</p><p>The magic was always that shared stories allow us to experience a little piece of someone else&#8217;s world.</p><p>And every once in a while, if you&#8217;re lucky, they allow you to experience your own world all over again.</p>]]></content:encoded></item><item><title><![CDATA[Not Getting My Hopes Up. Just Noticing Things.]]></title><description><![CDATA[Not Getting My Hopes Up.]]></description><link>https://brewgator.substack.com/p/not-getting-my-hopes-up-just-noticing</link><guid isPermaLink="false">https://brewgator.substack.com/p/not-getting-my-hopes-up-just-noticing</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Mon, 11 May 2026 13:03:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Not Getting My Hopes Up. Just Noticing Things.</h1><p>I am a Florida Gators fan who watched his program go 4-8 last season. I watched four years of press conferences where the head coach spoke exclusively in process-language, the kind of coach-speak that sounds like something but contains nothing, where &#8220;building the right culture&#8221; and &#8220;trending in the right direction&#8221; became a kind of white noise you stopped hearing after year two. I watched a program that once had Spurrier, Meyer, and a murderers&#8217; row of NFL talent turn into a program where the main storyline by October was whether the coach would survive the week.</p><p>I am not getting my hopes up about Jon Sumrall.</p><p>I&#8217;m just noticing some things.</p><div><hr></div><h2>On recruiting</h2><p>I don&#8217;t put a lot of stock in recruiting rankings. Classes are ranked in May, games are played in September, and those two facts have a complicated relationship. So when I tell you that Florida&#8217;s 2027 recruiting class is currently ranked fifth in the nation, that&#8217;s just a number. It doesn&#8217;t mean anything yet.</p><p>It&#8217;s worth noting, in a completely neutral way, that at this point last year under Billy Napier, Florida had two recruits committed. Two. Sumrall has thirteen, landed three in a 24-hour window, and did all of this in five months. The class includes Maxwell Hiller, a five-star left tackle who is the highest-rated offensive line recruit Florida has signed since 2015. Not since Napier. Since 2015. That tells you more about the last decade than any record does.</p><p>If I were the kind of person who read into momentum, I might also mention that recruits keep committing before they even take official visits. Rivals analyst Sam Spiegelman called it a &#8220;recruiting heater&#8221; and said this is just the beginning, with official visit season in June and July still ahead. I noted that, filed it away, and moved on with my life.</p><div><hr></div><h2>On character</h2><p>I&#8217;ve been burned enough times to know that press conferences are theater. Coaches say things. The camera loves them. I&#8217;m not reading into any of it.</p><p>That said, a few things happened in Sumrall&#8217;s first 48 hours on the job that I am simply going to describe without editorializing.</p><p>Before he landed in Gainesville, he got on FaceTime with his Tulane commits and told them to honor their commitment to Tulane. He said he didn&#8217;t want to poach his own class. His first press conference was not about schemes or systems. He looked at the players already in the room &#8212; DJ Lagway, Dallas Wilson, Myles Graham &#8212; and told them directly: &#8220;Future Gators matter to me. Current Gators matter more.&#8221; He said he has a sign in his office that reads &#8220;Coach the team.&#8221; His recruiting pitch to top prospects is not a soft sell. It&#8217;s closer to a challenge: &#8220;If you like us now, you&#8217;re going to love us later. If you don&#8217;t like me now, go somewhere else, because I&#8217;m not changing.&#8221;</p><p>I&#8217;m not saying any of that means anything. I&#8217;m just describing what happened.</p><div><hr></div><h2>On keeping the Fab Five</h2><p>This one did not have to go well.</p><p>When a program goes 4-8 and the head coach gets fired, the portal opens and good players leave. That&#8217;s not a scandal, it&#8217;s just how college football works now. The question for any new coach is not whether they&#8217;ll lose anyone. It&#8217;s whether they can hold the guys who matter.</p><p>Sumrall held all five of them.</p><p>Jadan Baugh, who became the first Gator back to rush for 1,000 yards since 2015 and followed that up with a 266-yard demolition of Florida State, was the most coveted. Jayden Woods was in high demand across the portal. Vernell Brown III and Dallas Wilson, both true freshmen who showed genuine star-level flashes despite a brutal season, had every reason to test their options. Myles Graham, a Gainesville native and second-generation Gator, announced he was staying before the calendar even hit January.</p><p>All five came back. All five cited Sumrall directly as the reason.</p><p>Woods put it best: &#8220;I lost Coach Napier, Coach Roberts, and Coach Peterson, the three guys I mainly came here for. I just wanted to do my due diligence.&#8221; Then he met Sumrall, heard the plans, looked around at Graham, Baugh, Brown, and Wilson staying, and decided the foundation was worth building on. &#8220;People truly make the place,&#8221; he said.</p><p>If you want to understand the difference between how this transition has felt versus the Napier years, that quote is the shortest path there. Under Napier, players were leaving programs to come to Florida hoping the culture would catch up. Under Sumrall, players are staying at Florida because the culture is already visibly different.</p><p>I&#8217;m not making predictions. I&#8217;m describing what Woods said.</p><div><hr></div><h2>On accountability</h2><p>Billy Napier, in four years, never once said anything that made me think he was operating with genuine urgency. He always sounded like a man managing a timeline, executing a plan, running a process. When the losses piled up, the language got more careful, not less. The final press conferences of his tenure were exercises in institutional damage control.</p><p>Jon Sumrall was asked recently about bowl eligibility. His answer: &#8220;We better be, or I&#8217;m going to be up on the roof of the stadium getting ready to do something stupid.&#8221;</p><p>That&#8217;s a man who expects to win football games. That&#8217;s a man who understands that bowl eligibility is not an achievement at the University of Florida, it&#8217;s the floor. You can argue about coaching pedigree, about whether Tulane translates to the SEC, about what a 43-year-old who&#8217;s never coached at this level can do in Gainesville. Those are fair questions and I don&#8217;t have answers yet.</p><p>But I&#8217;m also noticing that the language coming out of that program right now sounds nothing like what I was used to hearing.</p><div><hr></div><p>I&#8217;ve been a Gators fan long enough to have been genuinely happy and genuinely devastated by this program. The Spurrier years made us believe this was normal. The Meyer years made us believe it could come back. The Mullen years made us believe, briefly, that close was good enough. The Napier years made me stop believing in the offseason entirely.</p><p>I&#8217;m not there yet with Sumrall. September hasn&#8217;t happened. The SEC doesn&#8217;t care about recruiting rankings or vibe shifts or five-star offensive tackles. The SEC cares about fourth-and-one in the fourth quarter, and we won&#8217;t know anything real until we&#8217;re in those moments.</p><p>But I&#8217;ll say this, quietly, with full awareness that I might regret it: for the first time in a while, I&#8217;m paying attention to Gators football in May. Not because I have to. Not out of some grim sense of fan loyalty. Because something is happening over there that feels like it might actually be real.</p><p>I&#8217;m not getting my hopes up.</p><p>I&#8217;m just noticing things.</p>]]></content:encoded></item><item><title><![CDATA[The Missing Ledger]]></title><description><![CDATA[why your Lightning node needs a general ledger (and why I built one)]]></description><link>https://brewgator.substack.com/p/the-missing-ledger</link><guid isPermaLink="false">https://brewgator.substack.com/p/the-missing-ledger</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Mon, 13 Apr 2026 13:03:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/200160ba-d486-4c1f-8145-100707e53a49_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s April. You&#8217;re filing your taxes. You exported a CSV from Strike, another from River, a third from your Coinbase account you barely touch. Your LND node has been quietly routing payments all year; forwarding HTLCs, earning a few sats per hop, rebalancing channels when liquidity drifted. Somewhere in all of that is the answer to a simple question: <em>how much Bitcoin did I actually acquire this year, and what did it cost me?</em></p><p>You don&#8217;t know. Not without a spreadsheet and a Saturday afternoon you don&#8217;t have.</p><p>I&#8217;ve been running a Lightning node on Umbrel for five years. I DCA through Strike and River. I hold a small position on Coinbase from before I went self-custody. My node routes payments and earns fees. Each of those pieces has its own interface, its own export format, its own version of the truth. None of them talk to each other. None of them give me the one number I actually want: my total Bitcoin position across everything, and what it cost me to build it.</p><p>So I built Satsbook; a general ledger for your Lightning node. It stitches together your node&#8217;s routing income, your exchange purchases, and your cost basis into one view, running entirely on your own hardware. I&#8217;m going to explain why this gap exists, why nobody has filled it, and what Satsbook does about it.</p><div><hr></div><h2>The three problems nobody&#8217;s solving</h2><h3>You can&#8217;t see your node&#8217;s ROI</h3><p>ThunderHub shows forwarding events. RTL shows channel balances. Neither shows <em>earnings over time</em>. There&#8217;s no YTD view. No way to ask &#8220;how much did this channel earn relative to the capital I locked in it?&#8221; No comparison between what I spent on rebalancing and what I earned in routing fees. The data is there, it&#8217;s in the LND database, but nothing surfaces it in a way that answers the question a normal person would ask: <em>is this node making money?</em></p><p>I found myself SSH&#8217;d into my Umbrel at 11pm, running SQL queries against the LND database to answer questions that should have been one click on a dashboard. That&#8217;s when I knew something was missing.</p><h3>Your tax records are siloed across five tools</h3><p>Strike has a CSV. River has a CSV. Coinbase has a statement. My LND node has on-chain transactions from channel opens and closes. I&#8217;ve got BTC that moved from an exchange into a Lightning channel that later got closed back on-chain, and none of these tools have any idea about the others.</p><p>The IRS treats every disposal of Bitcoin as a taxable event. That arguably includes every Lightning payment you make. If you can&#8217;t reconstruct the full history &#8212; what you bought, when you bought it, what you received as routing income, what you spent &#8212; you can&#8217;t file cleanly. You&#8217;re either overpaying, underpaying, or guessing. None of those options are good.</p><p>The cost basis problem is genuinely hard when your Bitcoin lives across five different systems and two different layers. It&#8217;s not that people are lazy about taxes. It&#8217;s that the infrastructure to do it correctly doesn&#8217;t exist for Lightning operators.</p><h3>The tools that do exist aren&#8217;t built for you</h3><p>I looked. Here&#8217;s what I found:</p><p><strong>Amboss</strong> is excellent if you&#8217;re a professional routing operator running Lightning as a business. If you&#8217;re a home-lab operator running Umbrel on a Pi, it&#8217;s overkill in some ways and doesn&#8217;t cover the accounting side at all.</p><p><strong>Koinly and CoinLedger</strong> handle crypto taxes, but they pretend Lightning doesn&#8217;t exist. No channel opens, no routing fees, no understanding of the HTLC lifecycle. They&#8217;re built for people trading on centralized exchanges, not people running infrastructure.</p><p><strong>Cryptio and TRES</strong> are enterprise tools with enterprise pricing. They&#8217;re for companies with compliance departments, not for someone running a node in their closet.</p><p><strong>ThunderHub and RTL</strong> are node management UIs. They&#8217;re indispensable for what they do &#8212; managing channels, monitoring liquidity, watching the mempool. But they&#8217;re not accounting tools. They don&#8217;t track cost basis. They don&#8217;t know about your exchange purchases. They show you what&#8217;s happening right now, not what happened over the last twelve months.</p><p>There&#8217;s a specific person who falls through all of these cracks. The sovereign operator running Umbrel at home. Real Bitcoin in channels. Real opinions about custody. A real need for clean financial records. And absolutely nothing that gives them a unified view of what their stack is doing.</p><p>That&#8217;s the whitespace. That&#8217;s who I built Satsbook for.</p><div><hr></div><h2>Why nobody built this</h2><p>The gap is structural, not accidental. Four reasons:</p><p><strong>The market is small and technical.</strong> There are maybe 20,000 people running Umbrel who care about routing fees and cost basis. You can&#8217;t raise a Series A for that. No VC is going to fund &#8220;a general ledger for home Lightning node operators.&#8221; The total addressable market makes investors&#8217; eyes glaze over. So nobody with funding attempts it.</p><p><strong>The integrations are unglamorous.</strong> LND&#8217;s gRPC API. Strike&#8217;s CSV format and its idiosyncrasies. River&#8217;s export layout. Coinbase&#8217;s transaction statements. Each one has its own edge cases, its own date formats, its own way of categorizing transactions. Stitching them together into a single coherent ledger is the kind of boring, detail-heavy work that nobody wants to do as a startup.</p><p><strong>The tax treatment is uncertain.</strong> How do you account for a Lightning channel open? A splice? A circular rebalance? The IRS hasn&#8217;t issued clear guidance on any of it. Big players stay away from uncertainty because they can&#8217;t afford to build something that might be wrong. A side project doesn&#8217;t have that constraint &#8212; I can build what I think is right and update it when guidance comes.</p><p><strong>The audience hates cloud tools.</strong> This is the catch-22. The people most likely to need this product are the most likely to refuse to upload their node data to a SaaS platform. Self-sovereign means self-sovereign. Which means the whole thing has to run locally, on their hardware, with no outbound connections they didn&#8217;t ask for. That&#8217;s harder to build and harder to monetize, which is why nobody attempts it.</p><p>These are exactly the reasons I was in a good position to build it. I&#8217;m in the audience. I already had LND integration experience from a prior side project. And I&#8217;m happy with a side-hustle-sized market that a VC would never touch.</p><div><hr></div><h2>What Satsbook actually looks like</h2><p>I&#8217;ll show you instead of telling you.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!I5o2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 424w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 848w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 1272w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!I5o2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png" width="1456" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55639,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://brewgator.substack.com/i/193826665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 424w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 848w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 1272w, /__u/substackcdn.com/image/fetch/$s_!I5o2!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f37f5c3-3f06-49a5-849f-3215195217fc_2368x440.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This is the screen that made me realize the project was worth finishing. One number: your total net BTC position across every source. Node earnings, Strike purchases, River DCA, Coinbase holdings; all rolled up into a single figure with the USD equivalent at current price. Below it, the breakdown showing where each piece came from.</p><p>Before Satsbook, if someone asked me &#8220;how much Bitcoin do you actually have?&#8221; I&#8217;d have to open four tabs and do arithmetic in my head. Now it&#8217;s one number on one page, and I trust it because I can see where each component came from.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!5F3F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 424w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 848w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!5F3F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png" width="1456" height="505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:505,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143462,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://brewgator.substack.com/i/193826665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 424w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 848w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5F3F!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e28bc-750a-4f9f-8229-c099b1cc628c_2374x824.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the strip I check every morning. Three numbers: what my node earned in routing fees this year, what I purchased through exchanges this year, and my net position change. One line that tells me whether my stack is growing and where the growth is coming from.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!T5aw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 424w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 848w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 1272w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!T5aw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png" width="1456" height="897" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:897,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:236557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://brewgator.substack.com/i/193826665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 424w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 848w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 1272w, /__u/substackcdn.com/image/fetch/$s_!T5aw!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fc98b0-a497-4df0-809c-7e247a8de400_2386x1470.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is for the routing nerds. Daily fee income charted over time, with a per-channel breakdown underneath. You can finally see which channels are earning their keep and which ones are just sitting there consuming capital.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Eztw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 424w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 848w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Eztw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png" width="1294" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1294,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134803,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://brewgator.substack.com/i/193826665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 424w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 848w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Eztw!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49bfb46c-30ee-4042-ae2e-1694783d956f_1294x1112.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the unlock. Three tabs &#8212; Strike, River, Coinbase. Drop a CSV, hit upload. Satsbook parses it, deduplicates by content hash so you can re-upload safely, and folds those transactions into your unified ledger. Each vendor has a danger zone at the bottom if you need to clear and re-import. The whole cycle takes about thirty seconds.</p><div><hr></div><h2>How it&#8217;s built</h2><p>For the readers who want to know what they&#8217;re running before they install it &#8212; and I respect that instinct completely.</p><p>Satsbook is a single Go binary. No CGO, no Python, no Node.js. It cross-compiles cleanly to <code>linux/arm64</code>, which means it runs natively on your Raspberry Pi without emulation. The binary is about 25 MB.</p><p>The database is SQLite, embedded via a pure-Go driver (<code>modernc.org/sqlite</code>). No separate database process. No Postgres. No Redis. Your data lives in a single file on your node.</p><p>The frontend is HTMX &#8212; server-rendered HTML with no JavaScript framework. Every request is visible in your browser&#8217;s network tab. There&#8217;s no client-side state, no build step, no npm. If you open the source, you can read every template.</p><p>All assets are embedded in the binary via Go&#8217;s <code>embed.FS</code>. There are no runtime file dependencies. The binary is the whole app.</p><p>Satsbook connects to your LND node using a <strong>read-only</strong> macaroon. It literally cannot sign transactions, send payments, or modify anything on your node. It reads forwarding history and channel balances. That&#8217;s it.</p><p>The only outbound connection is a single price lookup to CoinGecko for the current BTC/USD rate, used to display dollar equivalents on the dashboard. You can disable it.</p><p>Syncing is incremental. Satsbook maintains a cursor so it never re-fetches data it&#8217;s already stored. First sync pulls your full history; every sync after that picks up only new events.</p><p>If you want to audit it, it&#8217;s about 14,000 lines of Go. You can read the whole thing in an afternoon.</p><div><hr></div><h2>Free is real. Paid is coming.</h2><p>I want to be transparent about the business model, because I think the Bitcoin community deserves that.</p><p><strong>The free tier is the dashboard and exchange imports.</strong> Net BTC position, routing fee income, YTD summary, Strike/River/Coinbase CSV import, per-channel breakdown. Full stop. It&#8217;s not a trial. It&#8217;s not time-limited. It&#8217;s not a demo with the good features grayed out. It&#8217;s genuinely useful on its own, and it will stay free.</p><p><strong>Pro ($9/mo)</strong> is the tier you&#8217;d pay for at tax time. Full history export, FIFO and LIFO cost basis calculations, Form 8949 output. If you&#8217;ve ever spent a Saturday afternoon in a spreadsheet trying to reconstruct your cost basis, this is the thing that makes that Saturday go away.</p><p><strong>Power ($19/mo)</strong> is for the operators who want more. Monarch and YNAB sync, Telegram alerts, multi-node support. These features are under development.</p><p>Here&#8217;s the quiet part out loud: the free tier is the acquisition funnel. The paid tier is the sustainability model. I&#8217;m building this as a side business, not a VC-scale land grab, and the pricing reflects that. If the free tier is all you ever need, great &#8212; use it, tell your friends about it, file an issue when something breaks. That&#8217;s a win for me too.</p><div><hr></div><h2>Try it</h2><p>Three things I&#8217;m asking:</p><p><strong>Install it.</strong> If you&#8217;re on Umbrel, add the community app store and install Satsbook in about thirty seconds:</p><pre><code><code>Umbrel &#8594; App Store &#8594; Community App Stores &#8594; Add Store
https://github.com/satsbook/umbrel-app-store</code></code></pre><p>Import one CSV. Look at your dashboard. Tell me what surprised you.</p><p><strong>Tell me what&#8217;s broken.</strong> I built this for my node. Your node is different. Your channels, your exchange history, your edge cases &#8212; I want to hear about them. The fastest way to help is a post in <a href="https://github.com/satsbook/satsbook/discussions">GitHub Discussions</a> that says &#8220;this doesn&#8217;t match what I see in ThunderHub.&#8221; Those posts are gold.</p><p><strong>Share it with someone who needs it.</strong> If you have a friend running a node who complains about tax season, or who&#8217;s been meaning to figure out what their routing fees actually add up to, point them at this post.</p><p>It&#8217;s MIT licensed. It runs on your hardware. It never phones home. I built it for myself, and I hope you find it as useful as I have.</p><div><hr></div><p><em>Satsbook is open source at <a href="https://github.com/satsbook/satsbook">github.com/satsbook/satsbook</a>. Built by <a href="https://github.com/brewgator">BrewGator</a>. Not financial or tax advice.</em></p>]]></content:encoded></item><item><title><![CDATA[Is Everything “Mid”…]]></title><description><![CDATA[or Have We Forgotten How to Have a Good Time?]]></description><link>https://brewgator.substack.com/p/is-everything-mid</link><guid isPermaLink="false">https://brewgator.substack.com/p/is-everything-mid</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 06 Mar 2026 14:02:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1> &#8220;Mid&#8221; used to be a throwaway adjective. Now it&#8217;s practically a personality trait.</h1><p>Scroll for five minutes and you&#8217;ll see it everywhere. The new blockbuster? Mid. That buzzy Netflix show everyone swore you&#8217;d love? Mid. The album that took three years to make and six producers to finish? Yeah, fine. Mid.</p><p>It&#8217;s become this reflex. A shrug with Wi-Fi.</p><p>And I can&#8217;t shake the feeling that maybe, just maybe, we&#8217;re aiming at the wrong culprit. What if the stuff itself hasn&#8217;t deteriorated? What if we have? Not morally. Not intellectually. Just&#8230; experientially. Maybe we&#8217;ve forgotten how to sit with something long enough to actually like it.</p><p>That sounds dramatic. I know. But stay with me.</p><div><hr></div><h2>The &#8220;Good Old Days&#8221; Were Edited for You</h2><p>Whenever someone says, &#8220;Movies were better in the &#8217;90s,&#8221; I want to ask a follow-up question: which ones?</p><p>Because what they usually mean isn&#8217;t every movie that came out in 1996. They mean the handful that stuck. The cultural landmarks. The ones that still get anniversary screenings and nostalgic podcast episodes. Time did a ruthless cleanup job for us.</p><p>We remember the bangers. We forget the filler.</p><p>No one is hosting watch parties for the painfully average network sitcom that aired for eleven months in 1997 and then evaporated. No one is passionately defending the $38-million studio drama from 2003 that made $12 and a coupon for Chili&#8217;s. Those projects sank quietly into the swamp of obscurity. What floated to the surface became &#8220;the era.&#8221;</p><p>That&#8217;s not proof the past was superior. It&#8217;s proof memory has a highlight reel function.</p><p>Psychologists call it nostalgia bias, which sounds sterile and clinical, but it&#8217;s basically this: your brain airbrushes yesterday. It cranks up the emotional saturation and softens the rough edges. So when you compare today&#8217;s perfectly decent movie to the best film of your teenage years, today never had a fair shot. It was outmatched before the opening credits rolled.</p><p>And honestly? That&#8217;s kind of unfair.</p><div><hr></div><h2>The Numbers Don&#8217;t Panic</h2><p>If storytelling had truly fallen off a cliff, we&#8217;d expect to see carnage in the data. Ratings should nosedive. Reviews should crater. The long arc of cinema should slope downward like a ski jump.</p><p>But when you scan aggregate scores across IMDb, Rotten Tomatoes, Metacritic&#8212;take your pick&#8212;the decline people swear they feel doesn&#8217;t really show up in dramatic fashion. Decade by decade, the averages huddle in roughly the same neighborhood. Not identical, sure. But not catastrophic.</p><p>What <em>has</em> exploded is output.</p><p>We are absolutely drowning in content. Streaming platforms multiply like rabbits. Studios crank out sequels, spin-offs, prestige limited series, docuseries about the making of the docuseries. There&#8217;s more to watch on a random Tuesday than there was in an entire season of television twenty years ago.</p><p>That doesn&#8217;t lower the creative ceiling. It just makes the middle feel massive.</p><p>When ten great things coexist with a hundred &#8220;pretty solid&#8221; ones, and another hundred you&#8217;ll forget by Thursday, mediocrity seems omnipresent. It&#8217;s not that excellence vanished. It&#8217;s that it&#8217;s buried under sheer volume. The algorithm keeps feeding you, and not all of it is filet mignon.</p><p>Back in the day, you had fewer choices. The bad stuff didn&#8217;t stalk you through personalized recommendations. It aired once at 8:30 p.m., you shrugged, and you moved on with your life.</p><div><hr></div><h2>We Quietly Raised the Bar to the Moon</h2><p>Here&#8217;s something we don&#8217;t admit out loud: &#8220;pretty good&#8221; doesn&#8217;t satisfy us anymore.</p><p>There was a time when a well-acted, competently written, entertaining movie counted as a win. You left the theater pleased. You told a friend, &#8220;Yeah, it&#8217;s worth seeing.&#8221; End of transaction.</p><p>Now? If it doesn&#8217;t reinvent the genre, deliver at least three meme-able moments, emotionally devastate you, and spark a 40-tweet thread, it risks being filed under &#8220;mid.&#8221; We&#8217;ve inflated our expectations like we&#8217;re blowing up a parade float and forgot to stop.</p><p>Take a film that&#8217;s polished, coherent, genuinely enjoyable&#8212;but not revolutionary. Ten years ago, that&#8217;s a solid night out. Today, it&#8217;s something you stream while folding laundry and then forget to rate. Not because it failed. Because it didn&#8217;t change your molecular structure.</p><p>Maybe we&#8217;ve confused &#8220;not life-altering&#8221; with &#8220;not good.&#8221; That&#8217;s a subtle shift. But it matters.</p><p>And yeah, I catch myself doing it too.</p><div><hr></div><h2>Nostalgia Isn&#8217;t Just a Feeling; It&#8217;s a Business Model</h2><p>Studios understand our soft spots better than we do. Familiar intellectual property is safer. Known characters reduce risk. So we get sequels, reboots, cinematic universes with lore charts that require a spreadsheet.</p><p>Then something like <em>Deadpool &amp; Wolverine</em> lands, and the reactions are&#8230; intense. It&#8217;s not just a movie at that point. It&#8217;s a referendum on childhood, on earlier phases of fandom, on the memory of how it felt when superhero films were still fresh and a little unhinged.</p><p>If the new installment doesn&#8217;t outshine the emotional imprint of the original, disappointment rushes in. Even if, objectively speaking, it&#8217;s fine. Entertaining. Well-crafted.</p><p>But &#8220;fine&#8221; struggles against nostalgia. Nostalgia fights dirty.</p><p>The older version of something has the unfair advantage of first impact. It hit you when you were younger, maybe more impressionable, maybe less distracted by email notifications and group chats. You can&#8217;t recreate that exact cocktail of timing and innocence. And yet we keep expecting to.</p><div><hr></div><h2>Comfort Television Is a Warm Blanket</h2><p>Be honest. How many times have you rewatched <em>The Office</em> or <em>Parks and Recreation</em> instead of trying something new?</p><p>I have. More than I&#8217;d like to admit.</p><p>There&#8217;s a reason comfort shows feel so good. They&#8217;re pre-vetted. The jokes land where you remember them landing. The characters feel like people you&#8217;ve already forgiven for their flaws. There&#8217;s no cognitive risk involved. No fear of wasting eight hours on something that fizzles out in episode six.</p><p>New content, by contrast, demands trust. It asks for patience. It risks boredom. And we approach it armed, skeptical, half-scrolling on our phones, ready to pronounce judgment by minute twelve.</p><p>If you walk into every experience braced for disappointment, you&#8217;ll find it. Humans are weirdly talented at confirming their own suspicions.</p><div><hr></div><h2>Maybe It&#8217;s Not the Art. Maybe It&#8217;s Us.</h2><p>I don&#8217;t think movies, television, or music have collectively lost their spark. That feels too tidy. Too convenient.</p><p>What&#8217;s changed, unmistakably, is how we consume.</p><p>We binge. We multitask. We live-comment while watching. We compare everything instantly to a canon that lives in our heads. We expect novelty, emotional catharsis, technical brilliance, and cultural relevance, immediately, on demand, no slow burn allowed.</p><p>That&#8217;s not really how enjoyment works. It never has been.</p><p>Some stories need breathing room. Some songs get better on the fourth listen. Some shows don&#8217;t click until episode three. But patience is expensive now, and our attention spans are, well&#8230; not what they were. Mine included.</p><p>So when we label everything &#8220;mid,&#8221; I can&#8217;t help but wonder if we&#8217;re holding up a mirror.</p><p>Burnout masquerading as discernment. Overstimulation dressed up as critical taste. We&#8217;re chasing the feeling we had when something was new; not just new to the world, but new to us. And that&#8217;s a high bar. An impossible one, really.</p><p>The past glows because we were different inside it. Younger. Less jaded. More available.</p><p>Maybe the better question isn&#8217;t whether media has declined.</p><p>Maybe it&#8217;s this: do we still know how to let something be good, simply good, without demanding that it rearrange our soul?</p><p>I&#8217;m not sure we do.</p><p>And that might be the real plot twist.</p>]]></content:encoded></item><item><title><![CDATA[Bitcoin Coin Selection]]></title><description><![CDATA[The Art of Spending Efficiently]]></description><link>https://brewgator.substack.com/p/bitcoin-coin-selection</link><guid isPermaLink="false">https://brewgator.substack.com/p/bitcoin-coin-selection</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 20 Feb 2026 14:01:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2><p>Most Bitcoin wallets hide a surprisingly complex optimization problem behind a simple &#8220;Send&#8221; button. When you spend bitcoin, your wallet must choose <em>which</em> UTXOs (Unspent Transaction Outputs) to use as inputs. This choice directly impacts how much you pay in fees and whether your transaction even succeeds.</p><p>This is the <strong>coin selection problem</strong>, and solving it well separates efficient wallets from wasteful ones.</p><p>In this article, we&#8217;ll rebuild the mental model needed to implement coin selection from scratch. The goal isn&#8217;t to hand you working code, but to develop <em>correct intuition</em> about transaction construction, fee calculation, and UTXO management. By the end, you&#8217;ll understand what&#8217;s actually happening when you click &#8220;Send&#8221; and why your wallet sometimes seems to make puzzling choices.</p><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch09_fees.adoc">Bitcoin Transaction Fees Explained</a></p></li><li><p><a href="https://learnmeabitcoin.com/technical/transaction/fee/">Learn Me a Bitcoin - Transaction Fees</a></p></li></ul><div><hr></div><h2>What The Problem Actually Is</h2><p>A coin selection algorithm answers one question:</p><p><strong>Given a wallet&#8217;s available UTXOs and a payment requirement (destination, amount, fee rate), which UTXOs should we spend?</strong></p><p>This seems simple until you realize:</p><ul><li><p>Different UTXO types have different spending costs</p></li><li><p>Fee rates change dynamically based on network demand</p></li><li><p>You might need a change output, which costs additional bytes</p></li><li><p>Combining too many UTXOs wastes block space</p></li><li><p>Combining too few might mean insufficient funds</p></li></ul><p>The algorithm must satisfy hard constraints:</p><pre><code><code>Total input value &gt; total output value
Fee rate &gt;= required minimum
</code></code></pre><p>And optimize soft constraints:</p><pre><code><code>Minimize total fees paid
Avoid creating dust
Consolidate when fees are low
</code></code></pre><blockquote><p><strong>Sanity check:</strong> If your algorithm always selects the largest UTXO first, you&#8217;re probably overpaying during low-fee periods and might fail during high-fee periods.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoinops.org/en/topics/coin-selection/">Bitcoin Optech - Coin Selection</a></p></li></ul><div><hr></div><h2>Understanding Effective Value</h2><p>A UTXO&#8217;s nominal value (what you see on block explorers) isn&#8217;t what matters for coin selection. What matters is its <strong>effective value</strong> at a given fee rate.</p><pre><code><code>effective_value = nominal_value - cost_to_spend
</code></code></pre><p>The cost to spend depends on:</p><ul><li><p>UTXO type (P2WPKH, P2TR, P2SH, etc.)</p></li><li><p>Current fee rate</p></li></ul><h3>Example</h3><p>Consider two UTXOs at a fee rate of 10 sat/vB:</p><pre><code><code>UTXO A (P2WPKH):
- Nominal value: 100,000 sats
- Input size: ~68 vBytes
- Cost to spend: 680 sats
- Effective value: 99,320 sats

UTXO B (P2TR):
- Nominal value: 100,000 sats  
- Input size: ~58 vBytes
- Cost to spend: 580 sats
- Effective value: 99,420 sats
</code></code></pre><p>At 10 sat/vB, both are viable. But at 200 sat/vB:</p><pre><code><code>UTXO A effective value: 86,400 sats
UTXO B effective value: 88,400 sats
</code></code></pre><p>The Taproot UTXO is now clearly superior.</p><blockquote><p><strong>Sanity check:</strong> If your algorithm ignores input types, you&#8217;re leaving money on the table or selecting inefficient inputs.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoin.stackexchange.com/a/84006/3667">Bitcoin Stack Exchange - Transaction Weight Calculation</a></p></li><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#transaction-size-calculations">BIP141 - Transaction Size Calculations</a></p></li></ul><div><hr></div><h2>Transaction Anatomy and Virtual Size</h2><p>Bitcoin transactions have <strong>weight</strong> measured in &#8220;weight units&#8221; (WU). Four weight units equal one <strong>virtual byte</strong> (vB).</p><pre><code><code>Transaction size:
&#9500;&#9472; Base transaction (4 WU per byte)
&#9474;  &#9500;&#9472; Version: 4 bytes
&#9474;  &#9500;&#9472; Inputs: variable
&#9474;  &#9492;&#9472; Outputs: variable
&#9492;&#9472; Witness data (1 WU per byte)
   &#9492;&#9472; Signatures and scripts
</code></code></pre><p><strong>Virtual size in vBytes:</strong></p><pre><code><code>vsize = ceil(weight / 4)
</code></code></pre><p><strong>Fee calculation:</strong></p><pre><code><code>fee = fee_rate &#215; vsize
</code></code></pre><h3>Why This Matters</h3><p>You cannot know the final fee until you know:</p><ol><li><p>How many inputs you&#8217;re using</p></li><li><p>What types those inputs are</p></li><li><p>Whether you need a change output</p></li></ol><p>This creates a circular dependency: selecting inputs affects the fee, which affects whether you need more inputs.</p><blockquote><p><strong>Sanity check:</strong> If you calculate fees before knowing your final input set, your transaction might underpay and get rejected.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki">BIP141 - Segregated Witness</a></p></li><li><p><a href="https://bitcoincore.org/en/segwit_wallet_dev/">Bitcoin Core - Transaction Weight Calculator</a></p></li></ul><div><hr></div><h2>Input Type Sizes (Reference Table)</h2><p>Different script types consume different amounts of block space:</p><p>TypeInput Size (vBytes)NotesP2PKH (legacy)~148Avoid; expensiveP2SH-P2WPKH~91Nested SegWitP2WPKH (native SegWit)~68Good efficiencyP2TR (Taproot)~58Best efficiency</p><p>Output sizes are more uniform:</p><p>TypeOutput Size (vBytes)P2WPKH31P2TR43</p><p><strong>Overhead:</strong></p><ul><li><p>Transaction version, locktime: 10 vBytes</p></li><li><p>Each input adds prevout (36 bytes) + sequence (4 bytes)</p></li><li><p>Each output adds value (8 bytes) + script</p></li></ul><blockquote><p><strong>Sanity check:</strong> A transaction with one P2TR input and two P2TR outputs should be approximately 153 vBytes. If yours is significantly different, something&#8217;s wrong.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoinops.org/en/payment-batching/">Bitcoin Optech - Payment Batching</a></p></li></ul><div><hr></div><h2>The Change Output Decision</h2><p>After selecting inputs, you must decide: <strong>do I need a change output?</strong></p><pre><code><code>surplus = total_input_value - target_amount - estimated_fee
</code></code></pre><p>Three scenarios:</p><p><strong>1. Surplus is negative:</strong> You need more inputs<br><strong>2. Surplus covers a change output:</strong> Create change<br><strong>3. Surplus exists but is too small:</strong> Donate to miners</p><p>The threshold is approximately:</p><pre><code><code>change_threshold = fee_rate &#215; change_output_size
</code></code></pre><p>If <code>surplus &lt; change_threshold</code>, creating change costs more than it&#8217;s worth. Better to overpay the fee slightly.</p><h3>Edge Case: Dust</h3><p>Bitcoin Core considers outputs below 546 sats to be &#8220;dust&#8221; and won&#8217;t relay transactions creating them. Your algorithm must respect this.</p><pre><code><code>DUST_THRESHOLD = 546  # sats
</code></code></pre><blockquote><p><strong>Sanity check:</strong> If your algorithm creates change outputs smaller than 546 sats, your transactions will be rejected.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.h#L51">Bitcoin Core - Dust Threshold</a></p></li></ul><div><hr></div><h2>Basic Selection Strategies</h2><h3>Strategy 1: Largest First</h3><p>Select UTXOs by descending value until you have enough.</p><p><strong>Pros:</strong></p><ul><li><p>Simple</p></li><li><p>Minimizes input count</p></li><li><p>Works reliably</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Wastes large UTXOs during low-fee periods</p></li><li><p>Doesn&#8217;t consider effective value</p></li><li><p>Poor long-term UTXO set management</p></li></ul><h3>Strategy 2: Smallest First</h3><p>Select smallest UTXOs first.</p><p><strong>Pros:</strong></p><ul><li><p>Consolidates dust during any spend</p></li><li><p>Preserves large UTXOs</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>May require many inputs</p></li><li><p>High fees during high-rate periods</p></li><li><p>Can fail when only small UTXOs remain</p></li></ul><h3>Strategy 3: Best Effective Value First</h3><p>Sort by effective value and select highest first.</p><p><strong>Pros:</strong></p><ul><li><p>Accounts for spending costs</p></li><li><p>Adapts to fee rates</p></li><li><p>More efficient than naive strategies</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Still greedy; not globally optimal</p></li><li><p>Doesn&#8217;t look ahead</p></li></ul><blockquote><p><strong>Sanity check:</strong> Run your algorithm against the same UTXO set at 1 sat/vB and 100 sat/vB. If the selections are identical, you&#8217;re ignoring fee rates.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bitcoin/blob/master/src/wallet/coinselection.cpp">Bitcoin Core - Coin Selection</a></p></li></ul><div><hr></div><h2>The Actual Algorithm Flow</h2><p>Here&#8217;s the high-level process:</p><pre><code><code>1. Filter available UTXOs (confirmed, non-locked)
2. Calculate effective value for each UTXO at target fee rate
3. Remove UTXOs with negative effective value
4. Sort by selection strategy (e.g., effective value descending)
5. Iteratively select UTXOs:
   a. Add next UTXO to candidate set
   b. Calculate total input value
   c. Estimate transaction size based on input count
   d. Calculate required fee
   e. Check if we have enough for target + fee
6. If insufficient funds, fail
7. If surplus exists, decide on change output
8. If change needed, recalculate with change output included
9. Return selected UTXOs and change decision
</code></code></pre><p>The critical insight: <strong>You must account for the transaction size of your own selections.</strong></p><blockquote><p><strong>Sanity check:</strong> Your algorithm should sometimes select 2 UTXOs when 1 would &#8220;technically&#8221; cover the amount, because the fee increases with the additional input.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf">Murch&#8217;s Thesis on Coin Selection</a></p></li></ul><div><hr></div><h2>Size Estimation Formula</h2><p>Rough formula for transaction virtual size:</p><pre><code><code>vsize = overhead + (num_inputs &#215; input_size) + (num_outputs &#215; output_size)
</code></code></pre><p>For P2TR &#8594; P2TR transactions:</p><pre><code><code>overhead &#8776; 10 vBytes
input_size &#8776; 58 vBytes  
output_size &#8776; 43 vBytes

vsize = 10 + (num_inputs &#215; 58) + (num_outputs &#215; 43)
</code></code></pre><p>Example: 1 input, 2 outputs:</p><pre><code><code>vsize = 10 + 58 + 86 = 154 vBytes
</code></code></pre><p>At 10 sat/vB: <code>fee = 1,540 sats</code></p><blockquote><p><strong>Sanity check:</strong> Serialize your actual transaction and measure it. If your estimate is off by more than 10%, your math is wrong.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoin.stackexchange.com/questions/1195/how-to-calculate-transaction-size-before-sending-legacy-non-segwit-p2pkh-p2sh">Bitcoin Stack Exchange - Calculate Transaction Size</a></p></li></ul><div><hr></div><h2>Fee Rate Strategy</h2><p>Fee rates determine urgency:</p><ul><li><p><strong>1-3 sat/vB:</strong> Low priority, next day confirmation</p></li><li><p><strong>10-30 sat/vB:</strong> Normal priority, few hours</p></li><li><p><strong>50-100 sat/vB:</strong> High priority, next block</p></li><li><p><strong>200+ sat/vB:</strong> Emergency, premium block space</p></li></ul><p>Your coin selection must respect the required fee rate but can opportunistically consolidate during low-fee periods.</p><p><strong>Advanced strategy:</strong></p><pre><code><code>If fee_rate &lt; threshold:
    Select additional UTXOs to consolidate
</code></code></pre><p>This &#8220;spends&#8221; cheap block space to reduce future costs.</p><blockquote><p><strong>Sanity check:</strong> During a 1 sat/vB period, consolidating 10 small UTXOs costs ~580 sats. This could save thousands later.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://mempool.space/">Mempool.space - Fee Estimates</a></p></li><li><p><a href="https://bitcoinops.org/en/topics/fee-estimation/">Bitcoin Optech - Fee Estimation</a></p></li></ul><div><hr></div><h2>Handling Insufficient Funds</h2><p>If your algorithm can&#8217;t satisfy the payment:</p><pre><code><code>available = sum(effective_values)
required = target_amount + estimated_fee

if available &lt; required:
    return "Insufficient funds"
</code></code></pre><p>This is <strong>not</strong> the same as having insufficient nominal balance. You might have 1 BTC in total but only 0.5 BTC in effective value at 500 sat/vB.</p><blockquote><p><strong>Sanity check:</strong> If your wallet shows a balance but can&#8217;t send that amount, the issue is likely effective value, not a bug.</p></blockquote><div><hr></div><h2>Testing Your Algorithm</h2><p>Good test cases:</p><ol><li><p><strong>Single UTXO sufficient:</strong> Select exactly one</p></li><li><p><strong>Two UTXOs needed:</strong> Select both, no change</p></li><li><p><strong>Change required:</strong> Select inputs, create change</p></li><li><p><strong>High fee rate:</strong> Verify effective value filtering</p></li><li><p><strong>Mixed UTXO types:</strong> Verify type-aware selection</p></li><li><p><strong>Exact amount:</strong> No change, perfect fit</p></li><li><p><strong>Dust scenario:</strong> Surplus below dust threshold</p></li></ol><blockquote><p><strong>Sanity check:</strong> If your algorithm passes basic tests but fails on a live wallet, you&#8217;re probably not handling input type sizes correctly.</p></blockquote><div><hr></div><h2>What You Should Now Understand</h2><p>After implementing coin selection, you know:</p><ul><li><p>Why wallets sometimes use more inputs than seem necessary</p></li><li><p>Why high fee rates can cause &#8220;insufficient funds&#8221; errors</p></li><li><p>Why Taproot adoption improves wallet efficiency</p></li><li><p>How transaction size affects cost</p></li><li><p>When to consolidate UTXOs</p></li></ul><p>This is the hardest conceptual part of wallet development after key derivation.</p><div><hr></div><h2>Implementation Checklist</h2><ul><li><p>Filter UTXOs by confirmation status</p></li><li><p>Calculate effective value per UTXO at target fee rate</p></li><li><p>Implement sorting strategy (largest, smallest, or effective-value-first)</p></li><li><p>Iteratively select inputs until target + fee is met</p></li><li><p>Estimate transaction virtual size dynamically</p></li><li><p>Handle change output decision based on surplus</p></li><li><p>Respect dust threshold (546 sats minimum)</p></li><li><p>Validate final transaction meets fee rate requirement</p></li><li><p>Handle insufficient funds gracefully</p></li></ul><div><hr></div><h2>Going Further</h2><p>The algorithms described here are greedy heuristics. Production wallets use more sophisticated approaches:</p><ul><li><p><strong>Branch and bound:</strong> Explore multiple combinations</p></li><li><p><strong>Knapsack optimization:</strong> Minimize waste</p></li><li><p><strong>Simulation:</strong> Test selections against future scenarios</p></li></ul><p>These improve efficiency by 5-20% but add significant complexity.</p><p>For most use cases, effective-value-first selection with proper change handling is sufficient.</p><div><hr></div><h2>Resources for Deeper Study</h2><ul><li><p><a href="https://bitcoinops.org/en/topics/coin-selection/">Bitcoin Optech - Coin Selection</a></p></li><li><p><a href="https://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf">Mark Erhardt&#8217;s Thesis</a></p></li><li><p><a href="https://github.com/bitcoin/bitcoin/blob/master/src/wallet/coinselection.cpp">Bitcoin Core Coin Selection Code</a></p></li><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki">BIP141 - Transaction Weight</a></p></li><li><p><a href="https://bitcoin.stackexchange.com/questions/tagged/coin-selection">Bitcoin Stack Exchange - Coin Selection</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Building a Bitcoin Signet Wallet from Scratch]]></title><description><![CDATA[Part 2: Multisig Transactions]]></description><link>https://brewgator.substack.com/p/building-a-bitcoin-signet-wallet-ed6</link><guid isPermaLink="false">https://brewgator.substack.com/p/building-a-bitcoin-signet-wallet-ed6</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 06 Feb 2026 14:03:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2><p>In <a href="/__u/brewgator.substack.com/p/building-a-bitcoin-signet-wallet">Part 1</a>, you built a wallet that could derive keys, scan the blockchain, and understand its own balance. That alone already puts you ahead of most people who say they &#8220;understand Bitcoin.&#8221;</p><p>In Part 2, things get real.</p><p>You are going to create <strong>actual Taproot transactions</strong>, including a <strong>2-of-2 multisig locked behind a Tapscript</strong>, and then spend it via the <strong>script-path</strong>. This is not a toy example. This is the same transaction machinery used by Lightning channels, DLCs, and modern multisig wallets.</p><p>If Part 1 was learning how to <em>read</em> Bitcoin, Part 2 is learning how to <em>speak it fluently</em>, without stuttering, and without relying on libraries to finish your sentences.</p><div><hr></div><h2>What You Are Building</h2><p>You will construct <strong>two transactions</strong>, back-to-back.</p><h3>Transaction 1: Key-Path &#8594; Script-Path</h3><p>Spend a simple Taproot UTXO and fund a <strong>2-of-2 multisig Taproot output</strong>.</p><ul><li><p><strong>Input</strong>: One of your existing Taproot UTXOs (key-path spend)</p></li><li><p><strong>Output 0</strong>: 0.01 BTC to a Taproot <em>script-path</em> multisig (keys 0 and 1)</p></li><li><p><strong>Output 1</strong>: Change back to yourself</p></li></ul><h3>Transaction 2: Script-Path &#8594; OP_RETURN</h3><p>Spend the multisig output you just created.</p><ul><li><p><strong>Input</strong>: The multisig output from Transaction 1</p></li><li><p><strong>Output 0</strong>: 0 BTC <code>OP_RETURN</code> containing your name or handle</p></li><li><p><strong>Output 1</strong>: Change back to yourself</p></li></ul><p><strong>Why this matters</strong>: You will exercise <em>both</em> Taproot spending paths in a single flow. That is the core mental model behind most modern Bitcoin protocols.</p><blockquote><p><strong>Sanity check</strong>: If you can do this without Bitcoin Core holding your hand, you actually understand Taproot.</p></blockquote><div><hr></div><h2>Bitcoin Transaction Structure (Quick Refresher)</h2><p>A Bitcoin transaction is just bytes. Opinionated bytes, but bytes nonetheless.</p><pre><code><code>Transaction (no witness):
&#9500;&#9472; Version (4 bytes)
&#9500;&#9472; Input count (1 byte)
&#9500;&#9472; Inputs
&#9474;  &#9500;&#9472; Previous TXID (32 bytes, reversed)
&#9474;  &#9500;&#9472; Output index (4 bytes)
&#9474;  &#9500;&#9472; ScriptSig length (0x00)
&#9474;  &#9492;&#9472; Sequence (0xffffffff)
&#9500;&#9472; Output count (1 byte)
&#9500;&#9472; Outputs
&#9474;  &#9500;&#9472; Value (8 bytes, little-endian)
&#9474;  &#9500;&#9472; ScriptPubKey length (1 byte)
&#9474;  &#9492;&#9472; ScriptPubKey
&#9492;&#9472; Locktime (4 bytes)

Witness (separate):
&#9500;&#9472; Marker: 0x00
&#9500;&#9472; Flag: 0x01
&#9492;&#9472; Witness stack items
</code></code></pre><p><strong>TXID</strong> is computed from the transaction <em>without</em> witness data. If you include witness bytes, you get a <strong>WTXID</strong> instead.</p><blockquote><p><strong>Sanity check</strong>: If your TXID changes when you tweak a signature, you accidentally hashed witness data.</p></blockquote><div><hr></div><h2>Part A: Funding the Multisig (Key-Path Spend)</h2><p>This first transaction is intentionally familiar. You are spending a regular Taproot output using the key-path, just like in Part 1.</p><p>The difference is <em>where the money goes</em>.</p><h3>Step 1: Create the 2-of-2 Multisig Script</h3><p>In Tapscript, multisig is built using <code>OP_CHECKSIGADD</code> instead of legacy <code>OP_CHECKMULTISIG</code>.</p><pre><code><code>OP_0 &lt;key0_x&gt; OP_CHECKSIGADD &lt;key1_x&gt; OP_CHECKSIGADD OP_2 OP_EQUAL
</code></code></pre><p>This works by counting valid signatures and checking that the total equals 2.</p><p><strong>Serialized form</strong>:</p><pre><code><code>00
20 &lt;key0_x&gt;
ba
20 &lt;key1_x&gt;
ba
52
87
</code></code></pre><h3>Why x-only keys</h3><p>Taproot and Tapscript use <strong>32-byte x-only public keys</strong>. If your derived public key has an odd Y coordinate, you must negate the private key first.</p><blockquote><p><strong>Sanity check</strong>: If you skip Y-parity normalization, everything will compile beautifully and fail cryptographically.</p></blockquote><div><hr></div><h3>Step 2: Build the TapTree</h3><p>With a single script, your TapTree is trivial.</p><pre><code><code>TapLeaf = tagged_hash(
  "TapLeaf",
  0xc0 || compact_size(script) || script
)
</code></code></pre><p>Because there is only one leaf:</p><pre><code><code>TapTree root = TapLeaf hash
</code></code></pre><p>No Merkle branches, no sibling hashes, no drama.</p><div><hr></div><h3>Step 3: Construct the Script-Path Output Key</h3><p>To force script-path spending, you use a NUMS internal key.</p><pre><code><code>internal_key = NUMS_point

tweak = tagged_hash(
  "TapTweak",
  internal_key_x || taproot_root
)

output_key = internal_key + tweak&#183;G
</code></code></pre><p>The witness program is:</p><pre><code><code>OP_1 &lt;output_key_x&gt;
</code></code></pre><blockquote><p><strong>Sanity check</strong>: If key-path spending works here, you accidentally used a real internal key instead of NUMS.</p></blockquote><div><hr></div><h3>Step 4: Build and Serialize Transaction 1</h3><p>Constraints simplify your life:</p><ul><li><p>1 input</p></li><li><p>2 outputs</p></li><li><p>Fixed fee</p></li></ul><pre><code><code>Output 0: 1_000_000 sats &#8594; multisig Taproot program
Output 1: change &#8594; your key-path Taproot address
</code></code></pre><p>No VarInts. No optional fields. No excuses.</p><div><hr></div><h3>Step 5: Compute the Taproot Signature Hash (BIP341)</h3><p>Taproot signatures commit to <em>everything</em>.</p><pre><code><code>sig_msg = (
  epoch
  hash_type
  version
  locktime
  sha256(outpoints)
  sha256(amounts)
  sha256(scriptPubKeys)
  sha256(sequences)
  sha256(outputs)
  spend_type
  input_index
)
</code></code></pre><p>Then:</p><pre><code><code>sighash = tagged_hash("TapSighash", sig_msg)
</code></code></pre><blockquote><p><strong>Sanity check</strong>: If you hardcode any hash here, the network will notice. Immediately.</p></blockquote><div><hr></div><h3>Step 6: Tweak, Sign, Witness</h3><p>Key-path signing requires tweaking:</p><pre><code><code>tweaked_privkey = privkey + tagged_hash("TapTweak", pubkey_x)
</code></code></pre><p>Sign using Schnorr. The witness stack is just:</p><pre><code><code>[ signature ]
</code></code></pre><p>At this point, Transaction 1 is complete.</p><div><hr></div><h2>Part B: Spending the Multisig (Script-Path)</h2><p>Now comes the good part.</p><p>You are going to <strong>reveal the script</strong>, prove it was committed to, and satisfy it with two signatures.</p><h3>Witness Structure</h3><p>Script-path witnesses have four items:</p><pre><code><code>[ sig0, sig1, script, control_block ]
</code></code></pre><p>Execution is LIFO. What you push last executes first.</p><blockquote><p><strong>Sanity check</strong>: If your signatures are valid but verification fails, your stack order is probably wrong.</p></blockquote><div><hr></div><h3>The Control Block</h3><p>With one script leaf:</p><pre><code><code>control_block = control_byte || internal_key_x
</code></code></pre><ul><li><p><code>control_byte = 0xc0 | parity_bit</code></p></li><li><p>Parity bit reflects the <strong>output key</strong>, not the internal key</p></li></ul><div><hr></div><h3>Script-Path Signature Hash (BIP342)</h3><p>Script-path signatures extend the key-path hash:</p><pre><code><code>+ spend_type = 0x02
+ tapleaf_hash
+ key_version
+ code_separator
</code></code></pre><p>No tweaking required. You sign with the raw private keys.</p><blockquote><p><strong>Sanity check</strong>: If you tweak here, your signature will be mathematically valid and totally useless.</p></blockquote><div><hr></div><h3>OP_RETURN Output</h3><p>This is your on-chain signature, literally.</p><pre><code><code>OP_RETURN &lt;ascii(name)&gt;
</code></code></pre><p>Value must be zero. Fees still apply. Immortality is not free.</p><div><hr></div><h2>Implementation Roadmap</h2><ol><li><p>Reconstruct wallet state</p></li><li><p>Build multisig script</p></li><li><p>Compute TapTree and witness program</p></li><li><p>Construct Transaction 1</p></li><li><p>Sign key-path spend</p></li><li><p>Compute TXID</p></li><li><p>Construct Transaction 2</p></li><li><p>Sign script-path spend</p></li><li><p>Broadcast both</p></li></ol><div><hr></div><h2>Common Mistakes (All Seen in the Wild)</h2><ul><li><p>Forgetting to negate keys</p></li><li><p>Hashing witness data into TXIDs</p></li><li><p>Tweaking script-path keys</p></li><li><p>Reversing TXIDs incorrectly</p></li><li><p>Misordering witness stack items</p></li><li><p>Forgetting compact-size prefixes</p></li></ul><p>If you hit one of these, congratulations. You are learning the hard way, like everyone else.</p><div><hr></div><h2>Validation</h2><p>Use:</p><pre><code><code>bitcoin-cli -signet testmempoolaccept '["&lt;tx1&gt;","&lt;tx2&gt;"]'
</code></code></pre><p>Both must return <code>allowed: true</code>.</p><div><hr></div><h2>What You Now Understand</h2><p>You have implemented:</p><ul><li><p>Taproot key-path spending</p></li><li><p>Taproot script-path spending</p></li><li><p>Tapscript multisig</p></li><li><p>Schnorr signatures</p></li><li><p>Control blocks and TapTrees</p></li><li><p>Full transaction serialization</p></li></ul><p>This is not academic knowledge. This is <strong>production-grade Bitcoin plumbing</strong>.</p><div><hr></div><h2>Closing Thoughts</h2><p>You started with a seed phrase.</p><p>You ended with a fully functioning Taproot multisig wallet that can construct, sign, and broadcast real transactions without any Bitcoin libraries.</p><p>That is how you actually learn Bitcoin.</p><p>Everything else is just UI.</p>]]></content:encoded></item><item><title><![CDATA[Building a Bitcoin Signet Wallet from Scratch]]></title><description><![CDATA[Part 1: Recovering Your Balance from the Blockchain]]></description><link>https://brewgator.substack.com/p/building-a-bitcoin-signet-wallet</link><guid isPermaLink="false">https://brewgator.substack.com/p/building-a-bitcoin-signet-wallet</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Fri, 23 Jan 2026 14:02:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction</h3><p>Most Bitcoin wallets feel magical. You import a seed phrase, and suddenly balances, addresses, and transaction history appear. But nothing about this process is magic; it&#8217;s deterministic, mechanical, and surprisingly small in scope.</p><p>At its core, a wallet does only four things:</p><ol><li><p>Derives keys from a root secret</p></li><li><p>Turns those keys into output scripts</p></li><li><p>Scans the blockchain for matching outputs</p></li><li><p>Subtracts what has been spent</p></li></ol><p>In this article, we&#8217;ll rebuild that process for a <strong>Taproot (P2TR) wallet on signet</strong>, without using Bitcoin Core&#8217;s wallet functionality or any Bitcoin-specific wallet libraries. The goal isn&#8217;t to produce production-ready code, but to develop a <em>correct mental model</em> of how modern wallets actually work.</p><p>This is Part 1. We stop once we can deterministically recover a wallet&#8217;s confirmed balance from the blockchain alone. In Part 2, we&#8217;ll spend those coins.</p><p><strong>Resources:</strong></p><ul><li><p><a href="https://en.bitcoin.it/wiki/Signet">Signet Documentation</a></p></li><li><p><a href="https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc">Mastering Bitcoin - Chapter 5: Wallets</a></p></li></ul><div><hr></div><h2>What This Wallet Actually Knows</h2><p>An important framing:</p><p><strong>A wallet does not &#8220;know&#8221; its balance.</strong></p><p>Instead, it knows:</p><ul><li><p>A <em>descriptor</em> that defines how keys and scripts are derived</p></li><li><p>A set of derived witness programs it cares about</p></li><li><p>A list of unspent transaction outputs (UTXOs) it has discovered so far</p></li></ul><p>Everything else, balances, transaction history, and &#8220;accounts&#8221;, is derived from those three inputs.</p><blockquote><p><strong>Sanity check:</strong><br>If you delete your local UTXO set and rescan the chain, you should recover the <em>exact same balance</em>; if not, your wallet is stateful in the wrong way.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki">BIP32 - Hierarchical Deterministic Wallets</a></p></li><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki">BIP86 - Taproot Key Derivation</a></p></li></ul><div><hr></div><h2>Wallet Descriptors as Executable Policy</h2><p>We start with a descriptor like:</p><pre><code><code>tr(tprv8ZgxMBicQKsPe.../86h/1h/0h/0/*)</code></code></pre><p>This string encodes <strong>policy</strong>, not just a key.</p><p>Breakdown:</p><pre><code><code>tr(                     # Taproot output
  tprv...               # Extended private key
  /86h/1h/0h/0/*        # BIP86 derivation path
)</code></code></pre><p>Key observations:</p><ul><li><p>The descriptor fully defines <em>how addresses are generated</em></p></li><li><p>The <code>*</code> means &#8220;derive as many child keys as needed&#8221;</p></li><li><p>No blockchain data is required to derive addresses</p></li></ul><p>If two wallets share the same descriptor, they will derive the same addresses forever.</p><blockquote><p><strong>Sanity check:</strong><br>Import the descriptor into Bitcoin Core or another wallet and confirm that the first derived address matches yours exactly; a single mismatch here invalidates everything downstream.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://learnmeabitcoin.com/technical/descriptors">Learn Me a Bitcoin - Wallet Descriptors</a></p></li></ul><div><hr></div><h2>Extended Keys: What&#8217;s Actually Inside a tprv</h2><p>An extended private key is not just a private key. Conceptually, it contains:</p><pre><code><code>Extended Private Key
&#9500;&#9472;&#9472; depth
&#9500;&#9472;&#9472; parent fingerprint
&#9500;&#9472;&#9472; child index
&#9500;&#9472;&#9472; chain code (32 bytes)
&#9492;&#9472;&#9472; private key (32 bytes)</code></code></pre><p>The <strong>chain code</strong> is what enables deterministic key derivation; without it, you cannot derive siblings or children.</p><p>After Base58Check decoding, most wallet logic only needs:</p><ul><li><p><code>private_key</code></p></li><li><p><code>chain_code</code></p></li></ul><p>The remaining fields exist for bookkeeping and compatibility.</p><blockquote><p><strong>Sanity check:</strong><br>The private key must be a 32-byte integer strictly less than the secp256k1 curve order; if it&#8217;s zero or &#8805; <code>n</code>, decoding failed.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc">Mastering Bitcoin - Chapter 5: Wallets</a></p></li></ul><div><hr></div><h2>Walking the Derivation Path (BIP32 + BIP86)</h2><p>The derivation path:</p><pre><code><code>m / 86h / 1h / 0h / 0 / i</code></code></pre><p>means:</p><ul><li><p><code>86h</code> &#8594; BIP86 (Taproot single-key wallets)</p></li><li><p><code>1h</code> &#8594; test networks (signet/testnet)</p></li><li><p><code>0h</code> &#8594; wallet / account</p></li><li><p><code>0</code> &#8594; external (receiving) chain</p></li><li><p><code>i</code> &#8594; address index</p></li></ul><p>Each step produces a new <code>(private_key, chain_code)</code> pair.</p><h3>Hardened vs Non-Hardened</h3><p>Hardened derivation (<code>h</code>) uses the <strong>parent private key</strong> as input; non-hardened derivation uses the <strong>parent public key</strong>.</p><p>This distinction matters:</p><ul><li><p>Hardened steps prevent key-compromise attacks</p></li><li><p>Non-hardened steps enable watch-only wallets</p></li></ul><p>By the time you reach <code>/0/i</code>, derivation is intentionally non-hardened.</p><blockquote><p><strong>Sanity check:</strong><br>Child public keys derived from a parent public key must exactly match the public keys derived from the private path at the same index.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki">BIP32 - Hierarchical Deterministic Wallets</a></p></li></ul><div><hr></div><h2>From Private Key to Taproot Witness Program</h2><p>Taproot introduces a few non-obvious but mandatory steps.</p><h3>Step 1: Compute the Public Key</h3><p>Using secp256k1:</p><pre><code><code>P = k &#215; G</code></code></pre><p>Taproot uses <strong>x-only public keys</strong>, which introduces a constraint.</p><p>If <code>P.y</code> is odd:</p><pre><code><code>k = n &#8722; k
P = &#8722;P</code></code></pre><p>This ensures the Y coordinate is even.</p><blockquote><p><strong>Sanity check:</strong><br>After normalization, the public key&#8217;s Y coordinate must be even; normalizing twice will silently break key correspondence.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki">BIP340 - Schnorr Signatures</a></p></li><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki">BIP341 - Taproot</a></p></li></ul><div><hr></div><h3>Step 2: Apply the Taproot Tweak</h3><p>Even a key-only Taproot output must be tweaked.</p><p>Conceptually:</p><pre><code><code>tweak = H_TapTweak(internal_pubkey)
output_pubkey = internal_pubkey + tweak &#215; G</code></code></pre><p>Visually:</p><pre><code><code>internal key  &#9472;&#9472;&#9488;
                &#9500;&#9472; hash + scalar add &#9472;&#9472;&#9658; output key
(empty script) &#9472;&#9496;</code></code></pre><p>The tweak commits to the script tree. When no scripts exist, it commits to an <em>empty</em> tree, but the tweak is still required.</p><blockquote><p><strong>Sanity check:</strong><br>The tweak must use a <em>tagged hash</em>; a plain SHA256 will generate valid-looking but unusable outputs.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoinops.org/en/schorr-taproot-workshop/">Bitcoin Optech - Taproot Workshop</a></p></li></ul><div><hr></div><h3>Step 3: Build the Witness Program</h3><p>The final output is a versioned witness program:</p><pre><code><code>OP_1 &lt;32-byte output public key&gt;</code></code></pre><p>In hex:</p><pre><code><code>51 20 &lt;32 bytes&gt;</code></code></pre><p>This 34-byte program is what appears in transaction outputs and what the wallet scans for.</p><blockquote><p><strong>Sanity check:</strong><br>The witness program must be exactly 34 bytes; any other length indicates encoding errors.</p></blockquote><div><hr></div><h2>Precomputing Wallet Witness Programs</h2><p>Your wallet now:</p><ul><li><p>Derives N child keys (e.g., indices 0&#8211;1999)</p></li><li><p>Converts each into a Taproot witness program</p></li><li><p>Stores them in a fast lookup structure</p></li></ul><p>Conceptually:</p><pre><code><code>wallet_programs = {
  program_0,
  program_1,
  program_2,
  ...
}</code></code></pre><p>This defines the wallet&#8217;s <em>search domain</em>.</p><blockquote><p><strong>Sanity check:</strong><br>Re-deriving index 0 across runs must produce identical witness programs; any nondeterminism invalidates scanning.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc">Mastering Bitcoin - Chapter 5: Wallets</a></p></li></ul><div><hr></div><h2>How Balance Recovery Actually Works</h2><p>Wallet balance recovery is UTXO accounting.</p><h3>Conceptual Algorithm</h3><pre><code><code>UTXOs = {}

for each block:
  for each transaction:
    for each output:
      if output.script in wallet_programs:
        UTXOs.add(outpoint, value)

    for each input:
      if input.spends(outpoint in UTXOs):
        UTXOs.remove(outpoint)</code></code></pre><p>Balance is:</p><pre><code><code>sum(utxo.value for utxo in UTXOs)</code></code></pre><p>No addresses, no accounts; only scripts and outpoints.</p><blockquote><p><strong>Sanity check:</strong><br>If you stop scanning at height H, your balance must match a full node&#8217;s balance at height H for the same descriptor.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://developer.bitcoin.org/reference/rpc/">Bitcoin Core RPC Documentation</a></p></li></ul><div><hr></div><h2>Edge Cases Worth Handling Explicitly</h2><ul><li><p><strong>Coinbase transactions</strong><br>Have no inputs; maturity affects <em>spending</em>, not balance discovery</p></li><li><p><strong>Receive and spend in the same block</strong><br>Possible; transaction ordering matters</p></li><li><p><strong>Reorgs</strong><br>Out of scope here; real wallets must rewind state</p></li></ul><blockquote><p><strong>Sanity check:</strong><br>Scanning blocks in a different order must not change the final balance; order dependence indicates flawed logic.</p></blockquote><div><hr></div><h2>Bitcoin Core as a Stateless Data Source</h2><p>Bitcoin Core can run with:</p><pre><code><code>disablewallet=1</code></code></pre><p>RPC is used only to:</p><ul><li><p>Fetch block hashes</p></li><li><p>Retrieve full block data</p></li><li><p>Decode transactions</p></li></ul><p>All wallet logic lives outside the node.</p><blockquote><p><strong>Sanity check:</strong><br>Restarting Bitcoin Core must not affect your recovered balance.</p></blockquote><p><strong>Resources:</strong></p><ul><li><p><a href="https://bitcoin.org/en/full-node#configuration">Bitcoin Core Configuration</a></p></li></ul><div><hr></div><h2>End-to-End Data Flow</h2><pre><code><code>Descriptor
   &#9474;
   &#9660;
Extended Private Key
   &#9474;
   &#9660;
BIP32 Derivation
   &#9474;
   &#9660;
Private Keys
   &#9474;
   &#9660;
Public Keys (x-only)
   &#9474;
   &#9660;
Taproot Tweaks
   &#9474;
   &#9660;
Witness Programs
   &#9474;
   &#9660;
Blockchain Scan
   &#9474;
   &#9660;
UTXO Set
   &#9474;
   &#9660;
Balance</code></code></pre><blockquote><p><strong>Sanity check:</strong><br>Every step above must be deterministic; if any output changes across runs, downstream debugging is pointless.</p></blockquote><div><hr></div><h2>Why This Is Worth Doing</h2><p>After implementing this, you understand:</p><ul><li><p>Why wallets must rescan the chain</p></li><li><p>Why Taproot outputs look uniform on-chain</p></li><li><p>How balance recovery works without trusting software</p></li><li><p>Where wallet abstractions come from</p></li></ul><p>This is the hardest conceptual part.</p><div><hr></div><h2>Next: Spending What You Found</h2><p>In <strong>Part 2</strong>, we&#8217;ll:</p><ul><li><p>Select UTXOs</p></li><li><p>Construct Taproot transactions</p></li><li><p>Spend via key paths and script paths</p></li><li><p>Understand exactly what Bitcoin nodes verify</p></li></ul><p>Balance recovery answers <em>where your bitcoin is</em>;<br>spending answers <em>why the rules work</em>.</p><p><strong>Additional Resources:</strong></p><ul><li><p><a href="https://learnmeabitcoin.com/technical/hd-wallets">Learn Me a Bitcoin - HD Wallets</a></p></li><li><p><a href="https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki">BIP341 - Taproot: SegWit version 1 spending rules</a></p></li><li><p><a href="https://bitcoinops.org/en/schorr-taproot-workshop/">Bitcoin Optech - Taproot Workshop</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Calm After the Chaos]]></title><description><![CDATA[Florida&#8217;s Quietly Smart Offseason]]></description><link>https://brewgator.substack.com/p/the-calm-after-the-chaos</link><guid isPermaLink="false">https://brewgator.substack.com/p/the-calm-after-the-chaos</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 01 Jan 2026 14:03:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f17886c7-68ff-4c85-9f2d-5baa9cd3bf2b_1200x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Florida didn&#8217;t win a coaching sweepstakes this offseason. There were press conferences, private jets tracked by teenagers with burner accounts, and &#8220;sources say &#128064;&#8221; tweets that hijacked everyone&#8217;s productivity for three straight days and in the end, Florida didn&#8217;t get its guy. And honestly, that might be the best thing that happened to this program.</p><p>Before we talk about what Florida <em>did</em>, we need to talk about how they <em>ended</em> last season.</p><h2>Beating FSU Still Matters, A Lot</h2><p>You can measure progress in recruiting rankings, SP+ charts, EPA per play, and whatever new metric someone just invented to dunk on rivals, but there are still moments that define whether a season <em>feels</em> like it&#8217;s moving forward or spinning its wheels.</p><p>Beating Florida State is one of them.</p><p>Ending the year by beating your biggest rival does something important, it resets the emotional temperature of the fanbase. It turns &#8220;fire everyone&#8221; into &#8220;okay, but let&#8217;s see,&#8221; turns doomscrolling into cautious optimism scrolling, and gave Florida the ability to enter this offseason with momentum instead of desperation.</p><p>That matters more than people realize, especially on Twitter.</p><h2>The Lane Kiffin What-If</h2><p>Let&#8217;s be honest, a lot of Florida fans wanted Lane Kiffin. The offense. The swagger. The memes. The idea of winning games <em>and</em> quote-tweeting recruits at the same time.</p><p>Missing out on him <em>felt</em> like losing. For at least 48 hours, Gator Twitter was in full &#8220;this program is unserious&#8221; mode.</p><p>But the longer this offseason has gone on, the more it&#8217;s started to look like Florida may have sidestepped a very loud, very public, very chaotic transition.</p><p>Between LSU&#8217;s ongoing circus and the fallout at Ole Miss, the coaching carousel has reminded us that <strong>high profile does not equal high stability</strong>. Hiring Lane means you&#8217;re not just hiring an offense, you&#8217;re hiring discourse, burner accounts, rumors, and weekly &#8220;is he leaving?&#8221; threads.</p><p>Hot yoga gyms around Gainesville can finally exhale.</p><h2>Jon Sumrall Is the Opposite of Chaos</h2><p>When Florida announced Jon Sumrall, the immediate reaction was muted at best. It wasn&#8217;t outrage, but it also wasn&#8217;t joy. It was mostly a collective, &#8220;oh&#8230; that&#8217;s it?&#8221; from a fanbase that had spent weeks refreshing FlightRadar24 and manifesting unrealistic dreams.</p><p>He didn&#8217;t feel like a win; he felt like a reset, and resets don&#8217;t trend.</p><p>Then he walked into his opening press conference and immediately started cooking.</p><p>Sumrall was self-aware, like, <em>actually</em> self-aware. He acknowledged the moment, the noise, and the fact that Florida is a proud, impatient, scarred fanbase that has been promised too many &#8220;processes&#8221; and not enough Saturdays worth bragging about. He didn&#8217;t pretend this was a quiet rebuild. He didn&#8217;t try to sell patience. He sold accountability.</p><p>And then he said the line that quietly changed the temperature in the room:</p><blockquote><p><em>"Judge me for who I am. I'm a winner. We're going to win."</em></p></blockquote><p>Which is an insane thing to say unless you fully understand where you are and what you&#8217;re walking into. He wasn&#8217;t promising dynasties. He wasn&#8217;t promising miracles. He was promising that this program doesn&#8217;t end with him, it <em>starts</em> with him.</p><p>He was passionate, confident, and just cocky enough to make you feel like he believes he belongs here, without crossing into &#8220;I&#8217;m about to fight a reporter&#8221; territory. It wasn&#8217;t quite the Cignetti &#8220;Google me&#8221; presser, but it was a very respectable knock-off.</p><p>Since then, he&#8217;s backed that tone up with actions. He didn&#8217;t show up and hire his friends, he didn&#8217;t bring in a pre-packaged system and dare the roster to survive it. He&#8217;s been consistent about building around the talent already here, not forcing square pegs into philosophical round holes, which somehow still feels like a novel concept in Gainesville.</p><p>Most importantly, he seems to understand <em>where Florida football actually is</em>. Not where Twitter wants it to be, not where the brand commercials say it should be, but where it really is: talented, frustrated, hungry, and in desperate need of functional structure. That awareness alone is refreshing; the rest of the offseason is starting to make it feel intentional.</p><h2>Early Signing Day: Stability Is the Story</h2><p>Florida didn&#8217;t dominate the early signing period. They didn&#8217;t chase every five-star with a ring light and a TikTok edit. They didn&#8217;t try to &#8220;win December,&#8221; but they also didn&#8217;t bleed talent, which is, frankly, a win.</p><p>Holding things together after hiring a coach <strong>two days before signing day</strong> is quietly impressive. That doesn&#8217;t happen without organization, communication, and a staff that understands how recruiting actually works, not just how to tweet about it.</p><p>Credit goes to Sumrall and his staff, but also to Billy Napier and Billy Gonzales for leaving behind a recruiting foundation that didn&#8217;t immediately collapse the moment a new head coach walked in the door. For once, Florida benefited from continuity instead of being haunted by it&#8212;a strange feeling, almost unsettling.</p><h2>The Staff Hires Are Where This Gets Interesting</h2><p>If Sumrall is the foundation, his staff is the blueprint, and this is where the offseason actually starts to cook:</p><ul><li><p><strong>Buster Faulkner</strong>, offensive coordinator from Georgia Tech, brings a modern, QB-friendly system built on tempo, spacing, and efficiency. He&#8217;s adapted his offense to wildly different personnel groups over the years, which suggests he understands football as a game, not a philosophy podcast.</p></li><li><p><strong>Brad White</strong>, defensive coordinator from Kentucky, brings SEC-level physicality and development. I don&#8217;t love everything about the Kentucky scheme, but it&#8217;s also hard to separate White from Mark Stoops, who might actually be powered entirely by defensive meetings.</p></li><li><p><strong>Phil Troutwine</strong>, offensive line coach from Penn State, is a <em>program-shifting</em> hire. Development, toughness, identity. For years, Florida has tried to skill-position its way out of trench problems like it&#8217;s playing NCAA 14 on freshman mode. Troutwine is a former Gator and arguably the best offensive line coach in the country. The fact that Sumrall landed a guy Billy Napier was allegedly trying to hire for years tells you everything you need to know.</p></li></ul><p>This staff wasn&#8217;t assembled for vibes; it was assembled to fix actual problems.</p><h2>The Schedule Is&#8230; Reasonable?</h2><p>There are no easy SEC schedules anymore, that&#8217;s the baseline. But next year&#8217;s slate is <em>manageable</em>, which is not something Florida fans have been allowed to say recently without being accused of cope.</p><p>Better spacing, fewer back-to-back nightmares, actual opportunities to build momentum instead of immediately being tested like it&#8217;s a CFP semifinal in September. Nine wins isn&#8217;t a dream scenario anymore; it&#8217;s a realistic one, assuming competent quarterback play, functional offensive line development, and the football gods taking a single year off from tormenting us.</p><h2>The Portal: DJ Out, Stability In</h2><p>Yes, DJ entering the portal hurts; that&#8217;s real. But if we&#8217;re being honest, how upset can we really be about losing the quarterback of a four-win team? He cost Florida games last year, which is unfortunately more memorable than the games he won the year before.</p><p>The bigger story is who <em>didn&#8217;t</em> leave.</p><p>So far, there aren&#8217;t many departures that genuinely hurt, with one massive potential exception, <strong>Jadan Baugh</strong>. Texas thinks they have him; Florida is reportedly fighting like hell to keep him. Nobody knows anything for sure, which means Twitter definitely knows everything. TBD.</p><p>Still, the roster has largely stayed intact, and that hasn&#8217;t been the norm around here lately. That&#8217;s one of the clearest signs that something has changed inside the building.</p><h2>What This All Means</h2><p>Games still need to be played, you don&#8217;t win anything in the offseason, and I am going into this staff extremely skeptical; I&#8217;ve been scarred by too many relationships in the past and refuse to feel joy too early.</p><p>But so far, I like the direction.</p><p>This offseason wasn&#8217;t loud, it wasn&#8217;t flashy, it didn&#8217;t dominate timelines, and for Florida football right now, that might be exactly the point.</p>]]></content:encoded></item><item><title><![CDATA[🎬 10 “You HAVE to Watch This” Pre-1993 Movies (But I Won’t, and You Can’t Make Me)]]></title><description><![CDATA[By: Someone Who Already Knows Enough]]></description><link>https://brewgator.substack.com/p/10-you-have-to-watch-this-pre-1993</link><guid isPermaLink="false">https://brewgator.substack.com/p/10-you-have-to-watch-this-pre-1993</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Mon, 01 Dec 2025 15:01:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XEVo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a sacred list of movies that everyone insists I must watch. The kind that pops up whenever someone wants to flex their <em>film nerd cred</em>. But here&#8217;s the thing: if a movie came out <strong>before I was born</strong>, and I haven&#8217;t seen it by now&#8230; congratulations. I already absorbed all its cultural impact via memes, quotes, and relatives&#8217; lectures.</p><p>Seriously. I <em>know</em> what happens. I&#8217;ve seen the homages, the parodies, and the TikToks. Here&#8217;s your definitive guide to movies people freak out over, why I don&#8217;t need to watch them, and modern alternatives that deliver the same experience without requiring me to memorize the original scripts.</p><p><strong>Caveat:</strong> To be clear, this doesn&#8217;t mean I haven&#8217;t seen or won&#8217;t watch older movies, just that if I haven&#8217;t seen it by now, I&#8217;m good.</p><div><hr></div><h2>1&#65039;&#8419; Goodfellas (1990)</h2><p><strong>What I know:</strong><br>Ray Liotta laughing like his soul depends on it. Joe Pesci yelling <em>&#8220;Funny how?&#8221;</em> at someone who dared to exist. A one-shot through a restaurant dissected in every film class ever. Mobsters doing mobster things until consequences arrive.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Everyone post-1995 copied it anyway, and I&#8217;ve seen all the knockoffs. I&#8217;m culturally fluent without ever pressing play.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0407887/">The Departed (2006)</a></strong> &#8212; Chaos, betrayal, and a mob underworld that feels just as brutal, but with cell phones, modern editing, and fewer lectures.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!PK6q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 424w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 848w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!PK6q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif" width="320" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:159,&quot;width&quot;:160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:373973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 424w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 848w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!PK6q!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa687320d-b9cc-44a5-b4c8-6815567826c3_160x159.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div><hr></div><h2>2&#65039;&#8419; Citizen Kane (1941)</h2><p><strong>What I know:</strong><br>Rosebud. A guy dies. Critics insist it&#8217;s the greatest movie ever because they once had a film theory class. Iconic shots and angles that are now so normal nobody notices.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Every joke and reference has already reached me. I&#8217;ve got the cultural gist. No need to watch a newspaper magnate mope around his mansion.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt1285016/">The Social Network (2010)</a></strong> &#8212; Rise-and-fall of a brilliant, morally complicated man. Same energy, better pacing.</p><div><hr></div><h2>3&#65039;&#8419; Casablanca (1942)</h2><p><strong>What I know:</strong><br>A smoky nightclub. Tragic romance. Bogart looking world-weary. Lines like <em>&#8220;Here&#8217;s looking at you, kid&#8221;</em>. I&#8217;ve heard these quotes more than my own voicemail.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Quote montages and memes have already shown me the emotional beats. Watching it now is basically bonus content.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt3783958/">La La Land (2016)</a></strong> &#8212; Big romance, dramatic choices, same longing, with jazz hands and color that doesn&#8217;t make your eyes go gray.</p><div><hr></div><h2>4&#65039;&#8419; Gone With the Wind (1939)</h2><p><strong>What I know:</strong><br>Scarlett O&#8217;Hara. Plantation drama. Four-hour runtime. Debates about whether it aged like fine wine or spoiled milk.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Length + cultural baggage = I already have the gist. Watching it wouldn&#8217;t teach me anything new.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0120338/">Titanic (1997)</a></strong> &#8212; Epic romance, historical stakes, long runtime, infamous sinking. Less homework, more icebergs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XEVo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 424w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 848w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XEVo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif" width="472" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:472,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1001507,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 424w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 848w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!XEVo!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a6d3ff7-8e5b-4bb8-881c-9fcd549afa48_472x392.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>5&#65039;&#8419; 2001: A Space Odyssey (1968)</h2><p><strong>What I know:</strong><br>Monoliths. Primate evolution. HAL refusing to open pod bay doors. Psychedelic tunnels. Confusing but iconic.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Every sci-fi film since 1970 has already referenced it. Watching feels like reverse-engineering a meme.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0816692/">Interstellar (2014)</a></strong> &#8212; Philosophy, space, emotional stakes, clear explanations, same awe factor, faster pacing.</p><div><hr></div><h2>6&#65039;&#8419; The Fugitive (1993)</h2><p><strong>What I know:</strong><br>Doctor wrongly accused of murdering his wife, chased across the country. Iconic train and hospital scenes. Everybody references the chase, suspense, and moral righteousness.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>The story exists in pop culture fragments. I&#8217;ve effectively seen it via memes and parodies. No need to sit through it.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0482571/">The Prestige (2006)</a></strong> &#8212; Twists, deception, obsession, and morally complex decisions. Sleek, modern, and keeps you guessing.</p><div><hr></div><h2>7&#65039;&#8419; Taxi Driver (1976)</h2><p><strong>What I know:</strong><br>&#8220;You talkin&#8217; to me?&#8221; Lonely, angry antihero spiraling through 1970s NYC. Gun violence, moral ambiguity, neon-lit despair. I&#8217;ve seen his archetype in every brooding character since.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Every gritty, morally ambiguous protagonist since 1980 is basically Travis Bickle in slow motion.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt7286456/">Joker (2019)</a></strong> &#8212; Same descent into chaos, color grading, modern music, city that feels like it&#8217;s unravelling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Uvn9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 424w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 848w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Uvn9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif" width="480" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4427483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 424w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 848w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!Uvn9!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd1d345-aba6-4c64-8b50-6681b71030cd_480x270.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>8&#65039;&#8419; A Clockwork Orange (1971)</h2><p><strong>What I know:</strong><br>Milk bars. Eye clamps. Stylized ultraviolence. Film everyone insists you watch to prove you&#8217;re edgy or cultured.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Its visuals are more famous than its story. I&#8217;ve absorbed the aesthetic without pressing play.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0434409/">V for Vendetta (2005)</a></strong> &#8212; Dystopia, rebellion, moral ambiguity, and stylized violence accessible to mortals.</p><div><hr></div><h2>9&#65039;&#8419; Blade Runner (1982)</h2><p><strong>What I know:</strong><br>Neon rain. Replicants. Harrison Ford exhaustedly brooding. Everyone calls it a masterpiece but warns it&#8217;s &#8220;slow.&#8221;</p><p><strong>Why I don&#8217;t need to see it:</strong><br>Decades of inspired movies, video games, and anime have delivered the aesthetic. I get it.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt1856101/">Blade Runner 2049 (2017)</a></strong> &#8212; Same universe, modern pacing, sound design that rattles your soul.</p><div><hr></div><h2>&#128287; Lethal Weapon (1987)</h2><p><strong>What I know:</strong><br>Two mismatched cops. Explosions. Christmas lights. Classic one-liners. &#8220;I&#8217;m too old for this shit.&#8221; Every buddy-cop movie since 1990 is basically fan fiction.</p><p><strong>Why I don&#8217;t need to see it:</strong><br>I&#8217;ve absorbed the energy, jokes, and chemistry via countless imitators and references.</p><p><strong>Modern Alternative:</strong> <strong><a href="https://www.imdb.com/title/tt0279880/">Bad Boys II (2003)</a></strong> &#8212; Banter, chaos, car stunts, explosions, and Will Smith being charmingly unhinged.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!orF-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 424w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 848w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_webp, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!orF-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif" width="480" height="194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:194,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:880540,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_424, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 424w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_848, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 848w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_1272, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!orF-!, /__u/brewgator.substack.com/w_1456, /__u/brewgator.substack.com/c_limit, /__u/brewgator.substack.com/f_auto, /__u/brewgator.substack.com/q_auto:good, /__u/brewgator.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605ea008-36b5-444e-9c30-c329896e3ecb_480x194.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h3><strong>The Takeaway</strong></h3><p>These films mattered. Once. But their fingerprints are everywhere: memes, quotes, shows, and modern blockbusters. I&#8217;ve absorbed the cultural energy without ever needing to hit &#8220;Play.&#8221;</p><p><strong>Cultural osmosis: undefeated.</strong><br><strong>Movie gatekeepers: permanently frustrated.</strong></p><p>And hey &#8212; feel free to <strong>add more movies to this list</strong> in the comments, and I promise I&#8217;ll make sure <strong>not to watch them</strong>.</p>]]></content:encoded></item><item><title><![CDATA[You Don’t Need Eight Years to Find Out]]></title><description><![CDATA[For all the talk about coaches needing &#8220;more time,&#8221; history keeps saying the same thing: by Year Four, you already know if your guy can win a national title.]]></description><link>https://brewgator.substack.com/p/you-dont-need-eight-years-to-find</link><guid isPermaLink="false">https://brewgator.substack.com/p/you-dont-need-eight-years-to-find</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Sat, 01 Nov 2025 12:01:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-0YJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326c71bc-edfa-4ea3-afd4-347a5970deb5_1220x2690.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>The Myth of Patience</h1><p>Every offseason, some fanbase starts the same cycle:<br>&#8220;Trust the process.&#8221;<br>&#8220;Year five is when it finally clicks.&#8221;<br>&#8220;He just needs his recruits.&#8221;</p><p>The sport keeps running the same experiment &#8212; and the answer never changes.</p><p>Since 1990, national championship coaches have needed <strong>about six seasons</strong> to win their first title.<br>In the modern era &#8212; BCS and Playoff &#8212; that number falls closer to <strong>five</strong>.<br>The sport&#8217;s gotten faster. Expectations have too.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/VPDnH/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/326c71bc-edfa-4ea3-afd4-347a5970deb5_1220x2690.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b49bdcbc-05f0-4d12-b0ba-255251bf5274_1220x2690.png&quot;,&quot;height&quot;:1335,&quot;title&quot;:&quot;| Created with Datawrapper&quot;,&quot;description&quot;:&quot;Create interactive, responsive &amp; beautiful charts &#8212; no code required.&quot;,&quot;belowTheFold&quot;:false}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/VPDnH/1/" width="730" height="1335" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><div><hr></div><h2>The Four-Year Reality Check</h2><p>When you look at the rare coaches who needed more than four years, the pattern barely changes.</p><p>Of the seven who took longer in the BCS/Playoff era &#8212; <strong>Bowden, Mack Brown, Dabo, Kirby, Fulmer, Day, and Harbaugh</strong> &#8212; six had already:</p><ul><li><p><strong>Won a conference title</strong>,</p></li><li><p><strong>Reached the national championship</strong>, or</p></li><li><p><strong>Made the playoff</strong><br>by the end of <strong>Year Four</strong>.</p></li></ul><p>Only <strong>Jim Harbaugh</strong> at Michigan broke that pattern &#8212; the single outlier in three decades.</p><p>That means <strong>86% of national-title coaches</strong> had already hit major contention benchmarks within their first four years.</p><div><hr></div><h2>&#128202; The Pattern Is Clear</h2><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/nArlL/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef01cb95-71d9-4131-bf1c-7278c521b3a8_1220x2434.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1a8f2cf-bc35-4e0d-9d05-1fe14007a5ad_1220x2434.png&quot;,&quot;height&quot;:1222,&quot;title&quot;:&quot;| Created with Datawrapper&quot;,&quot;description&quot;:&quot;Create interactive, responsive &amp; beautiful charts &#8212; no code required.&quot;,&quot;belowTheFold&quot;:true}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/nArlL/1/" width="730" height="1222" frameborder="0" scrolling="no" loading="lazy"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p><em>*(Side note: Bobby Bowden&#8217;s 1993 title came 18 years in, but Florida State didn&#8217;t join the ACC until 1992. From that point forward, he immediately won nine straight conference titles and played for multiple national championships. His clock started later &#8212; and he was elite from the jump.)</em></p><div><hr></div><h2>What That Means for Athletic Directors</h2><p>The takeaway isn&#8217;t that patience never pays. It&#8217;s that <strong>proof shows up fast.</strong></p><p>When you hire the right coach, you don&#8217;t have to squint to see it &#8212; the wins, the energy, the recruiting all show up early.</p><ul><li><p><strong>Urban Meyer</strong> had Florida in the BCS title game in Year 2.</p></li><li><p><strong>Kirby Smart</strong> won the SEC and nearly a natty in Year 2.</p></li><li><p><strong>Dabo Swinney</strong> had Clemson winning the ACC by Year 3.</p></li><li><p><strong>Nick Saban</strong>? LSU in Year 4, Alabama in Year 3.</p></li></ul><p>These aren&#8217;t coincidences. They&#8217;re patterns.</p><p>A coach doesn&#8217;t suddenly figure out how to win a national title after six mediocre seasons. They either <strong>set that trajectory early</strong>, or they don&#8217;t.</p><div><hr></div><h2>The Clock Starts Now</h2><p>So the next time a program tries to sell patience as a strategy &#8212; that &#8220;it just takes time&#8221; &#8212; remember this:</p><p>Since 1998, only one national championship coach didn&#8217;t have a conference title or a playoff appearance within their first four seasons. One.</p><p>The slow-build story sounds nice on talk radio.<br>But history doesn&#8217;t buy it &#8212; and neither should you.</p>]]></content:encoded></item><item><title><![CDATA[Florida Football: Post-Napier Coaching Outlook]]></title><description><![CDATA[Billy Napier&#8217;s done in Gainesville.]]></description><link>https://brewgator.substack.com/p/florida-football-post-napier-coaching</link><guid isPermaLink="false">https://brewgator.substack.com/p/florida-football-post-napier-coaching</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 23 Oct 2025 13:02:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2c4f223c-e53b-4b20-b6e5-f66352baa250_1014x821.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Billy Napier&#8217;s done in Gainesville. He couldn&#8217;t win the games that mattered, but at least he left the roster stocked. After Dan Mullen gutted the shelves on his way out, Napier made sure the next guy won&#8217;t be starting from scratch. The foundation&#8217;s there, it just needs the right architect.</p><p>As a data-minded Gator fan, I want a coach who wins through tactics and precision, not noise. Here&#8217;s who fits, who doesn&#8217;t, and who&#8217;s staying put.</p><div><hr></div><h2>Why Florida Still Matters</h2><p>This is the number one job currently available, and it&#8217;ll likely stay that way unless LSU pulls the trigger on Brian Kelly. That&#8217;s an advantage we didn&#8217;t have last cycle.</p><p><strong>Resources &amp; Support:</strong></p><ul><li><p>Top-15 athletic budget ($200M+) with aggressive NIL infrastructure through the Gator Collective</p></li><li><p>SEC membership means College Football Playoff access and national TV exposure every week</p></li><li><p>$90M football facility upgrades completed in 2023, among the best in the country</p></li></ul><p><strong>Recruiting Advantages:</strong></p><ul><li><p>Most talent-rich state in America. Seven of the top 50 recruits nationally come from Florida every year</p></li><li><p>Natural recruiting territory from Jacksonville to Miami, minimal in-state Power 4 competition</p></li><li><p>Brand recognition that still resonates with elite recruits despite recent down years</p></li></ul><p><strong>Program Foundation:</strong></p><ul><li><p>Young roster with multiple NFL-caliber players already in place</p></li><li><p>Three national titles, consistent top-10 recruiting classes</p></li><li><p>The Swamp. One of the most intimidating home-field advantages in college football</p></li></ul><p>This isn&#8217;t a rebuild. The right coach walks into 9&#8211;10 wins in Year 2.</p><h2>What I&#8217;m Looking For</h2><p>None of these are hard rules, but here&#8217;s the profile:</p><p><strong>1) Offensive innovator:</strong> Not just an &#8220;offensive guy&#8221;, someone who gameplans around what the defense can&#8217;t handle and attacks it every week. I want a coach who wants to win by 50, not one trying to hold on and win by 1.</p><p><strong>2) Established head coach:</strong> Preferably already at the P4 level. There are no obvious coordinators ready to make the leap this cycle (no Kirby Smart or Will Muschamp types).</p><p><strong>3) Cultural fit:</strong> He needs to fit the brand at Florida. For better or worse, Spurrier shaped how many Florida fans watch football, even those born after he stopped coaching. Florida fans want a quick-witted, Fun &#8216;n&#8217; Gun-loving offensive guy who doesn&#8217;t mind poking fun at other schools and doesn&#8217;t take it all too seriously.</p><div><hr></div><h2>Lane Kiffin (Ole Miss)</h2><p>If you look at my criteria, one guy checks every box: Lane Kiffin. If you&#8217;d told me five years ago that Lane Kiffin would be the number one candidate for the UF job, I would&#8217;ve thought you were insane. But here we are.</p><p><strong>What you&#8217;re getting:</strong> A proven offensive juggernaut builder and elite recruiter who wins in the SEC, manages NIL and the transfer portal aggressively, and brings instant national attention.</p><p><strong>Data &amp; Track Record</strong></p><ul><li><p><strong>Ole Miss results:</strong> Multiple 10-win seasons (2021, 2023, potentially 2025), consistently top-15 offenses, Top 20 in SP+ offense every year since 2020</p></li><li><p><strong>Quarterback success:</strong> Coached Matt Corral (3rd-round pick) and Jaxson Dart (1st-rounder) to elite statistical outputs</p></li><li><p><strong>Roster strategy:</strong> Among the first SEC coaches to master the transfer portal as a roster-building tool. Ole Miss&#8217;s 2024 roster included 20+ impact transfers</p></li></ul><p><strong>Why This Works</strong></p><ul><li><p><strong>Instant relevance:</strong> He&#8217;s a media magnet. Florida would immediately become must-watch TV, which boosts recruiting and NIL participation overnight</p></li><li><p><strong>Offensive identity:</strong> Explosive, aggressive play-calling that perfectly suits Florida&#8217;s talent-rich offensive pipeline</p></li><li><p><strong>NIL and portal mastery:</strong> He&#8217;s built rosters better than almost anyone. He&#8217;ll maximize Florida&#8217;s financial advantages</p></li><li><p><strong>SEC-proven:</strong> He&#8217;s beaten Alabama, Georgia, and LSU. He knows what it takes to win in this conference</p></li></ul><p><strong>The Risk:</strong> Kiffin&#8217;s &#8220;volatility&#8221; isn&#8217;t just his personality, it&#8217;s job-hopping. He left USC, Tennessee (infamously), FAU, and he could leave Ole Miss. There&#8217;s a real risk he views Florida as a 3&#8211;4 year stop before the NFL or another opportunity.</p><p><strong>What It&#8217;ll Cost:</strong> Ole Miss pays him $9M annually with escalators. Florida needs to offer $11&#8211;12M to make it worth leaving, plus pay a significant buyout (likely $15M+). This is a $25M+ investment upfront.</p><p><strong>The Verdict:</strong> High offensive ceiling, most SEC-ready splash hire available. But you&#8217;re betting on short-term success over long-term stability. Honestly? We&#8217;ll probably be back here in four years no matter who we hire. I&#8217;d rather it&#8217;s because Kiffin left for the NFL than because we had to fire another guy who couldn&#8217;t win.</p><div><hr></div><h2>Curt Cignetti (Indiana)</h2><p>Cignetti is the reason we should&#8217;ve fired Billy last year. If we&#8217;d fired him before the Texas game last season instead of giving him that vote of confidence, we could&#8217;ve hired Cig away from Indiana at a relatively low cost. Now if we want him, it&#8217;s going to cost a small fortune.</p><p><strong>What you&#8217;re getting:</strong> A proven winner who builds discipline and structure. He wins fast, develops quarterbacks, and gets more from his roster than expected.</p><p><strong>Data &amp; Track Record</strong></p><ul><li><p><strong>Immediate success everywhere:</strong></p><ul><li><p>James Madison: 10&#8211;0 start in 2023, Top 25 finish</p></li><li><p>Indiana: 8&#8211;0 start in 2024, program&#8217;s best mark in decades</p></li></ul></li><li><p><strong>Program versatility:</strong> Succeeded at IUP, Elon, JMU, and Indiana. Adapts across resource levels and conference types</p></li><li><p><strong>QB development:</strong> Multiple efficient, low-turnover quarterbacks. Strong tactical organization</p></li></ul><p><strong>Why This Works</strong></p><ul><li><p><strong>Maximizes current roster:</strong> He&#8217;ll elevate blue-chip talent through precision rather than waiting on multiple recruiting cycles</p></li><li><p><strong>Culture-first stability:</strong> Brings professionalism and accountability, both things UF has lacked post-Mullen</p></li><li><p><strong>Tactical soundness:</strong> His offenses control tempo and protect the ball. His defenses match the plan</p></li><li><p><strong>Defensive competence:</strong> Indiana ranked Top 40 in defensive efficiency in 2024. Proof he builds both sides</p></li></ul><p><strong>The Risk:</strong> Cignetti&#8217;s success came outside the SEC grind. Indiana&#8217;s 2024 schedule strength ranked outside the Top 50. His disciplined, lower-variance approach hasn&#8217;t faced Georgia, LSU, and Texas week after week. And he hasn&#8217;t recruited against SEC coaches who&#8217;ve been doing this for years.</p><p><strong>What It&#8217;ll Cost:</strong> Indiana just gave him an 8-year, $72M extension. Florida needs to offer $12M+ annually and absorb a massive buyout (likely $15M+). This is a $30M+ decision upfront.</p><p><strong>The Verdict:</strong> Immediate credibility, highest floor of anyone on this list. Safest pick. But you&#8217;re betting his system scales to elite competition. At the end of the day, Cignetti just wins, &#8220;Google him&#8221;.</p><div><hr></div><h2>Jedd Fisch (Washington)</h2><p>I really wish we had one more year to see how Washington looks next season. He&#8217;s got something brewing there after just two years, and I&#8217;d love one more year of evidence before pulling the trigger on hiring him.</p><p><strong>What you&#8217;re getting:</strong> Florida alum with NFL and Power 5 experience. Exceptional quarterback developer and offensive strategist who gets Gator culture.</p><p><strong>Data &amp; Track Record</strong></p><ul><li><p><strong>Pro pedigree:</strong> Worked for the Patriots, Rams, and Seahawks. Multiple NFL offensive staffs under Belichick, McVay, and Carroll</p></li><li><p><strong>College success:</strong> Turned Arizona into a top-20 offense (2022), now running a strong program at Washington in Year 2</p></li><li><p><strong>QB growth:</strong> Developed Jayden de Laura and Michael Penix Jr. into elite collegiate passers. Penix finished 2nd in Heisman voting</p></li></ul><p><strong>Why This Works</strong></p><ul><li><p><strong>Deep Florida ties:</strong> UF alum, former Gator GA. Immediate credibility with boosters and local recruits. Already has relationships in-state</p></li><li><p><strong>NFL-ready system:</strong> Pro-style offense appeals to quarterbacks and skill players who want to prepare for the league</p></li><li><p><strong>Game-plan flexibility:</strong> Weekly adaptability. Attacks what you can&#8217;t do rather than forcing scheme fit</p></li><li><p><strong>Defensive hiring acumen:</strong> Brought in Steve Belichick at Washington. Knows you need both sides of the ball</p></li></ul><p><strong>The Risk:</strong> Fisch left Arizona after three years for Washington. Will he view Florida as a stepping stone to an even bigger job? He&#8217;s said in the past this is his &#8220;dream job,&#8221; so hopefully not, but it&#8217;s something to keep in mind. His offenses are innovative, but he&#8217;s still building his head coaching r&#233;sum&#233;. Washington is 6&#8211;5 in Year 1 of the Big Ten, solid but not spectacular.</p><p><strong>What It&#8217;ll Cost:</strong> Washington pays him $7.5M annually. Florida could offer $9&#8211;10M to make it worth the move, with a reasonable buyout of $10&#8211;12M. More feasible than Cignetti financially.</p><p><strong>The Verdict:</strong> Modernized offense, recruiting credibility in-state, NFL pedigree, tactical acumen, cultural fit. Most &#8220;Florida-ready&#8221; candidate on this list.</p><div><hr></div><h2>Alex Golesh (USF)</h2><p>Here&#8217;s something interesting: Tennessee fans are <em>terrified</em> we&#8217;re going to hire Golesh. They know what he can do, they watched him build the nation&#8217;s #1 offense in 2022 before he left for USF. He checks the offensive boxes pretty clearly, but he&#8217;s coming from a G6 school, which will be a problem for some people. He isn&#8217;t my first choice, but he&#8217;s someone we should be able to get if we want him.</p><p><strong>What you&#8217;re getting:</strong> Rising star who modernized offenses at Tennessee and quickly elevated USF. Creative mind who could instantly raise Florida&#8217;s scoring ceiling.</p><p><strong>Data &amp; Track Record</strong></p><ul><li><p><strong>Elite offensive results:</strong></p><ul><li><p>Tennessee OC (2022): Nation&#8217;s #1 offense in scoring (49.4 PPG) and total yards (539 YPG)</p></li><li><p>USF (2024&#8211;25): Bowl-eligible turnaround, Top 50 recruiting class&#8212;best in a decade</p></li></ul></li><li><p><strong>Player development:</strong> Produces explosive wide receivers and efficient quarterbacks in uptempo systems. Hendon Hooker&#8217;s breakout year came under Golesh</p></li></ul><p><strong>Why This Works</strong></p><ul><li><p><strong>Offensive fireworks:</strong> Modern pace, spacing, and big-play design that recruits love. Florida&#8217;s offense would immediately become a national talking point</p></li><li><p><strong>Recruiting energy:</strong> Young, innovative, social-media savvy. Resonates with players in the NIL era. Already recruiting Florida&#8217;s top talent to USF</p></li><li><p><strong>QB appeal:</strong> His system guarantees exposure, production, and NFL tape. Would make Florida a top destination for transfer quarterbacks</p></li><li><p><strong>Defensive awareness:</strong> At USF, hired coordinators who understand complementary football. Won&#8217;t ignore defense</p></li></ul><p><strong>The Risk:</strong> Golesh has one year of head coaching experience. When things go wrong, he has no track record. The CEO responsibilities at an SEC program, boosters, media, recruiting infrastructure, there&#8217;s a massive gap between USF&#8217;s expectations and Florida&#8217;s. His floor is unknown.</p><p><strong>What It&#8217;ll Cost:</strong> USF pays him $2.25M annually. Florida could get him for $7M, with minimal buyout ($3&#8211;5M). Cheapest hire on the list by far.</p><p><strong>The Verdict:</strong> High-upside, offense-first rebuild with recruiting buzz. Swing-for-the-fences choice. But you&#8217;re betting on potential over proven results at this level.</p><div><hr></div><h2>Coaches I&#8217;d Love But Who Aren&#8217;t Leaving</h2><p>These are guys I&#8217;d take immediately, but they have no incentive to leave. So they aren&#8217;t going to be the new coach, but I wanted to at least list them here.</p><ul><li><p><strong>Lincoln Riley (USC):</strong> Still refining his defensive staff, but USC&#8217;s resources and West Coast isolation match his ambitions</p></li><li><p><strong>Marcus Freeman (Notre Dame):</strong> Program culture and alignment are ideal right now. Notre Dame gives him everything he needs</p></li><li><p><strong>Curt Cignetti (Indiana):</strong> After his extension, he probably belongs here too. But he&#8217;d be worth breaking the bank for</p></li><li><p><strong>Dan Lanning (Oregon):</strong> Despite the fact he isn&#8217;t going to leave, it would be funny for the last three Oregon coaches to all leave for the Big 3 Florida schools (Taggart to FSU, Mario to Miami, and Lanning to UF)</p></li></ul><div><hr></div><h2>Names You&#8217;ll Hear But I&#8217;d Avoid</h2><h3>Eli Drinkwitz (Missouri)</h3><p><strong>The Case For:</strong> Missouri has been competitive in the SEC under Drinkwitz, averaging 8+ wins since 2021. Solid developer, disciplined teams.</p><p><strong>Why I&#8217;d Pass:</strong> Too conservative schematically. His offensive creativity stalls against top-tier athletes. Missouri scored 10 points against Georgia in 2024 and 14 against Alabama. Florida needs someone who can win shootouts and exploit elite talent, not grind out 7-yard runs against inferior competition. His ceiling feels like &#8220;9 wins and a decent bowl&#8221;&#8212;fine for Missouri, insufficient for Florida.</p><p><strong>Data Point:</strong> Missouri ranked 52nd in offensive SP+ in 2024 despite having multiple NFL-caliber skill players. That&#8217;s a coaching problem, not a talent problem.</p><h3>James Franklin (Penn State)</h3><p><strong>The Case For:</strong> Elite recruiter. Penn State consistently finishes with Top 15 classes. Polished with the media, handles boosters well, teams always competitive.</p><p><strong>Why I&#8217;d Pass:</strong> Great recruiter, mediocre tactician. Penn State is 1&#8211;10 against top-5 opponents under Franklin. They consistently lose the games that matter because he gets outcoached in critical moments. Florida doesn&#8217;t need another coach who recruits well but can&#8217;t adjust in the fourth quarter. We just had that with Napier.</p><p><strong>Data Point:</strong> Penn State ranks 35th nationally in yards per play against ranked opponents since 2020. Not a talent issue&#8212;a coaching issue.</p><div><hr></div><h2>Summary</h2><p>Florida&#8217;s next hire should blend tactical intelligence with offensive innovation.</p><p>The good news: Florida has options. The resources, talent, and recruiting advantages make this a destination job. The next coach isn&#8217;t inheriting a rebuild, they&#8217;re inheriting a roster capable of competing for the SEC in Year 2, not to mention a much more favorable schedule (as far as SEC schedules go) than the one Billy was handed.</p><p>Hire the right guy, and we&#8217;re in the playoff by 2026. Hire the wrong one, and we&#8217;re right back here in three years, writing the same damn post about the next search.</p>]]></content:encoded></item><item><title><![CDATA[⚡ Lightning Node Monitoring with Telegram Alerts]]></title><description><![CDATA[A practical guide to getting notified when stuff actually happens on your Lightning node.]]></description><link>https://brewgator.substack.com/p/lightning-node-monitoring-with-telegram</link><guid isPermaLink="false">https://brewgator.substack.com/p/lightning-node-monitoring-with-telegram</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 16 Oct 2025 13:03:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>What This Is</h2><p>This is a standalone configuration guide for setting up reliable Lightning node monitoring using a modern Go-based monitoring tool. Unlike the complex web interfaces that tend to break (RTL crashes, ThunderHub throws 500 errors), this approach uses simple Telegram notifications that actually work.</p><p>This guide assumes you&#8217;ve already completed the main Lightning node setup from <a href="/__u/open.substack.com/pub/brewgator/p/bitcoin-nodelightning-journey-phase">Phase 1</a>, <a href="/__u/open.substack.com/pub/brewgator/p/bitcoin-node-lightning-journey-phase">Phase 2</a>, and <a href="/__u/open.substack.com/pub/brewgator/p/bitcoin-node-lightning-journey-phase-cf3">Phase 3</a>. If you haven&#8217;t, go do that first.</p><div><hr></div><h2>The Problem with Lightning Node Monitoring</h2><p>Running a Lightning node means stuff happens: channels open, channels close, payments flow through, fees get earned, balances change, servers reboot. You want to know about the important stuff without constantly checking <code>lncli getinfo</code>.</p><p>After trying various monitoring solutions, the reality is that simple, reliable notifications beat fancy dashboards that don&#8217;t work. Telegram bots are reliable, free, and work from anywhere. No web servers to crash, no dependencies to break.</p><div><hr></div><h2>What You&#8217;ll Monitor</h2><p>This setup will ping you for:</p><ul><li><p>Server reboots (uptime tracking)</p></li><li><p>Lightning channels opening (pending and confirmed)</p></li><li><p>Lightning channels closing (initiated and completed)</p></li><li><p>Lightning forwards with fee earnings</p></li><li><p>Invoice payments received</p></li><li><p><strong>Balance changes</strong> (on-chain, Lightning local/remote, total portfolio)</p></li><li><p><strong>Formatted amounts</strong> (automatically shows BTC/millions/thousands/sats)</p></li></ul><p>No spam, just actionable events when they actually happen.</p><div><hr></div><h2>1. Setting Up Telegram Bot Notifications</h2><h3>Create Your Telegram Bot</h3><ol><li><p>Message @BotFather on Telegram</p></li><li><p>Send <code>/newbot</code></p></li><li><p>Choose a name like &#8220;Lightning Node Bot&#8221;</p></li><li><p>Choose a username like &#8220;your_lightning_bot&#8221;</p></li><li><p>Save the bot token (looks like <code>123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ</code>)</p></li></ol><h3>Get Your Chat ID</h3><ol><li><p>Message @userinfobot on Telegram</p></li><li><p>Note your Chat ID (looks like <code>123456789</code>)</p></li></ol><div><hr></div><h2>2. Install the Lightning Node Tools</h2><h3>Clone the Management Repository</h3><p>The monitoring system is now part of a comprehensive Lightning node management toolkit:</p><pre><code><code># Clone the lightning-node-tools repository
git clone https://github.com/brewgator/lightning-node-tools.git
cd lightning-node-tools
</code></code></pre><h3>Build and Install</h3><pre><code><code># Build the monitoring tool
go build -o telegram-alerts cmd/telegram-alerts/main.go

# Make executable
chmod +x telegram-alerts

# Create monitoring directory for state files
mkdir -p ~/lightning-monitor
</code></code></pre><div><hr></div><h2>3. Configure the Monitor</h2><h3>Set Environment Variables</h3><p>Create a configuration file or set environment variables:</p><pre><code><code># Create config file
cat &gt; ~/.lightning-monitor-config &lt;&lt; &#8216;EOF&#8217;
BOT_TOKEN=YOUR_BOT_TOKEN_HERE
CHAT_ID=YOUR_CHAT_ID_HERE
EOF

# Or export directly
export BOT_TOKEN=&#8221;YOUR_BOT_TOKEN_HERE&#8221;
export CHAT_ID=&#8221;YOUR_CHAT_ID_HERE&#8221;
</code></code></pre><h3>Test the Setup</h3><pre><code><code># Run manually to test
./telegram-alerts

# You should receive a startup message in Telegram with:
# - Current channel count
# - Balance summary (on-chain, Lightning local/remote, total)
# - System status
</code></code></pre><div><hr></div><h2>4. Deploy and Automate</h2><h3>Set Up Cron Job</h3><pre><code><code># Add to crontab to run every 2 minutes
crontab -e

# Add this line:
*/2 * * * * /home/$(whoami)/lightning-node-tools/telegram-alerts
</code></code></pre><p>Or use the one-liner:</p><pre><code><code>(crontab -l 2&gt;/dev/null; echo &#8220;*/2 * * * * $(pwd)/telegram-alerts&#8221;) | crontab -
</code></code></pre><h3>Verify Deployment</h3><pre><code><code># Check cron was added
crontab -l

# Monitor for first few runs
tail -f /var/log/syslog | grep telegram-alerts
</code></code></pre><div><hr></div><h2>What You&#8217;ll See</h2><h3>Balance Change Notifications</h3><p>The Go version includes smart balance tracking with formatted amounts:</p><pre><code><code>&#128200; Lightning Local Balance increased
Change: 125.3K sats  
Current: 2.45M sats
</code></code></pre><pre><code><code>&#128201; On-chain Balance decreased
Change: 0.01050000 BTC
Current: 0.15000000 BTC
</code></code></pre><pre><code><code>&#9888;&#65039; &#128200; Total Portfolio Balance increased  
Change: 5.25M sats
Current: 0.25000000 BTC

Breakdown:
On-chain: 15.5M sats (+2.1M)
Lightning: 9.75M sats (+3.15M)
</code></code></pre><h3>Channel Events</h3><pre><code><code>Channel Opened
New active channels: 1
Total active channels: 8
</code></code></pre><h3>Forward Activity</h3><pre><code><code>Lightning Forwards
Recent forwards: 3
Fees earned: 156 sats
</code></code></pre><div><hr></div><h2>Advanced Features</h2><h3>Configurable Thresholds</h3><p>The Go version includes smart thresholds to prevent notification spam:</p><ul><li><p><strong>Balance Threshold</strong>: Only notifies for changes &gt; 10k sats (configurable)</p></li><li><p><strong>Significant Threshold</strong>: Large changes (&gt; 1M sats) get special attention with &#9888;&#65039;</p></li><li><p><strong>Smart Formatting</strong>: Automatically chooses BTC/millions/thousands/sats display</p></li></ul><h3>Repository Benefits</h3><p>By using the <code>lightning-node-tools</code> repository, you get:</p><ul><li><p><strong>Regular Updates</strong>: New features and improvements via <code>git pull</code></p></li><li><p><strong>Additional Tools</strong>: More Lightning management utilities as they&#8217;re developed</p></li><li><p><strong>Go Performance</strong>: Faster execution and better error handling than bash</p></li><li><p><strong>Structured Logging</strong>: Better debugging and monitoring capabilities</p></li><li><p><strong>Community Contributions</strong>: Improvements from other Lightning operators</p></li></ul><div><hr></div><h2>Keeping Updated</h2><h3>Update the Tools</h3><pre><code><code>cd lightning-node-tools
git pull origin main
go build -o telegram-alerts cmd/telegram-alerts/main.go
</code></code></pre><h3>Contributing</h3><p>Found a bug or want a feature? The repository accepts contributions:</p><ul><li><p><strong>Issues</strong>: Report bugs or request features on GitHub</p></li><li><p><strong>Pull Requests</strong>: Submit improvements and new monitoring capabilities</p></li><li><p><strong>Documentation</strong>: Help improve setup guides and usage examples</p></li></ul><div><hr></div><h2>Why This Approach Works</h2><p>After dealing with broken web interfaces and complex monitoring solutions, this approach prioritizes:</p><ul><li><p><strong>Reliability</strong>: Go binaries don&#8217;t have dependency conflicts</p></li><li><p><strong>Performance</strong>: Faster execution than shell scripts</p></li><li><p><strong>Maintainability</strong>: Clean code structure for easy modifications</p></li><li><p><strong>Extensibility</strong>: Repository structure allows adding new tools easily</p></li><li><p><strong>Community</strong>: Shared improvements from other Lightning operators</p></li></ul><p>Sometimes the most effective solution combines simplicity with modern tooling.</p><div><hr></div><h2>Troubleshooting</h2><h3>Script Not Running</h3><pre><code><code># Check cron logs
grep telegram-alerts /var/log/syslog | tail -10

# Test manual execution
cd lightning-node-tools
./telegram-alerts
</code></code></pre><h3>No Telegram Messages</h3><pre><code><code># Test Telegram API directly
curl -s -X POST &#8220;https://api.telegram.org/bot$BOT_TOKEN/sendMessage&#8221; \
    -d chat_id=&#8221;$CHAT_ID&#8221; \
    -d text=&#8221;Test message&#8221;
</code></code></pre><h3>LND Connection Issues</h3><pre><code><code># Verify LND is accessible
lncli getinfo
lncli channelbalance
lncli walletbalance
</code></code></pre><div><hr></div><h2>Repository Link</h2><p><strong>Lightning Node Tools</strong>: <a href="https://github.com/brewgator/lightning-node-tools">https://github.com/brewgator/lightning-node-tools</a></p><p>This repository will continue to expand with additional Lightning node management utilities, monitoring enhancements, and operational tools as they&#8217;re developed.</p><div><hr></div><p><em>This monitoring setup complements your existing Lightning node infrastructure by providing reliable event notifications with modern tooling and community-driven improvements.</em></p>]]></content:encoded></item><item><title><![CDATA[The Empire Did Nothing Wrong]]></title><description><![CDATA[A completely serious, definitely-not-satirical argument that blowing up planets is fine if it reduces bureaucracy.]]></description><link>https://brewgator.substack.com/p/the-empire-did-nothing-wrong</link><guid isPermaLink="false">https://brewgator.substack.com/p/the-empire-did-nothing-wrong</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 09 Oct 2025 13:03:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6CwY!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc345784-75aa-4c62-983b-8f809023ef69_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone knows the story: scrappy Rebels, evil Empire, laser battles, capes. But look closer and the propaganda starts to wobble. Watch <em>Star Wars</em> with a little distance and you realize Palpatine didn&#8217;t wreck democracy, he streamlined it. He saw a broken system and said, &#8220;Enough talk. Let&#8217;s get things done.&#8221; And for a galaxy that had spent millennia arguing in committees while entire sectors burned, that was a radical, even welcome, idea.</p><div><hr></div><h2>The Republic Was Basically Space Congress</h2><p>The Senate was a 24-hour filibuster simulator where thousands argued while wars burned. Ordinary citizens waited months for hyperlane repairs and watched pirates get richer. Meanwhile, every committee seemed focused on minutiae like asteroid mining rights or proper etiquette for interplanetary ambassadors.</p><p>So when Palpatine promised &#8220;stability and security,&#8221; people didn&#8217;t hear tyranny, they heard competence. And for a galaxy exhausted by procedural chaos, that competence looked like salvation. The &#8220;emergency powers&#8221; he granted himself? They were just paperwork he didn&#8217;t have time to shuffle through. Efficiency rarely looks gentle, but it is effective.</p><div><hr></div><h2>The Jedi: Unelected Wizards With a God Complex</h2><p>The Jedi are always framed as noble. In reality, they were a galaxy-wide cult with a dress code. They snatched toddlers, shaved their heads, and trained them to decapitate anyone who felt emotions. They treated politics like a spectator sport, debating morality from their high towers while systems fell into chaos.</p><p>When the Senate finally questioned them, the Jedi didn&#8217;t compromise, they staged a coup. Palpatine handled it the traditional way: paperwork. (Technically, Order 66.) It was decisive, yes, but consider the alternatives: endless debate, public hearings, and another decade of Jedi moral grandstanding. Sometimes efficiency isn&#8217;t pretty and sometimes it comes with laser swords.</p><div><hr></div><h2>The Empire: Peace, Prosperity, and the Occasional Superweapon</h2><p>The Empire brought something the Republic hadn&#8217;t managed in centuries: order. Crime dropped, bureaucracy thinned, and even the star destroyers ran on time. The Death Star? Call it what it was: a jobs program with unfortunate side effects. Engineers, contractors, and technicians across multiple sectors found steady work.</p><p>Alderaan&#8217;s destruction was tragic, yes, but context matters. Reports suggest the planet harbored insurgents and stockpiled weapons. In press releases, &#8220;tragic&#8221; usually translates to &#8220;necessary.&#8221; The Empire understood that deterrence can be uncomfortable, but it keeps the galaxy&#8217;s larger system running.</p><p>Even smaller measures, like stormtrooper recruitment drives or rationing programs, improved daily life for many ordinary citizens. The Empire wasn&#8217;t just about fear; it was about functioning infrastructure in a galaxy that had spent centuries arguing over lunch schedules.</p><div><hr></div><h2>The Rebels: Freeloaders With Blasters</h2><p>The Rebellion brands itself as grassroots, but look at the roster: princess, senator, rich smuggler. They weren&#8217;t fighting oppression; they were fighting taxes. And the &#8220;New Republic&#8221; they built? Collapsed faster than a stormtrooper on Endor.</p><p>Every time the Rebels scored a moral victory, they left devastation behind. Blown-up installations, dead civilians, disrupted trade: the very chaos they claimed to oppose. And yet, in cinematic marketing, they remained scrappy heroes. It&#8217;s a reminder that perception matters more than results, especially when you&#8217;re photogenic and have a good soundtrack.</p><div><hr></div><h2>The Real Lesson</h2><p>Everyone calls the Empire authoritarian. Maybe it was just decisive. A little less &#8220;freedom,&#8221; a little more &#8220;stop parking your X-wing on my moisture farm.&#8221; It wasn&#8217;t perfect, but it delivered peace and matching uniforms.</p><p>Consider how few empires in fiction, or history, actually balanced competence with spectacle. The Empire did it while maintaining a color palette. The tragedy of <em>Star Wars</em> isn&#8217;t that the Empire fell; it&#8217;s that nobody learned the comfort of letting one guy in a cloak handle everything. The Empire didn&#8217;t fail. People did.</p><div><hr></div><h2>Order Through Absurdity</h2><p>It&#8217;s easy to laugh at stormtroopers, absurdly massive space stations, or a Sith Lord who can choke someone across a room. But that absurdity is part of the Empire&#8217;s genius. By leaning into the theatrical, the regime distracts from the daily grind of bureaucracy and governance. Citizens may grumble about uniforms, but they rarely complain about their hyperlane schedules or taxes being processed on time.</p><p>There&#8217;s a lesson here: sometimes, authoritarian systems work because they make inefficiency unthinkable. In a galaxy where pirates, committees, and rebel insurgents were constant problems, a little absurdity was the only way to get anything done.</p><div><hr></div><h2>A Final Thought</h2><p>If you&#8217;ve made it this far and you&#8217;re drafting a rebuttal about &#8220;freedom&#8221; and &#8220;checks and balances,&#8221; good news, you got the point. Authoritarians rarely start out looking like villains. They look like problem-solvers. They talk about law and order. They promise to drain the Senate swamp, build the biggest space station anyone&#8217;s ever seen, and make the galaxy great again.</p><p>And that&#8217;s when the Death Star plans usually get approved.</p>]]></content:encoded></item><item><title><![CDATA[⚡ Bitcoin Node / Lightning Journey (Phase 3)]]></title><description><![CDATA[From setup to sovereign Lightning payments (aka &#8220;when the training wheels really come off&#8221;)]]></description><link>https://brewgator.substack.com/p/bitcoin-node-lightning-journey-phase-cf3</link><guid isPermaLink="false">https://brewgator.substack.com/p/bitcoin-node-lightning-journey-phase-cf3</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 02 Oct 2025 13:02:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/838af1a7-b449-4cef-a91e-103f5fd2343e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2><p>Phase 1 got Bitcoin Core running. Phase 2 hardened the security and added LND. Now Phase 3 is where your node actually stretches its legs, funding it, connecting to the Lightning Network, and finally moving sats. This is the glow-up moment where you graduate from &#8220;I run a node&#8221; to &#8220;I&#8217;m an actual Lightning participant.&#8221;</p><p>Get ready, this is where mistakes can cost real money. But also, this is where it starts to feel like magic. &#9889;</p><div><hr></div><h2>1. Funding Your Lightning Node</h2><p>You can&#8217;t ride without gas in the tank. Time to put some actual Bitcoin into LND.</p><h3>Getting Bitcoin On-Chain</h3><pre><code><code># Generate a funding address
lncli newaddress p2wkh

# Check wallet balance after funding
lncli walletbalance
</code></code></pre><p>Note: Don&#8217;t accidentally copy/paste your address into the wrong group chat. Your friends will <em>definitely</em> send memes instead of sats.</p><h3>Funding Strategy</h3><ul><li><p><strong>Start conservative</strong>: Think of this like dipping your toe in the pool, 0.001&#8211;0.01 BTC is plenty.</p></li><li><p><strong>Understand costs</strong>: Lightning is cheap, but opening or closing channels costs on-chain fees.</p></li><li><p><strong>Reserve funds</strong>: Don&#8217;t YOLO your entire stash into channels, you&#8217;ll need on-chain for emergencies.</p></li><li><p><strong>Security reminder</strong>: This is mainnet. If you fat-finger something, it&#8217;s not Monopoly money.</p></li></ul><h3>Wallet Management</h3><pre><code><code># Check on-chain transactions
lncli listchaintxns

# Monitor confirmations
bitcoin-cli gettransaction TXID
</code></code></pre><p>Pro tip: Watching confirmations is like watching paint dry, except each coat costs $5&#8211;$50 depending on mempool congestion.</p><div><hr></div><h2>2. Understanding Lightning Network Topology</h2><p>Okay, time for some mental gymnastics. Lightning isn&#8217;t just &#8220;Bitcoin but fast&#8221;, it&#8217;s a mesh of channels and liquidity that makes Visa look like dial-up.</p><h3>Network Discovery</h3><ul><li><p><strong>How Lightning works</strong>: Instead of broadcasting everything on-chain, you open payment channels. Think bar tabs, but cryptographic.</p></li><li><p><strong>Routing basics</strong>: Payments hop from node to node like a baton in a relay race. Sometimes you win, sometimes you drop the baton.</p></li><li><p><strong>Liquidity concepts</strong>: Outbound = you can send. Inbound = you can receive. Both matter.</p></li></ul><h3>Research Tools</h3><ul><li><p><strong>1ML.com</strong>: A kind of &#8220;Top 40 Hits&#8221; chart for Lightning nodes.</p></li><li><p><strong>Amboss.space</strong>: Node analytics for the data nerds among us.</p></li><li><p><strong>Lightning Network Explorer</strong>: Eye candy (see the graph in all its chaotic glory).</p></li></ul><h3>Peer Selection Strategy</h3><ul><li><p><strong>Well-connected nodes</strong>: Don&#8217;t connect to your buddy&#8217;s Raspberry Pi with 0 channels.</p></li><li><p><strong>Geographic diversity</strong>: Spread the love, don&#8217;t centralize.</p></li><li><p><strong>Different operators</strong>: Avoid putting all your eggs in one mega-node basket.</p></li><li><p><strong>Reputation matters</strong>: Like dating, except instead of ghosting you, they might just drop your channels.</p></li></ul><div><hr></div><h2>3. Connecting to Peers</h2><p>This is the &#8220;friend request&#8221; stage. You can connect to anyone, but the cool kids have better routing.</p><h3>The Connection Process</h3><pre><code><code># Basic peer connection
lncli connect PUBKEY@HOST:PORT

# Examples of reliable nodes
lncli connect 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f@3.33.236.230:9735  # Bitrefill
lncli connect 0279c22ed7a068d10dc1a38ae66d2d6461e269226c60258c021b1ddcdfe4b00bc4@ln1.satoshis.place:9735  # Satoshis.place
</code></code></pre><p>Pro tip: Connecting is like sliding into someone&#8217;s DMs. They don&#8217;t <em>owe</em> you anything, but now you&#8217;re in the same room.</p><h3>Peer Management</h3><pre><code><code># List current peers
lncli listpeers

# Disconnect if needed
lncli disconnect PUBKEY
</code></code></pre><h3>Connection vs Channel</h3><p>Big difference: <strong>connections are free</strong> (like chatting), channels cost actual Bitcoin (like buying drinks).</p><div><hr></div><h2>4. Opening Your First Channels</h2><p>Now we&#8217;re talking. Channels are where the magic happens, but also where you start burning sats on fees.</p><h3>Channel Economics</h3><ul><li><p><strong>Minimum amounts</strong>: Some nodes won&#8217;t even talk to you unless you bring 400k sats or more.</p></li><li><p><strong>Fee considerations</strong>: Every channel is an on-chain transaction, so don&#8217;t open or close frivolously.</p></li><li><p><strong>Capacity planning</strong>: Be honest, are you here to route payments, or just to buy coffee over Lightning?</p></li></ul><h3>Opening Channels</h3><pre><code><code># Basic channel opening
lncli openchannel PUBKEY AMOUNT_IN_SATOSHIS

# Your successful example
lncli openchannel 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f 400000

# Check channel status
lncli listchannels
lncli pendingchannels
</code></code></pre><h3>Channel Management</h3><pre><code><code># Monitor channel state
lncli listchannels

# Check channel balance distribution
lncli channelbalance

# Close channels if needed
lncli closechannel CHANNEL_POINT
</code></code></pre><p>Closing a channel too early is like rage-quitting a game, you can do it, but it&#8217;ll cost you.</p><div><hr></div><h2>5. Making Lightning Payments</h2><p>Finally, the fun part, actually sending sats.</p><h3>Invoice-Based Payments (Standard)</h3><pre><code><code># Pay a Lightning invoice
lncli payinvoice BOLT11_INVOICE
</code></code></pre><p>That first successful Lightning payment? Chef&#8217;s kiss. Worth all the setup headaches.</p><h3>Creating Invoices</h3><pre><code><code># Generate invoice for receiving payments
lncli addinvoice --memo "Test payment" --amt 10000 --expiry 3600

# List received payments
lncli listinvoices
</code></code></pre><h3>Payment Tracking</h3><pre><code><code># View payment history
lncli listpayments

# Check forwarding statistics (if routing)
lncli fwdinghistory
</code></code></pre><p>If you&#8217;re routing payments: congrats, you&#8217;re basically a mini-bank now (without the lobby fountain).</p><div><hr></div><h2>6. Backup and Recovery Operations</h2><p>This is where you pretend you&#8217;re paranoid, but in reality you&#8217;re just being smart.</p><h3>Critical Backup Tasks</h3><pre><code><code># Daily channel backups (automate this!)
lncli exportchanbackup --all --output_file ~/backups/channels-$(date +%Y%m%d).backup

# Verify backups
lncli verifychanbackup --multi_file ~/backups/channels-$(date +%Y%m%d).backup
</code></code></pre><p>If you&#8217;re not backing up, you&#8217;re one power outage away from crying into your keyboard.</p><h3>Recovery Planning</h3><ul><li><p><strong>Seed phrase security</strong>: Treat it like your house keys, except losing it is worse.</p></li><li><p><strong>Channel backup testing</strong>: Test on testnet, not mainnet (ask me how I know).</p></li><li><p><strong>Force closure procedures</strong>: When in doubt, close it out.</p></li><li><p><strong>Emergency contacts</strong>: Have a Lightning friend who can sanity-check your panic.</p></li></ul><div><hr></div><h2>7. Hybrid Tor + Clearnet Configuration</h2><p><em>Expand your node's connectivity to reach both clearnet and privacy-focused .onion nodes</em></p><p>Some Lightning nodes are only accessible via Tor (.onion addresses). Adding Tor support to your node enables connections to privacy-focused nodes while maintaining clearnet connectivity for maximum routing opportunities.</p><h4>1. Install and Configure Tor</h4><pre><code><code># Install Tor
sudo apt update &amp;&amp; sudo apt install tor

# Add your user to the debian-tor group
sudo usermod -a -G debian-tor $(whoami)

# Edit Tor configuration
sudo nano /etc/tor/torrc
</code></code></pre><p>Add these lines to <code>/etc/tor/torrc</code>:</p><pre><code><code># Enable control port for LND
ControlPort 9051

# Use password authentication (more reliable than cookies)
HashedControlPassword YOUR_GENERATED_HASH_HERE

# Create hidden service for your node
HiddenServiceDir /var/lib/tor/lightning/
HiddenServiceVersion 3
HiddenServicePort 9735 127.0.0.1:9735
</code></code></pre><p>Generate the password hash:</p><pre><code><code># Generate a hashed password (replace with your own secure password)
tor --hash-password "your_secure_password_here"
</code></code></pre><p>Use the output hash in the torrc file above.</p><h4>2. Set Up Hidden Service Directory</h4><pre><code><code># Create the directory manually and set proper permissions
sudo mkdir -p /var/lib/tor/lightning/
sudo chown debian-tor:debian-tor /var/lib/tor/lightning/
sudo chmod 700 /var/lib/tor/lightning/

# Start and enable Tor
sudo systemctl enable tor
sudo systemctl start tor

# Verify hidden service was created
sudo cat /var/lib/tor/lightning/hostname
</code></code></pre><h4>3. Update LND Configuration</h4><p>Add these Tor settings to your existing <code>~/.lnd/lnd.conf</code>:</p><pre><code><code>[Application Options]
listen=0.0.0.0:9735
rpclisten=127.0.0.1:10009
restlisten=127.0.0.1:8080
alias=MyLNDNode
color=#3399FF

# Tor configuration
tor.active=true
tor.control=localhost:9051
tor.socks=localhost:9050
tor.dns=soa.nodes.lightning.directory
tor.v3=true
tor.password=your_secure_password_here

# Your existing configuration continues below...
</code></code></pre><h4>4. Update Firewall and Restart</h4><pre><code><code># Allow Tor SOCKS proxy from localhost
sudo ufw allow from 127.0.0.1 to any port 9050
sudo ufw allow from 127.0.0.1 to any port 9051

# Restart services
sudo systemctl restart tor
sudo systemctl restart lnd.service
</code></code></pre><h4>5. Verify Hybrid Connectivity</h4><pre><code><code># Check that your node now advertises its .onion address
lncli getinfo | grep -A 5 '"uris"'

# Should show something like:
# "033c4b...@your_onion_address.onion:9735"

# Test clearnet connections still work
lncli connect 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f@3.33.236.230:9735

# Test Tor connections work
lncli connect PUBKEY@ONION_ADDRESS.onion:9735
</code></code></pre><h4>Troubleshooting Notes</h4><p>If your node's URIs remain empty after setup:</p><ul><li><p><strong>Cookie authentication issues</strong>: Switch to password authentication as shown above (more reliable)</p></li><li><p><strong>Permission problems</strong>: Ensure the hidden service directory has correct ownership</p></li><li><p><strong>Service timing</strong>: Allow 10-15 seconds after restarting LND for the .onion address to appear</p></li></ul><p>Your node now supports both clearnet and Tor connections, giving you access to the full Lightning network while maintaining privacy options for sensitive connections.</p><div><hr></div><h1>Managing Your Lightning Node</h1><p><em>Each of these sections could be its own dedicated post, I'm hitting the broad strokes here and may link to more detailed walkthroughs later.</em></p><div><hr></div><h2>Channel Liquidity Management</h2><p>This is the part most people skip until they can&#8217;t pay or receive. Don&#8217;t be that person.</p><h3>Understanding Liquidity</h3><ul><li><p><strong>Outbound liquidity</strong>: Your ammo for sending.</p></li><li><p><strong>Inbound liquidity</strong>: Your open door for receiving.</p></li><li><p><strong>Balanced channels</strong>: Spoiler, 50/50 isn&#8217;t always the sweet spot.</p></li></ul><h3>Rebalancing Strategies</h3><pre><code><code># Check current channel states
lncli listchannels | jq '.channels[] | {remote_pubkey, local_balance, remote_balance, capacity}'
</code></code></pre><p>Manual tricks:</p><ul><li><p>Circular payments to yourself (yes, you&#8217;re literally paying yourself fees).</p></li><li><p>Loop Out or Loop In (fancy submarine swaps).</p></li><li><p>Submarine swaps (because normal swaps weren&#8217;t cool enough).</p></li></ul><h3>Liquidity Tools</h3><ul><li><p><strong>Lightning Loop</strong>: Move liquidity around like a pro.</p></li><li><p><strong>Pool</strong>: Rent or sell liquidity, because apparently that&#8217;s a business now.</p></li><li><p><strong>Rebalance-lnd</strong>: Let a script do the boring math for you.</p></li></ul><div><hr></div><h2>Node Monitoring and Health</h2><p>Think of this like checking your vitals. Don&#8217;t wait until the patient is flatlining.</p><h3>Daily Operations - Health Check Script</h3><pre><code><code># Create comprehensive monitoring script
cat &gt; ~/monitor-node.sh &lt;&lt; 'EOF'
#!/bin/bash
echo "=== Node Status $(date) ==="
echo "Bitcoin Core:"
bitcoin-cli getblockchaininfo | grep -E "(blocks|headers|verificationprogress)"
echo "LND:"
lncli getinfo | grep -E "(synced_to_chain|synced_to_graph|num_active_channels|num_peers)"
echo "Channel Balances:"
lncli channelbalance
echo "Wallet Balance:"  
lncli walletbalance
echo "Recent Channel Activity:"
lncli listchannels | jq -r '.channels[] | "\(.chan_id): \(.local_balance)/\(.capacity) (\(.remote_pubkey[0:16])...)"'
EOF

chmod +x ~/monitor-node.sh
</code></code></pre><p>Run this script daily and you&#8217;ll feel like a sysadmin wizard.</p><h3>Log Monitoring and Rotation</h3><pre><code><code># Check LND logs for issues
tail -f ~/.lnd/logs/bitcoin/mainnet/lnd.log
</code></code></pre><p>Warning: reading logs can turn into a weird form of meditation.</p><div><hr></div><h2>Advanced Operations</h2><p>For when you want to graduate from &#8220;casual user&#8221; to &#8220;Lightning tinkerer with too much free time.&#8221;</p><h3>Routing Node Considerations</h3><ul><li><p><strong>Fee optimization</strong>: Too high, no one routes through you. Too low, you&#8217;re charity.</p></li><li><p><strong>Channel selection</strong>: You want quality connections, not just quantity.</p></li><li><p><strong>Liquidity advertising</strong>: Yes, you can actually market your liquidity. Late-stage capitalism is wild.</p></li></ul><h3>API Integration</h3><pre><code><code># REST API examples
curl -X GET https://localhost:8080/v1/getinfo --insecure
</code></code></pre><p>Yes, you can script all of this, because typing commands manually forever is for masochists.</p><div><hr></div><h2>Troubleshooting Common Issues</h2><p>Spoiler, things <em>will</em> break.</p><h3>Channel Problems</h3><ul><li><p><strong>Force closures</strong>: Like hitting the eject button. Costly, but sometimes necessary.</p></li><li><p><strong>Stuck payments</strong>: Usually means your route is cursed. Try again later.</p></li><li><p><strong>Peer connectivity</strong>: Some nodes are basically flaky friends. Don&#8217;t rely on them.</p></li></ul><h3>Node Sync Issues</h3><pre><code><code># Check sync status
lncli getinfo | grep synced
</code></code></pre><p>If it says &#8220;false&#8221;, welcome to the waiting room.</p><h3>Performance Optimization</h3><ul><li><p><strong>Database maintenance</strong>: Compact those LND files like you&#8217;re cleaning out your garage.</p></li><li><p><strong>Memory management</strong>: Don&#8217;t cheap out on hardware.</p></li><li><p><strong>Network connectivity</strong>: A Lightning node on hotel Wi-Fi is a crime.</p></li></ul><div><hr></div><h2>Security Considerations in Operations</h2><p>The part where you realize you&#8217;re holding hot money in hot wallets.</p><h3>Operational Security</h3><ul><li><p><strong>Hot wallet limits</strong>: Don&#8217;t put all your Bitcoin in Lightning.</p></li><li><p><strong>Channel partner vetting</strong>: Would you lend them cash IRL? Same logic applies.</p></li><li><p><strong>Force closure risks</strong>: Always have some spare on-chain funds ready.</p></li></ul><h3>Monitoring for Attacks</h3><ul><li><p><strong>Watchtower integration</strong>: Your bouncer when you&#8217;re offline.</p></li><li><p><strong>Breach detection</strong>: Because yes, people will try to cheat you.</p></li><li><p><strong>Access logging</strong>: Know who&#8217;s been poking at your box.</p></li></ul><div><hr></div><h2>Economic Considerations</h2><p>Running a node won&#8217;t make you rich, but it might pay for coffee.</p><h3>Cost-Benefit Analysis</h3><ul><li><p><strong>Channel opening costs</strong>: Think of it as cover charges.</p></li><li><p><strong>Routing revenue</strong>: Pocket change, unless you&#8217;re Kraken.</p></li><li><p><strong>Opportunity costs</strong>: Bitcoin locked in channels can&#8217;t moon elsewhere.</p></li></ul><h3>Fee Strategy</h3><pre><code><code># Set channel fees
lncli updatechanpolicy --base_fee_msat 1000 --fee_rate 0.000001 --chan_point CHANNEL_POINT
</code></code></pre><p>Set fees too high and you&#8217;re ignored, too low and you&#8217;re subsidizing strangers&#8217; coffee.</p><div><hr></div><h2>Integration and Applications</h2><p>Time to actually use this thing.</p><h3>Merchant Integration</h3><ul><li><p><strong>BTCPay Server</strong>: Spin up your own crypto Stripe.</p></li><li><p><strong>LNbits</strong>: A mini-bank in your pocket.</p></li><li><p><strong>Custom integrations</strong>: If you can code, Lightning wants to be everywhere.</p></li></ul><h3>Personal Use Cases</h3><ul><li><p><strong>Mobile wallets</strong>: Zeus, Zap, Phoenix, all your friends are here.</p></li><li><p><strong>Web interfaces</strong>: RTL, ThunderHub, because CLI isn&#8217;t for everyone.</p></li><li><p><strong>Automation</strong>: Tip bots, paywalls, random side projects.</p></li></ul><div><hr></div><h2>Community and Network Participation</h2><p>Congrats, you&#8217;ve gone from lurker to active participant.</p><h3>Contributing to the Network</h3><ul><li><p><strong>Running a routing node</strong>: Be part of the plumbing.</p></li><li><p><strong>Opening channels to new nodes</strong>: Help decentralization.</p></li><li><p><strong>Sharing knowledge</strong>: Flex your hard-won scars to help others.</p></li></ul><h3>Staying Informed</h3><ul><li><p><strong>Lightning development</strong>: New features drop often, don&#8217;t sleep.</p></li><li><p><strong>Network statistics</strong>: Know the health of the beast.</p></li><li><p><strong>Community engagement</strong>: Twitter, Nostr, Slack, whatever your poison.</p></li></ul><div><hr></div><h2>Conclusion: From Node Operator to Lightning Native</h2><p>By the end of Phase 3, you&#8217;re no longer just &#8220;that guy running a node in the corner.&#8221; You&#8217;re moving real sats, managing liquidity, and maybe even routing for others. You&#8217;ve graduated into Lightning-native territory.</p><p><strong>Key Milestones:</strong></p><ul><li><p>Funded and secured your Lightning wallet</p></li><li><p>Opened channels with reliable peers</p></li><li><p>Sent and received sats over Lightning</p></li><li><p>Put monitoring and backups in place</p></li><li><p>Learned enough to break and fix your own setup</p></li></ul><p><strong>What&#8217;s Next:</strong></p><ul><li><p>Dive into swaps, liquidity markets, and advanced automation</p></li><li><p>Experiment with Lightning-powered apps</p></li><li><p>Build something cool that takes sats</p></li></ul><p>You&#8217;re not just observing the future of payments anymore, you&#8217;re running part of it. &#9889;</p><div><hr></div><h2>Resources and References</h2><ul><li><p><strong>LND Documentation</strong>: <a href="https://docs.lightning.engineering/">docs.lightning.engineering</a></p></li><li><p><strong>Lightning Network Explorer</strong>: <a href="https://1ml.com/">1ml.com</a>, <a href="https://amboss.space/">amboss.space</a></p></li><li><p><strong>Community</strong>: Lightning Network Slack, Bitcoin Stack Exchange</p></li><li><p><strong>Tools</strong>: RTL, ThunderHub, Lightning Loop, Lightning Pool</p></li><li><p><strong>Previous Phases</strong>: <a href="/__u/brewgator.substack.com/p/bitcoin-nodelightning-journey-phase">Phase 1</a> - <a href="/__u/brewgator.substack.com/p/bitcoin-node-lightning-journey-phase">Phase 2</a></p></li></ul><div><hr></div><p><em>This completes the trilogy: Phase 1 (Bitcoin Core), Phase 2 (Security &amp; LND Setup), Phase 3 (Lightning Operations). You now have a fully sovereign, secure, and operational Lightning node. Don&#8217;t just hodl, route, send, and actually use it.</em></p>]]></content:encoded></item><item><title><![CDATA[Dead Man Walking]]></title><description><![CDATA[Florida&#8217;s First Bye Week Reality Check]]></description><link>https://brewgator.substack.com/p/dead-man-walking</link><guid isPermaLink="false">https://brewgator.substack.com/p/dead-man-walking</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 25 Sep 2025 13:00:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4d672759-db9a-4923-8d20-127f5d6c846b_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Four games in, the defense looks legit, the talent is there, but Billy Napier is coaching this program into the ground.</h3><p>Four weeks in, Florida sits at the bye week with more questions than answers. The record doesn&#8217;t tell the full story, the way this team has played does. This isn&#8217;t about talent. It isn&#8217;t about injuries. It&#8217;s about leadership. And right now, Florida doesn&#8217;t have any.</p><p>Before the season, I said the Gators had enough athletes to compete if they could just avoid self-inflicted wounds. Instead, the first month has been one long highlight reel of penalties, busted play calls, and coaching blunders. The defense has teeth, the roster has depth, but the guy holding the headset? He&#8217;s sinking the whole thing.</p><p>Let&#8217;s walk through it.</p><div><hr></div><h2>Week 1: LIU</h2><p>Opening against LIU was always going to be a &#8220;don&#8217;t get hurt, don&#8217;t embarrass yourself&#8221; type of game. The Gators didn&#8217;t embarrass themselves, they steamrolled. A 50-plus point shutout, Florida&#8217;s first in a decade. That&#8217;s not nothing.</p><p>DJ looked rusty, which you could chalk up to shaking off an offseason where he barely seemed involved. The offense? Predictable, but against LIU it didn&#8217;t matter. Run, run, easy pass, rinse and repeat.</p><p>The real headline was discipline. Zero penalties. Not one. Was it discipline? Was it luck? Spoiler alert: it was luck.</p><p>Still, 1-0 is 1-0, and no one complains about a blowout to open the season.</p><div><hr></div><h2>Week 2: USF</h2><p>This is the game that will be remembered, and not in a good way. Embarrassing doesn&#8217;t even cover it.</p><p>Florida managed to hit the holy trinity of losing: constant penalties, refs adding fuel to the fire, and coaching malpractice at every turn. The last few minutes felt like a masterclass in how to mismanage a clock. On top of that, players spitting on opponents? Completely unacceptable. And then the offense (if you can even call it that). Middle school stuff. Run-run-screen, punt.</p><p>This was Billy Ball distilled: methodical incompetence. I already thought Napier wasn&#8217;t the guy, but this game was the exclamation point. At this point, the only scenario where you keep him is if he wins out and takes home a national title. And let&#8217;s be real, there&#8217;s a 0.0% chance of that happening.</p><p>I was ready to move on before this game. After it? I don&#8217;t see how he survives the year.</p><div><hr></div><h2>Week 3: LSU</h2><p>If USF was the warning siren, LSU was the full-on alarm bell. Same movie, different opponent.</p><p>The offense was a mess. Endless jet sweeps and screens that fooled no one. Third-and-long calls so conservative LSU&#8217;s defense barely had to move. When your quarterback is left forcing throws into triple coverage because the scheme gives him nothing, that&#8217;s not a &#8220;unexperienced mistake&#8221; problem, it&#8217;s coaching malpractice.</p><p>Yes, Lagway threw five picks. Brutal. But what else is he supposed to do when the only route past the sticks is a lonely receiver running into a crowd? He pressed, because he had to. The staff left him out to dry.</p><p>Meanwhile, the defense got stuck playing 40 minutes of football because the offense couldn&#8217;t stay on the field. By the fourth quarter, they were cooked. LSU didn&#8217;t have to outplay Florida &#8212; they just had to wait for the Gators to implode.</p><div><hr></div><h2>Week 4: UM</h2><p>Finally, a flash of what Florida could be with even average leadership. The defense bullied Miami. Carson Beck and his &#8220;unstoppable&#8221; offense looked ordinary all night. The front four owned the line, the secondary held their ground, and UM never got comfortable.</p><p>But then there was the offense. 0-for-13 on third down. Zero. That&#8217;s not bad luck, that&#8217;s design. Every drive stalled the same way: conservative calls, no creativity, no plan to attack downfield. You can&#8217;t move the chains if your scheme refuses to try.</p><p>The defense gave Florida chance after chance. The offense wasted every single one.</p><div><hr></div><h2>The Updated Outlook</h2><p>So where does that leave us? Four weeks in, the verdict is clear: the players are good enough. The coach isn&#8217;t.</p><p>The USF loss will hang around Napier&#8217;s neck forever. LSU and UM proved what we already knew, this is not a talent gap. It&#8217;s not a rebuild. It&#8217;s a coaching problem. A fixable one, if Florida is willing to pull the trigger. Right now, though, Billy Napier is still pacing the sideline, headset in hand, calling bubble screens into oblivion. Dead man walking.</p><p>The projections don&#8217;t lie. ESPN&#8217;s FPI has Florida around 3.45 totals wins this season, with the most likely coming against Mississippi State (60%), Kentucky (48%), and FSU (43%). That is unacceptable. A program with this much talent should never be staring at bowl eligibility as its ceiling.</p><p>As for DJ, he looks like a guy who skipped a summer of practice, but the flashes are still there. If he sticks around for the inevitable coaching change, the next staff inherits a quarterback worth building around. The defense is ready. The roster is ready. All that&#8217;s missing is someone competent enough to steer the ship.</p><p>The season, in terms of championships, is already gone. But the bigger storyline is playing out: Florida is finally running out of excuses. And by the time the next bye week rolls around, the only real question might be whether Napier is still around to make it there.</p>]]></content:encoded></item><item><title><![CDATA[Bitcoin Node / Lightning Journey (Phase 2)]]></title><description><![CDATA[Phase 1 was all about getting Bitcoin Core running solidly.]]></description><link>https://brewgator.substack.com/p/bitcoin-node-lightning-journey-phase</link><guid isPermaLink="false">https://brewgator.substack.com/p/bitcoin-node-lightning-journey-phase</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 18 Sep 2025 13:03:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bf601e42-89ed-4e3a-b917-f98d3923f27a_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Phase 1 was all about getting Bitcoin Core running solidly. Now comes the fun part: turning that node into a <strong>Lightning node</strong>. This means installing <strong>LND</strong>, setting up wallets, securing channels, and making sure nothing leaks onto the internet that shouldn&#8217;t. Think of this as going from &#8220;observing the highway&#8221; to actually <strong>driving on it</strong>.</p><div><hr></div><h2>Step 1: Install LND</h2><p>There are basically two main options for running a Lightning node: <strong>LND</strong> and <strong>Core Lightning</strong>. I went with LND here, but the steps for Core Lightning aren&#8217;t wildly different. I may circle back and do a CL walk-through later. For now, let&#8217;s roll with LND.</p><p>Download, extract, and install LND:</p><pre><code><code>wget https://github.com/lightningnetwork/lnd/releases/download/v0.17.0-beta/lnd-linux-amd64-v0.17.0-beta.tar.gz
wget https://github.com/lightningnetwork/lnd/releases/download/v0.17.0-beta/manifest-v0.17.0-beta.txt

# Verify download
sha256sum --check manifest-v0.17.0-beta.txt --ignore-missing

# Extract and install
tar -xzf lnd-linux-amd64-v0.17.0-beta.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin lnd-linux-amd64-v0.17.0-beta/*
</code></code></pre><div><hr></div><h2>Step 2: Configure LND</h2><p>Set up the config file here. Make sure to use the same RPC password you generated when you installed Bitcoin Core (see <a href="file:///Users/luiscarbonell/Workspace/Obsidian%20Vault/LT's%20Notes/Ctrl%20+%20Alt%20+%20Vent/Bitcoin%20Node%20Lightning%20Journey.html">Phase 1</a>).</p><p>This is also your chance to give your node a fun alias and color. Totally cosmetic, but it shows up in explorers and mapping tools. (Yes, this is the &#8220;pick your gamer tag&#8221; moment.)</p><p>We&#8217;ll get into advanced settings later, but if you&#8217;re curious, the LND docs linked at the bottom go much deeper.</p><p><code>~/.lnd/lnd.conf</code>:</p><pre><code><code>[Application Options]
listen=0.0.0.0:9735
rpclisten=127.0.0.1:10009
restlisten=127.0.0.1:8080
alias=MyLNDNode
color=#3399FF

[Bitcoin]
bitcoin.active=1
bitcoin.mainnet=1
bitcoin.node=bitcoind

[Bitcoind]
bitcoind.rpchost=127.0.0.1:8332
bitcoind.rpcuser=bitcoinrpc
bitcoind.rpcpass=YOUR_RPC_PASSWORD_FROM_BITCOIN_CONF
bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332
bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333

[autopilot]
autopilot.active=false

[wtclient]
wtclient.active=true
</code></code></pre><div><hr></div><h2>Step 3: Fire It Up</h2><p>Let&#8217;s run this bad boy and see what happens.</p><pre><code><code>lnd --configfile=~/.lnd/lnd.conf
</code></code></pre><p>In another terminal, create a wallet for your Lightning node (if you have an existing wallet, this is when you&#8217;d restore it):</p><pre><code><code>lncli create  # Follow prompts
</code></code></pre><p>&#9888;&#65039; <strong>Mainnet sanity check before funding anything:</strong></p><ol><li><p>Bitcoin Core must be fully synced</p></li><li><p>Write down your 24-word seed <strong>offline</strong></p></li><li><p>Start with small amounts while learning</p></li><li><p>Remember: Lightning &#8800; free lunch. Mismanagement = lost sats</p></li></ol><p>Immediately back up your wallet seed and channels:</p><pre><code><code># Create channel backup
lncli exportchanbackup --all --output_file ~/backups/channels-$(date +%Y%m%d).backup

# Set up automatic backups
mkdir -p ~/backups
echo "0 2 * * * lncli exportchanbackup --all --output_file ~/backups/channels-\$(date +\%Y\%m\%d).backup" | crontab -
</code></code></pre><p>Check LND status:</p><pre><code><code>lncli getinfo

# Should show mainnet and synced_to_chain: true
</code></code></pre><p>If you want auto-unlock on startup (convenient, but less secure):</p><pre><code><code># Create password file (secure it properly)
echo "YOUR_WALLET_PASSWORD" &gt; ~/.lnd/wallet_password
chmod 600 ~/.lnd/wallet_password
</code></code></pre><div><hr></div><h2>Step 4: Lightning Basics</h2><p>Here are some commands you&#8217;ll run a lot. We&#8217;ll use them later when opening channels and sending sats, but for now, just know the toolkit:</p><pre><code><code>lncli getinfo
lncli newaddress p2wkh
lncli connect PUBKEY@HOST:PORT
lncli openchannel PUBKEY AMOUNT
lncli sendpayment --pay_req=BOLT11_INVOICE
</code></code></pre><div><hr></div><h2>Step 5: Systemd Services</h2><p>Now that we&#8217;ve been manually starting everything, let&#8217;s make life easier with systemd services.</p><h3>bitcoind service</h3><p><code>/etc/systemd/system/bitcoind.service</code>:</p><pre><code><code>[Unit]
Description=Bitcoin Daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/bitcoind -conf=/home/bitcoin/.bitcoin/bitcoin.conf -datadir=/home/bitcoin/.bitcoin
ExecStop=/usr/local/bin/bitcoin-cli -conf=/home/bitcoin/.bitcoin/bitcoin.conf stop
Restart=on-failure
User=bitcoin
Group=bitcoin
Type=simple
TimeoutSec=300

[Install]
WantedBy=multi-user.target
</code></code></pre><p><em>(This is where auto-unlock for the LND wallet comes in. Otherwise, every restart = manual unlock.)</em></p><h3>lnd service</h3><p><code>/etc/systemd/system/lnd.service</code>:</p><pre><code><code>[Unit]
Description=LND Lightning Daemon
After=bitcoind.service
Requires=bitcoind.service

[Service]
ExecStart=/usr/local/bin/lnd --configfile=/home/bitcoin/.lnd/lnd.conf
ExecStop=/usr/local/bin/lncli stop
Restart=on-failure
User=bitcoin
Group=bitcoin
Type=simple
TimeoutSec=300
LimitNOFILE=128000

[Install]
WantedBy=multi-user.target
</code></code></pre><p>Enable on boot:</p><pre><code><code>sudo systemctl daemon-reload
sudo systemctl enable bitcoind.service
sudo systemctl enable lnd.service
</code></code></pre><div><hr></div><h2>Step 6: Remote Access with Tailscale</h2><p>Services are up and auto-restarting. But right now, you can only access your node via direct login or LAN SSH. That&#8217;s not very global-payments-future, is it?</p><p>Instead of opening ports to the world (risky) or fiddling with Tor (doable but clunky), I went with <strong>Tailscale</strong>. It builds a private mesh network between your devices, so you can securely connect from anywhere&#8212;phone, laptop, whatever.</p><pre><code><code>curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
</code></code></pre><p>Now you can securely hop into your node from anywhere. &#9992;&#65039;&#9889;</p><div><hr></div><h2>Step 7: Security Audit</h2><p>Quick opsec check:</p><pre><code><code>sudo netstat -tlnp | grep -E "(8332|9735|10009|8080|28332|28333)"
</code></code></pre><ul><li><p>&#9989; Bitcoin RPC (8332) &#8594; localhost only</p></li><li><p>&#9888;&#65039; LND gRPC (10009) &#8594; make sure it&#8217;s not wide open</p></li><li><p>&#9888;&#65039; LND REST (8080) &#8594; same check</p></li><li><p>&#9989; ZMQ ports &#8594; localhost only</p></li><li><p>&#9989; Lightning P2P (9735) &#8594; public, as expected</p></li></ul><p>Check UFW status:</p><pre><code><code>sudo ufw status verbose
</code></code></pre><p>&#128680; If UFW is inactive, all LND ports are exposed. That&#8217;s&#8230; bad.</p><div><hr></div><h2>Step 8: Lock It Down</h2><h3>Firewall</h3><pre><code><code># Enable UFW
sudo ufw enable

# Allow SSH (adjust port if you changed it)
sudo ufw allow 22/tcp

# Allow Tailscale
sudo ufw allow in on tailscale0

# Allow Lightning P2P (if you want incoming connections)
sudo ufw allow 9735/tcp

# Allow Bitcoin P2P (if you want to serve other nodes)
sudo ufw allow 8333/tcp

# Block everything else
sudo ufw default deny incoming
sudo ufw default allow outgoing
</code></code></pre><h3>File Permissions</h3><pre><code><code>chmod 600 ~/.bitcoin/bitcoin.conf
chmod 600 ~/.lnd/lnd.conf
chmod -R 700 ~/.lnd/data/
</code></code></pre><h3>Fail2ban</h3><pre><code><code>sudo apt update &amp;&amp; sudo apt install fail2ban
</code></code></pre><p>Verify everything:</p><pre><code><code>sudo systemctl status bitcoind.service lnd.service --no-pager
bitcoin-cli getblockchaininfo
lncli getinfo
</code></code></pre><div><hr></div><h2>Why It Matters</h2><ul><li><p><strong>Firewall</strong> keeps randos out</p></li><li><p><strong>Permissions</strong> protect configs + macaroons</p></li><li><p><strong>Fail2ban</strong> blocks brute-forcers</p></li><li><p><strong>Tailscale</strong> = private remote access, no sketchy open ports</p></li></ul><p>Final scorecard:</p><ul><li><p>&#128274; Network Security = <strong>LOW RISK</strong></p></li><li><p>&#128100; User Management = <strong>LOW RISK</strong></p></li><li><p>&#128176; Financial Risk = <strong>MEDIUM</strong> (because sats are always real money)</p></li></ul><div><hr></div><h2>Advanced: Hardening Services</h2><pre><code><code>ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true
PrivateTmp=true
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
</code></code></pre><p><strong>Pros:</strong></p><ul><li><p>Limits blast radius if compromised</p></li><li><p>Locks services down to minimal environments</p></li><li><p>Makes privilege escalation harder</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>May break upgrades or debugging</p></li><li><p>Can block logging or Bitcoin connectivity if misconfigured</p></li></ul><div><hr></div><h2>Your Bitcoin Lightning Node is Now Production-Ready! &#9889;</h2><p>You can safely:</p><ol><li><p>Fund your Lightning wallet with real Bitcoin</p></li><li><p>Open channels and route payments</p></li><li><p>Access remotely via Tailscale</p></li><li><p>Monitor your node knowing it&#8217;s secured</p></li></ol><div><hr></div><h2>Next Steps</h2><p>At this point, your node is fully set up, secure, and running as a proper Lightning participant. Phase 3 will cover <strong>funding the node, testing payments, and managing channels</strong>, turning it into a living, breathing Lightning machine.</p><div><hr></div><h2>Resources</h2><ul><li><p><a href="https://bitcoincore.org/en/doc/">Bitcoin Core Docs</a></p></li><li><p><a href="https://docs.lightning.engineering/">LND Documentation</a></p></li><li><p><a href="https://ubuntu.com/server/docs">Ubuntu Server Docs</a></p></li><li><p><a href="https://tailscale.com/kb">Tailscale Docs</a></p></li><li><p>My upcoming write-up: <strong>Phase 3 &#8212; Funding &amp; Channels</strong></p></li></ul><div><hr></div><p><em>This is Phase 2 of my &#8220;DIY Node Admin&#8221; series. If you&#8217;ve followed along, congrats&#8212;you now have a fully functional, hardened Bitcoin + Lightning node. Phase 3 will show how to actually use it, safely.</em></p>]]></content:encoded></item><item><title><![CDATA[Road Trips with Kids]]></title><description><![CDATA[The Olympic Sport Nobody Trains For]]></description><link>https://brewgator.substack.com/p/road-trips-with-kids</link><guid isPermaLink="false">https://brewgator.substack.com/p/road-trips-with-kids</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 11 Sep 2025 13:03:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a36f749c-eb33-4252-8030-4e22ca60316d_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We just broke in our new minivan with not one, but two long road trips with the kids, a &#8220;short&#8221; four-hour drive to Fort Lauderdale and a full twelve-hour marathon to Louisiana. And let me tell you, nothing makes you question your life choices quite like the smell of spilled juice boxes mixed with toddler socks somewhere around Hour 9.</p><p>Family road trips are pitched as wholesome, memory-making adventures. You imagine the kids singing along to songs, everyone laughing, maybe even spotting a few landmarks together. The brochures in your head make it sound charming.</p><p>Reality? It is basically the Olympics (minus the medals, sponsorships, and cheering crowds). Instead, you get cracker crumbs, complaints, and the faint smell of feet that will never leave your upholstery.</p><div><hr></div><h2>The Training (That Never Happened)</h2><p>Olympians spend years preparing for their event. They have coaches, nutritionists, and carefully mapped training plans. Parents? We get tossed into the arena with zero warm-up and one child who insists they need to bring seventeen stuffed animals, two blankets, and a shoebox of &#8220;important rocks.&#8221;</p><p>Packing the car is your first workout. It is a full-body CrossFit routine disguised as &#8220;loading up.&#8221; You squat with suitcases, deadlift coolers, and lunge awkwardly with car seats. You burn 600 calories just trying to wedge the stroller in next to the snacks. And no matter how many Pinterest lists you consult, you will forget something (usually your phone charger, always your patience).</p><div><hr></div><h2>The Opening Ceremony: Leaving the Driveway</h2><p>The Olympic Games begin with fireworks, music, and pageantry. A family road trip begins with someone crying before you even hit the street.</p><p>You have got snacks packed, water bottles filled, and a carefully curated playlist ready to go. Then, right as you buckle everyone in:</p><ul><li><p>One kid suddenly needs to pee.</p></li><li><p>Another announces they are starving.</p></li><li><p>Someone insists you forgot their toy (you did not, it is literally in their lap).</p></li></ul><p>By the time you actually pull out of the driveway, you have burned through half your energy reserves, three percent of your sanity, and the trip has not even started.</p><div><hr></div><h2>The Events</h2><p>Like any Olympic sport, road trips have events (several of them):</p><ul><li><p><strong>Snack Toss</strong>: Delivering snacks from the front seat to the back without swerving off the road. Bonus points if the pouch of applesauce lands upright.</p></li><li><p><strong>Referee Duty</strong>: Settling backseat disputes using only your rearview mirror and a &#8220;do not make me pull over&#8221; voice.</p></li><li><p><strong>Bathroom Sprint</strong>: Despite asking <em>five times</em> before leaving, every child&#8217;s bladder decides to operate on a 30-minute timer. You become an expert in locating rest stops, gas stations, and &#8220;that one sketchy diner&#8221; in the middle of nowhere.</p></li><li><p><strong>Car Seat Wrestling</strong>: The strength competition. Wrestling a squirming toddler into their car seat while they go full noodle-mode should earn you a spot in the Olympic Hall of Fame.</p></li><li><p><strong>&#8220;Are We There Yet?&#8221; Endurance Challenge</strong>: This begins approximately 14 minutes into the trip and continues at intervals of every 7&#8211;10 minutes until arrival. No known coping strategy exists.</p></li><li><p><strong>Playlist Decathlon</strong>: Managing to cycle between nursery rhymes, the K Pop Demon Hunter Soundtrack, and whatever 2000s R&amp;B playlist keeps you sane without sparking a mutiny.</p></li></ul><p>If you are lucky, there is also the <strong>Nap Time Relay</strong>. The rules: one kid falls asleep, but if another makes noise and wakes them, you lose.</p><div><hr></div><h2>The Judges (a.k.a. the Kids)</h2><p>Real Olympians are scored by trained professionals. Parents, however, are judged by their kids, who are brutally honest and constantly dissatisfied.</p><ul><li><p>If the snack options are wrong: <em>booed off the stage.</em></p></li><li><p>If the Wi-Fi hotspot drops during a cartoon: <em>automatic zero points.</em></p></li><li><p>If the wrong stuffed animal is handed over: <em>immediate meltdown and loss of medal eligibility.</em></p></li></ul><p>There is no pleasing the judges. Even when everything is perfect, a child will find a reason to complain. (&#8220;These fries taste too potato-y.&#8221;)</p><div><hr></div><h2>The Hidden Events (for Parents Only)</h2><p>Road trips also come with events no one talks about:</p><ul><li><p><strong>Trash Bag Marathon</strong>: Collecting 492 snack wrappers, juice boxes, and mystery crumbs, only to discover you forgot the actual trash bags.</p></li><li><p><strong>Balance Beam of Conversation</strong>: Trying to talk to your spouse without little ears repeating everything loudly at the next gas station.</p></li><li><p><strong>Mental Gymnastics</strong>: Convincing yourself this trip is &#8220;fun&#8221; even while plotting how to sell the minivan afterward.</p></li></ul><div><hr></div><h2>The Post-Game Wrap-Up</h2><p>At long last, you arrive. The kids are refreshed, hyper, and somehow hungry again. Meanwhile, the car looks like a landfill, your back aches from sitting, and you are questioning why you did not just stay home and stream a travel documentary instead.</p><p>Every surface inside the car is sticky. No one knows why. You will spend the next six months discovering fossilized chicken nuggets in cup holders and mysterious slime welded to the carpet.</p><p>The kicker? The kids do not even remember the drive. They will remember the hotel pool, the ice cream stop, or the giant dinosaur statue you pulled over to see. All that Olympic-level effort? Already forgotten.</p><div><hr></div><h2>The Closing Ceremony</h2><p>If medals were awarded, parents would deserve them:</p><ul><li><p><strong>Gold</strong>: For surviving without tears (yours, not theirs).</p></li><li><p><strong>Silver</strong>: For only yelling once.</p></li><li><p><strong>Bronze</strong>: For making it without the car smelling like a locker room soaked in fruit snacks.</p></li></ul><p>And yet, here is the twist. Despite the chaos, the crumbs, and the fact that you will never get Goldfish powder out of your seats, you will do it again. Because five years from now, you will not remember the bathroom sprints or the backseat fights. You will remember the laughing, the goofy car games, the off-key singing, and the weird inside jokes that came out of nowhere.</p><p>Road trips with kids are exhausting, ridiculous, and sometimes catastrophic. But they are also the memories that last (which is why parents keep showing up for the event).</p><p>Now if only someone would design an actual medal ceremony at the end. I would take podium photos holding a Capri Sun and a bag of pretzels any day.</p>]]></content:encoded></item><item><title><![CDATA[Why Bitcoin Just Makes Sense]]></title><description><![CDATA[A Persuasive Case for the Skeptical but Curious]]></description><link>https://brewgator.substack.com/p/why-bitcoin-just-makes-sense</link><guid isPermaLink="false">https://brewgator.substack.com/p/why-bitcoin-just-makes-sense</guid><dc:creator><![CDATA[LT Carbonell]]></dc:creator><pubDate>Thu, 04 Sep 2025 13:00:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/414933e5-5fe9-4f42-8f72-6fe64f71d5e3_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction: Why Are We Even Talking About This?</h2><p>Let&#8217;s be honest: if you&#8217;re reading this, you probably fall into one of two camps.</p><ol><li><p>You&#8217;ve already written Bitcoin off as &#8220;magic internet money for nerds and criminals.&#8221;</p></li><li><p>You&#8217;re curious, but not convinced it has any real-world use.</p></li></ol><p>If that&#8217;s you, then pull up a chair, grab a coffee (or margarita), and let me make the case for why Bitcoin isn&#8217;t just worth paying attention to, it&#8217;s worth investing in.</p><p>We&#8217;re going to cover the big-ticket items: Bitcoin as a hedge against inflation, as money outside of the fragile fiat system, as a technology that&#8217;s faster and more portable than anything your bank offers, and why adoption is growing globally at a breakneck pace.</p><p>And just so this doesn&#8217;t feel like a dry economics lecture, I&#8217;ll throw in a story about how my own bank managed to radicalize me against the fiat system while I was on vacation at a Nickelodeon resort in Mexico. (Yes, SpongeBob was there. No, he couldn&#8217;t help me move my money.)</p><div><hr></div><h2>Inflation: The Hidden Thief</h2><p>Let&#8217;s start with the big, boring elephant in the room: inflation.</p><p>For most of modern history, Americans didn&#8217;t think too much about inflation. Then 2021 to 2023 hit. Suddenly, inflation in the U.S. surged to levels not seen since the early 1980s, peaking at <strong>9.1% in June 2022</strong> (<a href="https://www.bls.gov/cpi/">U.S. Bureau of Labor Statistics</a>). Grocery bills soared, housing costs skyrocketed, and people felt like their paychecks were shrinking before their eyes.</p><p>Globally, it&#8217;s often worse. Argentina&#8217;s inflation rate hit <strong>276% in early 2025</strong>. Turkey&#8217;s sits above <strong>70%</strong>. And in places like Lebanon, Venezuela, and Zimbabwe, inflation is so bad that the local currency is practically Monopoly money.</p><p>Here&#8217;s the kicker: central banks <em>create</em> this problem. They print money whenever they want. During the pandemic, the U.S. Federal Reserve expanded its balance sheet by more than <strong>$4 trillion</strong> in two years. And surprise, when you increase the supply of money without increasing goods and services, your dollars buy less.</p><p>Bitcoin flips the script. It has a hard cap of <strong>21 million coins</strong>. No politician, banker, or bureaucrat can &#8220;stimulate the economy&#8221; by pressing CTRL+P on the money printer. The rules are set in code, and everyone knows them.</p><p>Owning Bitcoin isn&#8217;t about getting rich quick. It&#8217;s about not getting silently robbed by inflation.</p><div><hr></div><h2>My Bank Radicalized Me (Thanks, Nickelodeon)</h2><p>Now, let me tell you how I went from &#8220;mildly curious about Bitcoin&#8221; to &#8220;fully convinced that the fiat system is broken.&#8221;</p><p>Picture this: I&#8217;m on vacation at the Nickelodeon resort in Mexico with my family. Think slime buckets, SpongeBob, endless kid chaos (and me sipping a margarita trying to relax).</p><p>While I&#8217;m there, I get an email finalizing the deposit I need to send to start construction on my house back home. No problem, right? I log into my bank, send the transfer, and go back to my drink. Easy.</p><p>Except it wasn&#8217;t.</p><p>A few hours later, I get a call from the bank: <strong>&#8220;Your transfer has been frozen. You&#8217;ll need to verify it in person.&#8221;</strong></p><p>In person. As in: &#8220;We see you&#8217;re in another country, but tough luck, show up at a branch back home with your ID or your money stays locked.&#8221;</p><p>Not only did they deny the transfer, they <strong>froze the funds entirely.</strong> Meaning I couldn&#8217;t use that money for <em>anything</em> else either. It was like my money went into purgatory because I dared to use it.</p><p>I explained I was on vacation. They didn&#8217;t care. So I had to wait until I got home a week later, then take off time from work (because of course banks close at 5 p.m.), march into a branch, and basically <em>plead my case.</em></p><p>Two forms of ID. An hour of questioning. Treated like I was committing fraud against&#8230; myself. Then they hit me with the kicker: <strong>&#8220;It&#8217;ll take up to 10 business days for us to review and release the funds.&#8221;</strong></p><p>Ten. Business. Days.</p><p>Meanwhile, my builder was twiddling his thumbs waiting to start construction. By the time the bank &#8220;approved&#8221; me to use my own money, the whole process had delayed my project by about a month.</p><p>Bitcoin? That transaction would&#8217;ve been finalized in <strong>10 minutes.</strong> No permission slips. No bank tellers. No SpongeBob lifeguarding my finances.</p><p>That was the moment I realized: the system isn&#8217;t designed to serve you. It&#8217;s designed to control you. Bitcoin fixes this.</p><div><hr></div><h2>Portability: The Money You Can Carry in Your Head</h2><p>Imagine trying to carry $100,000 across a border. With cash, you risk seizure. With gold, you need a security team. With a bank account, good luck if your country freezes capital outflows.</p><p>With Bitcoin, you can carry your wealth in your brain. Literally. Memorize a 12-word recovery phrase, and you could walk through any airport security checkpoint in the world with millions of dollars secured in your head.</p><p>This is why Bitcoin adoption has exploded in countries with unstable currencies. A recent report from <strong>Chainalysis</strong> found that countries like Nigeria, Vietnam, and Ukraine rank among the top in global crypto adoption, driven largely by people looking for a way out of broken financial systems.</p><p>When your local currency melts faster than ice cream in Cancun, portability isn&#8217;t a luxury, it&#8217;s survival.</p><div><hr></div><h2>Speed and Efficiency</h2><p>Let&#8217;s compare:</p><ul><li><p><strong>Wire Transfer (Domestic):</strong> 1&#8211;3 business days. Fees vary. Bank hours apply.</p></li><li><p><strong>Wire Transfer (International):</strong> 3&#8211;7 business days. Intermediary banks take a cut. Exchange rates apply.</p></li><li><p><strong>Bitcoin:</strong> 10 minutes average. 24/7. Global. Final settlement.</p></li></ul><p>And the kicker: in 2022, the <strong>Lightning Network</strong> (a Bitcoin scaling layer) processed over <strong>5 million payments per month</strong>, many of them settling instantly for less than a penny in fees. Compare that to Visa or Mastercard, which skim 2&#8211;3% off every transaction. Bitcoin makes your Starbucks payment faster and cheaper than the plastic in your wallet.</p><div><hr></div><h2>Energy: The Favorite Criticism</h2><p>You&#8217;ve probably heard the line: &#8220;But Bitcoin wastes so much energy!&#8221;</p><p>Here&#8217;s the reality: Bitcoin mining uses about <strong>120&#8211;140 terawatt hours per year</strong> (<a href="https://ccaf.io/cbnsi/cbeci">Cambridge Bitcoin Electricity Consumption Index</a>), roughly equivalent to the electricity consumption of Argentina. Sounds scary until you realize:</p><ul><li><p>Global air conditioning uses <strong>2,000+ TWh annually.</strong></p></li><li><p>Christmas lights in the U.S. alone consume more electricity than some small countries.</p></li><li><p>The traditional banking system consumes <strong>2&#8211;3 times more energy</strong> than Bitcoin when you account for data centers, ATMs, branches, and armored trucks (<a href="https://www.galaxydigital.io/insights/insights-bitcoin-energy-consumption/">Galaxy Digital Research</a>).</p></li></ul><p>The difference? Bitcoin is open, decentralized, and trending greener. Roughly <strong>59% of Bitcoin&#8217;s mining energy now comes from renewable sources</strong> (<a href="https://bitcoinminingcouncil.com/">Bitcoin Mining Council, 2023 Q4</a>).</p><p>So yes, it uses energy. But compared to the alternatives, it&#8217;s remarkably efficient.</p><div><hr></div><h2>Adoption: This Isn&#8217;t Fringe Anymore</h2><p>Here&#8217;s where it gets interesting:</p><ul><li><p>As of 2025, about <strong>106 million people worldwide own Bitcoin</strong> (<a href="https://crypto.com/research">Crypto.com Research</a>).</p></li><li><p>More than <strong>30,000 Bitcoin ATMs</strong> exist globally.</p></li><li><p>El Salvador made Bitcoin legal tender in 2021, and now more than <strong>75% of its population</strong> has used a Bitcoin wallet.</p></li><li><p>Major corporations like <strong>Tesla, MicroStrategy, and Block (Square)</strong> hold billions in Bitcoin on their balance sheets.</p></li><li><p>BlackRock, the largest asset manager in the world, now offers a <strong>Bitcoin ETF</strong>.</p></li></ul><p>In other words: this isn&#8217;t your weird cousin&#8217;s side hustle anymore. This is mainstream finance catching up.</p><div><hr></div><h2>Closing the Case</h2><p>Let&#8217;s wrap this up:</p><ul><li><p>Inflation eats your savings. Bitcoin doesn&#8217;t.</p></li><li><p>Banks act like your money isn&#8217;t yours. Bitcoin puts you in control.</p></li><li><p>Moving fiat is slow and expensive. Bitcoin is fast and borderless.</p></li><li><p>Portability makes it the ultimate global asset.</p></li><li><p>Adoption is growing faster than most people realize.</p></li></ul><p>At the end of the day, Bitcoin isn&#8217;t just an investment. It&#8217;s a lifeboat. And if the last few years have taught us anything, it&#8217;s that you don&#8217;t wait until the ship is sinking to look for one.</p><div><hr></div><p><em>Disclosure: This is not financial advice. Do your own research before investing. But also, seriously, don&#8217;t let SpongeBob guard your money.</em></p>]]></content:encoded></item></channel></rss>