PageSourceSearch

https://whatthefuckjusthappenedtoday.com/

html whatthefuckjusthappenedtoday.com collected 2026-09-24 15:22:49 UTC 78,774 bytes, 1,145 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5    
5<script>
6    /* Night printing resolver — runs before CSS so first paint is correct.
7       3-state: localStorage "wtfjht-theme" = "day" | "night" | absent (= AUTO, follow OS). */
8    (function () {
9      var KEY = 'wtfjht-theme', root = document.documentElement, mq = null;
10      function stored() {
11        var v = null;
12        try { v = localStorage.getItem(KEY); } catch (e) { return null; }
13        if (v === 'day' || v === 'night') return v;
14        if (v !== null) { try { localStorage.removeItem(KEY); } catch (e) {} }
15        return null;
16      }
17      function apply(pref) {
18        var night = pref ? pref === 'night' : !!(mq && mq.matches);
19        root.classList.add('theme-snap'); // suppress transitions: theme flips are instant
20        if (night) root.setAttribute('data-theme', 'night');
21        else root.removeAttribute('data-theme');
22        if (window.requestAnimationFrame) {
23          requestAnimationFrame(function () { requestAnimationFrame(function () { root.classList.remove('theme-snap'); }); });
24        } else { root.classList.remove('theme-snap'); }
25      }
26      try { mq = window.matchMedia('(prefers-color-scheme: dark)'); } catch (e) {}
27      function onOsChange() { if (stored() === null) apply(null); }
28      if (mq) {
29        if (mq.addEventListener) { mq.addEventListener('change', onOsChange); }
30        else if (mq.addListener) { mq.addListener(onOsChange); }
31      }
32      window.addEventListener('storage', function (e) {
33        if (e.key === KEY || e.key === null) { apply(stored()); }
34      });
35      window.WTFTheme = { KEY: KEY, stored: stored, apply: apply };
36      apply(stored());
37    })();
38    </script>
38
39    <meta name="viewport" content="width=device-width, initial-scale=1.0">
40    <meta name="theme-color" content="#000000">
41    <meta name="color-scheme" content="light dark">
42    
43    <!-- AnchorJS styles, pre-supplied WITHOUT its embedded icon font: the library
44         only injects its own <style> (incl. @font-face) if style.anchorjs is absent.
45         Icon is a text glyph via data-anchorjs-icon, so it never enters textContent
46         (share cards, selection copy stay clean). -->
47    <style class="anchorjs">.anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*:hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}</style>
48    <meta name="apple-mobile-web-app-title" content="WTFJHT" />
49
50    <!-- Preconnect to external origins for faster resource loading -->
51    <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
52    <link rel="dns-prefetch" href="https://www.googletagmanager.com">
53
54
55    <!-- Preload critical above-the-fold image -->
56    <link rel="preload" href="https://whatthefuckjusthappenedtoday.com/favicon.svg?v=3" as="image" type="image/svg+xml">
57
58    <link rel="stylesheet" href="https://whatthefuckjusthappenedtoday.com/styles.css?v=1790254453" type="text/css">
59    <link rel="manifest" href="https://whatthefuckjusthappenedtoday.com/manifest.json?v=3">
60    <link rel="icon" href="https://whatthefuckjusthappenedtoday.com/favicon.ico?v=3">
61    <link rel="icon" type="image/png" sizes="96x96" href="https://whatthefuckjusthappenedtoday.com/favicon-96x96.png?v=3">
62    <link rel="icon" type="image/png" sizes="32x32" href="https://whatthefuckjusthappenedtoday.com/favicon-32x32.png?v=3">
63    <link rel="icon" type="image/png" sizes="16x16" href="https://whatthefuckjusthappenedtoday.com/favicon-16x16.png?v=3">
64    <link rel="icon" type="image/svg+xml" href="https://whatthefuckjusthappenedtoday.com/favicon.svg?v=3">
65    <link rel="apple-touch-icon" sizes="180x180" href="https://whatthefuckjusthappenedtoday.com/apple-touch-icon.png?v=3" />
66    <link rel="alternate" type="application/rss+xml"  title="WTFJHT (RSS)"  href="https://whatthefuckjusthappenedtoday.com/rss.xml">
67    <link rel="alternate" type="application/atom+xml" title="WTFJHT (Atom)" href="https://whatthefuckjusthappenedtoday.com/atom.xml">
68    <link rel="alternate" type="application/feed+json" title="WTFJHT (JSON)" href="https://whatthefuckjusthappenedtoday.com/feed.json">
69
70    
71      <!-- Begin Jekyll SEO tag v2.8.0-wtfjht(WTFJHT Customized) -->
72<title>Political News for Normal People. | What The Fuck Just Happened Today?</title>
73<meta name="generator" content="Jekyll v3.10.0" />
74<meta property="og:title" content="Political News for Normal People." />
75<meta name="author" content="Matt Kiser" />
76<meta property="og:locale" content="en_US" />
77<meta name="description" content="Your essential guide to the shock and awe in national politics. A sane, once-a-day newsletter helping normal people make sense of the news." />
78<meta property="og:description" content="Your essential guide to the shock and awe in national politics. A sane, once-a-day newsletter helping normal people make sense of the news." />
79<link rel="canonical" href="https://whatthefuckjusthappenedtoday.com/" />
80<meta property="og:url" content="https://whatthefuckjusthappenedtoday.com/" />
81<meta property="og:site_name" content="What The Fuck Just Happened Today?" />
82<meta property="og:image" content="https://whatthefuckjusthappenedtoday.com/uploads/og-image.jpg" />
83<meta property="og:type" content="website" />
84<meta name="twitter:card" content="summary_large_image" />
85<meta property="twitter:image" content="https://whatthefuckjusthappenedtoday.com/uploads/og-image.jpg" />
86<meta property="twitter:title" content="Political News for Normal People." />
87<meta property="twitter:description" content="Your essential guide to the shock and awe in national politics. A sane, once-a-day newsletter helping normal people make sense of the news." />
88<meta name="twitter:site" content="@WTFJHT" />
89<meta name="twitter:creator" content="@matt_kiser" />
90<meta property="fb:admins" content="29904434" />
91<meta property="article:publisher" content="1415262761838827" />
92<meta property="fb:app_id" content="601457263382211" />
93<script type="application/ld+json">
94{"@context": "https://schema.org",
95"@type": "WebSite",
96"name": "What The Fuck Just Happened Today?",
97"url": "https://whatthefuckjusthappenedtoday.com",
98"description": "Your essential guide to the shock and awe in national politics. Read in moderation.",
99"potentialAction": {"@type": "SearchAction",
100"target": {"@type": "EntryPoint",
101"urlTemplate": "https://whatthefuckjusthappenedtoday.com/?q={search_term_string}"
102    },
103"query-input": "required name=search_term_string"
104  }}</script>
104
105<!-- End Jekyll SEO tag -->
106
107    
108    
109    <meta property="fb:pages" content="1415262761838827" />
110    <meta name="google-site-verification" content="ny31Ianz2HLvyY_ynQAoMvX8_F8asoIbuBo3PnnDbRo" />
111    
112    
112<script src="https://whatthefuckjusthappenedtoday.com/public/js/subscribe.js" defer></script>
vendor: 73 bytes, lines 112-114
112
113    
114    <script async src="https://www.googletagmanager.com/gtag/js?id=
114G-P3G02CXQXW
vendor: 16 bytes, lines 114-115
114"></script>
115    
115<script>
116      
vendor: 145 bytes, lines 116-119
116window.dataLayer = window.dataLayer || [];
117      function gtag(){dataLayer.push(arguments);}
118      gtag('js', new Date());
119      gtag('config', '
119G-P3G02CXQXW
vendor: 8 bytes, lines 119-120
119');
120    
120</script>
120
121    
121<script>
122      document.addEventListener('DOMContentLoaded', function() {
123        document.querySelectorAll('form[action*="list-manage.com/subscribe"]').forEach(function(form) {
124          form.addEventListener('submit', function(event) {
125            // public/js/subscribe.js preventDefaults this submit and fires sign_up
126            // itself once the worker confirms the address, so counting here too
127            // would count the addresses the worker rejects. Anything that still
128            // posts natively to Mailchimp is counted here, on intent.
129            if (event.defaultPrevented) return;
130            gtag('event', 'sign_up', {
131              // Split into the STANDARD method param on purpose: a custom param
132              // would need a dimension registered in the GA4 admin to be reportable.
133              method: /^\/unsubscribe(\/|$)/.test(window.location.pathname) ? 'newsletter-resubscribe' : 'newsletter'
134            });
135          });
136        });
137
138        // Member CTA click
139        var memberCta = document.querySelector('a.nav-cta[href*="membership"]');
140        if (memberCta) {
141          memberCta.addEventListener('click', function() {
142            if (typeof gtag === 'function') gtag('event', 'member_cta_click');
143          });
144        }
145
146        // Scroll depth tracking (25%, 50%, 75%, 100%)
147        var scrollThresholds = [25, 50, 75, 100];
148        var scrollFired = {};
149        function checkScrollDepth() {
150          var docHeight = document.documentElement.scrollHeight - window.innerHeight;
151          if (docHeight <= 0) return;
152          var percent = Math.round((window.scrollY / docHeight) * 100);
153          for (var i = 0; i < scrollThresholds.length; i++) {
154            var t = scrollThresholds[i];
155            if (percent >= t && !scrollFired[t]) {
156              scrollFired[t] = true;
157              if (typeof gtag === 'function') gtag('event', 'scroll_depth', { percent: t });
158            }
159          }
160        }
161        var scrollTimer;
162        window.addEventListener('scroll', function() {
163          clearTimeout(scrollTimer);
164          scrollTimer = setTimeout(checkScrollDepth, 150);
165        }, { passive: true });
166
167        // On This Day link clicks
168        var otdLinks = document.querySelectorAll('.historical-posts__item');
169        for (var oi = 0; oi < otdLinks.length; oi++) {
170          otdLinks[oi].addEventListener('click', function() {
171            var yearsEl = this.querySelector('.historical-posts__years');
172            var years = yearsEl ? parseInt(yearsEl.textContent) : 0;
173            if (typeof gtag === 'function') gtag('event', 'on_this_day_click', { years_ago: years });
174          });
175        }
176
177        // Read complete — fires once when bottom of post content is reached
178        var postContent = document.querySelector('.post-content');
179        if (postContent && window.IntersectionObserver) {
180          var sentinel = document.createElement('div');
181          sentinel.style.height = '1px';
182          postContent.appendChild(sentinel);
183          var readObserver = new IntersectionObserver(function(entries) {
184            if (entries[0].isIntersecting) {
185              if (typeof gtag === 'function') gtag('event', 'read_complete');
186              readObserver.disconnect();
187            }
188          }, { threshold: 1.0 });
189          readObserver.observe(sentinel);
190        }
191
192      });
193    </script>
193
194
195  </head>
196  <body>
197    <a href="#main-content" class="skip-link">Skip to main content</a>
198    <div class="container content">
199      <nav class="site-nav" aria-label="Main navigation">
200        <div class="nav-container">
201          <div class="nav-left">
202            <a href="https://whatthefuckjusthappenedtoday.com/" class="nav-home" aria-label="WTF Just Happened Today Home">
203              <img src="https://whatthefuckjusthappenedtoday.com/favicon.svg?v=3" alt="WTFJHT" class="nav-logo" width="32" height="32">
204            </a>
205            <ul class="nav-quick">
206              <li><a href="/2026/09/23/day-2073/">Latest</a></li>
207              <li><a href="/2026/09/22/day-2072/">Previous</a></li>
208            </ul>
209          </div>
210
211          <ul class="nav-links" role="list">
212            <li><a href="https://whatthefuckjusthappenedtoday.com/about/">About</a></li>
213            <li><a href="https://whatthefuckjusthappenedtoday.com/subscribe/">Newsletter</a></li>
214            <li><a href="https://whatthefuckjusthappenedtoday.com/membership/" class="nav-cta">Become a Member</a></li>
215          </ul>
216        </div>
217      </nav>
218
219      <header class="masthead">
220        <p class="masthead-title">
221          <a href="https://whatthefuckjusthappenedtoday.com/" title="What The Fuck Just Happened Today?">What The Fuck Just Happened Today?</a>
222        </p>
223        <p class="masthead-description">Your essential guide to the shock and awe in national politics. Read in moderation.</p>
224        <p class="masthead-meta">
225          Curated by <a href="https://whatthefuckjusthappenedtoday.com/author/matt-kiser/">Matt Kiser</a>
226        </p>
227
228        <div class="wtf-search" role="search">
229          <div class="outer-wrapper">
230            <div class="input-wrapper">
231              
232<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
233
234
235              <input type="text" class="algolia__input js-algolia__input" autocomplete="off" name="query" placeholder="Search articles..." aria-label="Search articles" />
236            </div>
237          </div>
238        </div>
239      </header>
240
241      
242
243      <main id="main-content">
244        <div class="wtf-search-results">
245          <div class="algolia__search-content js-algolia__search-content">
246            <h2 class="search-results__title">Search Results</h2>
247            <div class="posts algolia__results" aria-live="polite"></div>
248          </div>
249        </div>
250
251        <div class="algolia__initial-content js-algolia__initial-content">
252          <div class="posts">
253  
254  <article class="post"
255    data-post-url="/2026/09/23/day-2073/"
256    data-carousel-day="2073"
257    data-carousel-desc="“Doing the best that he can.”"
258    data-carousel-date="Sep 23, 2026"
259    data-carousel-midterms="2026-11-03"
260    data-carousel-presidential="2028-11-07"
261    data-carousel-tios="Iran vowed to fight “until our last breath” and “never bow our head or bend at the knee” to Trump’s demands; the Justice Department urged a federal judge to uphold Trump’s ban of CNN, MS NOW, and Politico from the White House, arguing that “access to the White House is a privilege – not a right”; the FBI was hacked and “very sensitive data” on nearly all agents and job applicants was stolen; 17 Democratic senators urged Trump to seek an AI agreement with China to establish “guardrails” around development; the first architect for Trump’s White House ballroom resigned after warning that the preliminary design violated building safety codes; Melania Trump said Trump is “doing the best that he can”; and 56% of Americans say the rule of law in the U.S. is weaker now than it was 10 years ago.">
262    
263      
264
265
266
267    
268
269    <div class="subscribe-box">
270  <h2 class="subscribe-box__title">A political newsletter for normal people.</h2>
271  <p class="lead">WTF Just Happened Today? is a sane, once-a-day newsletter helping normal people make sense of the news. Curated daily and delivered to 200,000+ people every afternoon around 3 pm Pacific.</p>
272  <div class="subscribe-form">
273  <form action="https://whatthefuckjusthappenedtoday.us7.list-manage.com/subscribe/post?u=104aa3abb9fec8b4d037ed51d&amp;id=9813b73b1a" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate data-subscribe-api="https://wtfjht-just-asking-questions.matt-kiser.workers.dev">
274    <div class="subscribe-form__row">
275      <label for="mce-EMAIL" class="sr-only">Email address</label>
276      <input type="email" value="" name="EMAIL" class="subscribe-form__input" id="mce-EMAIL" placeholder="Type your email..." autocomplete="email" required>
277      <input type="submit" value="Subscribe for free" name="subscribe" id="mc-embedded-subscribe" class="subscribe-form__button">
278    </div>
279    <div style="position:absolute;left:-5000px;" aria-hidden="true">
280      <input type="text" name="website" tabindex="-1" value="" autocomplete="off">
281      <input type="text" name="b_104aa3abb9fec8b4d037ed51d_9813b73b1a" tabindex="-1" value="" autocomplete="off">
282    </div><div class="cf-turnstile" data-sitekey="0x4AAAAAADAzC0xAFcUN12kn" data-appearance="interaction-only" data-execution="execute" data-callback="wtfjhtSubscribeToken" data-error-callback="wtfjhtSubscribeError" data-response-field-name="cf-turnstile-response"></div><p class="subscribe-form__trust" role="status" aria-live="polite">Free. No spam. Unsubscribe anytime.</p>
283  </form>
284</div>
285
286</div>
287    <hr>
288
289    
290<h1 class="post-title">
291  <a href="/2026/09/23/day-2073/">
292    Day 2073:
293    <span class="post-small">“Doing the best that he can.”</span></a>
294</h1>
295
296
297<div class="post-meta">
298  <div class="post-meta__main">
299    <div class="post-meta__details">
300      
301      <span class="post-meta__author">By <a href="/author/matt-kiser/">Matt Kiser</a></span><span class="post-meta__sep" aria-hidden="true">·</span>
302      
303      
304      <time class="post-meta__date" datetime="2026-09-23T14:05:27-07:00">Sep 23, 2026, 2:05pm PT</time>
305    </div>
306    <div class="post-meta__stats"><span>628&nbsp;words</span><span class="post-meta__sep" aria-hidden="true">·</span><span>3&#8209;min&nbsp;read</span><span class="post-meta__sep" aria-hidden="true">·</span><span>~14&nbsp;min&nbsp;saved</span>
307</div>
308  </div>
309  <div class="post-meta__actions">
310    
311
312    <div class="share-widget" data-share-url="https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" data-share-title="Day 2073: "Doing the best that he can."">
313  <button type="button" class="share-widget__trigger" aria-label="Share this article" aria-expanded="false">
314    
315<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"/><polyline points="16 6 12 2 8 6"/><line x1="12" x2="12" y1="2" y2="15"/></svg>
316
317 Share
318  </button>
319  <div class="share-widget__card" aria-hidden="true">
320    <button type="button" class="share-widget__option" data-action="copy">
321      <span class="share-widget__icon">
322<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
323
324</span>
325      <span class="share-widget__label">Copy link</span>
326    </button>
327    <button type="button" class="share-widget__option share-widget__native" data-action="native-share" hidden>
328      <span class="share-widget__icon">
329<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m22 2-7 20-4-9-9-4 20-7z"/><path d="M22 2 11 13"/></svg>
330
331</span>
332      <span class="share-widget__label">Send</span>
333    </button>
334    <a class="share-widget__option" href="/cdn-cgi/l/email-protection#fcc38f899e96999f88c1ba8e9391d9ceccaba8bad9ceccb6898f88d9ceccb49d8c8c99929998d9cecca893989d85d9cfbdd9ceccb89d85d9cecccecccbcfd9cfbdd9ceccd9ceceb89395929bd9cecc889499d9cecc9e998f88d9cecc88949d88d9cecc9499d9cecc9f9d92d2d9ceceda9d918cc79e939885c19488888c8fc6d3d38b949d888894999a899f9796898f88949d8c8c999299988893989d85d29f9391d3cecccecad3ccc5d3cecfd3989d85d1cecccbcfd3">
335      <span class="share-widget__icon">
336<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>
337
338</span>
339      <span class="share-widget__label">Email</span>
340    </a>
341    <a class="share-widget__option" href="https://wa.me/?text=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22%20https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
342      <span class="share-widget__icon">
343<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
344
345</span>
346      <span class="share-widget__label">WhatsApp</span>
347    </a>
348    <a class="share-widget__option" href="https://www.facebook.com/sharer/sharer.php?u=https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
349      <span class="share-widget__icon">
350<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
351
352</span>
353      <span class="share-widget__label">Facebook</span>
354    </a>
355    <a class="share-widget__option" href="https://bsky.app/intent/compose?text=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22%0A%0Ahttps://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
356      <span class="share-widget__icon">
357<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.882 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z"/></svg>
358
359</span>
360      <span class="share-widget__label">Bluesky</span>
361    </a>
362    <a class="share-widget__option" href="https://threads.com/intent/post?text=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22%20https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
363      <span class="share-widget__icon">
364<svg class="icon" width="18" height="18" viewBox="0 0 192 192" fill="currentColor"><path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"/></svg>
365
366</span>
367      <span class="share-widget__label">Threads</span>
368    </a>
369    <a class="share-widget__option" href="https://twitter.com/intent/tweet?text=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22&amp;url=https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
370      <span class="share-widget__icon">
371<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
372
373</span>
374      <span class="share-widget__label">X</span>
375    </a>
376    <a class="share-widget__option" href="https://mastodonshare.com/?text=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22&amp;url=https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
377      <span class="share-widget__icon">
378<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545Zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12v6.406Z"/></svg>
379
380</span>
381      <span class="share-widget__label">Mastodon</span>
382    </a>
383    <a class="share-widget__option" href="https://www.linkedin.com/sharing/share-offsite/?url=https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/" target="_blank" rel="noopener">
384      <span class="share-widget__icon">
385<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
386
387</span>
388      <span class="share-widget__label">LinkedIn</span>
389    </a>
390    <a class="share-widget__option" href="https://www.reddit.com/submit?url=https://whatthefuckjusthappenedtoday.com/2026/09/23/day-2073/&amp;title=Day%202073%3A%20%22Doing%20the%20best%20that%20he%20can.%22" target="_blank" rel="noopener">
391      <span class="share-widget__icon">
392<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"/></svg>
393
394</span>
395      <span class="share-widget__label">Reddit</span>
396    </a>
397    <button type="button" class="share-widget__option" data-action="print">
398      <span class="share-widget__icon">
399<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect width="12" height="8" x="6" y="14"/></svg>
400
401</span>
402      <span class="share-widget__label">Print</span>
403    </button>
404  </div>
405</div>
406
407    
408    <button type="button" class="carousel-toggle" aria-label="View as cards" title="View as cards">
409      
410<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="1" width="14" height="17.5" rx="3"/><path d="M8 22h8a3 3 0 0 0 3-3V8"/></svg>
411
412
413    </button>
414    
415    <div class="more-menu">
416      <button type="button" class="more-menu__trigger" aria-label="More options" aria-expanded="false">
417        
418<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="12" r="2"/><circle cx="5" cy="12" r="2"/><circle cx="19" cy="12" r="2"/></svg>
419
420
421      </button>
422      <div class="more-menu__card" aria-hidden="true">
423        <a class="more-menu__option" href="https://github.com/mkiser/WTFJHT/blob/master/_posts/2026-09-23-day-2073.markdown" target="_blank" rel="noopener">
424          <span class="more-menu__icon">
425<svg class="icon" width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/></svg>
426
427</span>
428          <span class="more-menu__label">Improve this article</span>
429        </a>
430        <a class="more-menu__option" href="https://github.com/mkiser/WTFJHT/commits/master/_posts/2026-09-23-day-2073.markdown" target="_blank" rel="noopener">
431          <span class="more-menu__icon">
432<svg class="icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/></svg>
433
434</span>
435          <span class="more-menu__label">Revision history</span>
436        </a>
437        
438        <button type="button" class="more-menu__option" data-action="open-tios">
439          <span class="more-menu__icon">
440<svg class="icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="1" width="14" height="17.5" rx="3"/><path d="M8 22h8a3 3 0 0 0 3-3V8"/></svg>
441
442</span>
443          <span class="more-menu__label">Today in One Sentence</span>
444        </button>
445        
446      </div>
447    </div>
448  </div>
449</div>
450
451
452
453    <hr>
454
455    <div class="post-content">
456        
457        <p class="tios">
458          <span class="tios__title"><span class="tios__prefix">Today in </span><strong>One Sentence</strong><span class="tios__dot">.</span></span>
459          <span class="tios__divider"></span>
460          <span class="tios__body">Iran vowed to fight “until our last breath” and “never bow our head or bend at the knee” to Trump’s demands<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> the Justice Department urged a federal judge to uphold Trump’s ban of CNN, MS NOW, and Politico from the White House, arguing that “access to the White House is a privilege – not a right”<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> the FBI was hacked and “very sensitive data” on nearly all agents and job applicants was stolen<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> 17 Democratic senators urged Trump to seek an AI agreement with China to establish “guardrails” around development<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> the first architect for Trump’s White House ballroom resigned after warning that the preliminary design violated building safety codes<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> Melania Trump said Trump is “doing the best that he can”<span class="sr-only">; </span> <span class="tios__pilcrow" aria-hidden="true">¶</span> and 56% of Americans say the rule of law in the U.S. is weaker now than it was 10 years ago<span class="tios__dot">.</span></span>
461        </p>
462        <hr>
463        
464      <p>1/ <strong>Iran vowed to fight “until our last breath” and “never bow our head or bend at the knee” to Trump’s demands</strong>. Iranian President Masoud Pezeshkian, speaking at the United Nations General Assembly, declared that Iran was ready to negotiate with the U.S., but wouldn’t give up its civilian nuclear program or accept what he called Washington’s “language of force.” His address came a day after Trump threatened to “annihilate” Iran if the nearly seven-month war ends without a deal. (<a href="https://www.nytimes.c
464om/2026/09/23/world/middleeast/iran-president-un-speech.html" target="_blank" rel="noopener" class="external">New York Times</a> / <a href="https://www.washingtonpost.com/world/2026/09/23/irans-president-address-un-general-assembly-after-trump-threatens-annihilation/" target="_blank" rel="noopener" class="external">Washington Post</a> / <a href="https://www.nbcnews.com/world/iran/irans-president-strikes-defiant-tone-un-trump-threats-rcna599372" target="_blank" rel="noopener" class="external">NBC News</a> / <a href="https://www.wsj.com/world/middle-east/irans-president-says-open-to-talks-but-wont-bow-to-u-s-35f44f25" target="_blank" rel="noopener" class="external">Wall Street Journal</a> / <a href="https://apnews.com/article/iran-pezeshkian-united-nations-general-assembly-trump-war-210d432587bb8dc2d7303ca4c8ea67b6" target="_blank" rel="noopener" class="external">Associated Press</a> / <a href="https://www.cnn.com/2026/09/23/world/live-news/united-nations-general-assembly-iran-trump-ukraine" target="_blank" rel="noopener" class="external">CNN</a>)</p>
465<p>2/ <strong>The Justice Department urged a federal judge to uphold Trump’s ban of CNN, MS NOW, and Politico from the White House, arguing that “access to the White House is a privilege – not a right.”</strong> The administration claimed the outlets violated “standards of professionalism and decorum” by “trafficking in verifiable falsehoods about national security and other issues, and publishing sensitive or classified information.” The White House cited reporting about the Iran war, U.S. munitions, and White House construction and security as justification for the ban. The Justice Department also asked the courts to overturn a 49-year-old precedent protecting journalists’ access to the White House.(<a href="https://apnews.com/article/news-media-ban-cnn-white-house-access-a3471270b8db89f6067c54528ed0a340" target="_blank" rel="noopener" class="external">Associated Press</a> / <a href="https://www.nytimes.com/2026/09/23/business/trump-cnn-politico-ms-now-ban.html" target="_blank" rel="noopener" class="external">New York Times</a> / <a href="https://www.washingtonpost.com/business/2026/09/23/trump-tells-judge-media-ban-is-necessary-protect-national-security/" target="_blank" rel="noopener" class="external">Washington Post</a> / <a href="https://abcnews.com/Politics/doj-defends-white-house-news-bans-access-privilege/story?id=136674586" target="_blank" rel="noopener" class="external">ABC News</a> / <a href="https://www.bloomberg.com/news/articles/2026-09-23/doj-tells-judge-trump-white-house-media-ban-is-lawful" target="_blank" rel="noopener" class="external">Bloomberg</a> / <a href="https://www.cnn.com/2026/09/22/politics/trump-admin-responds-press-lawsuit-white-house-access" target="_blank" rel="noopener" class="external">CNN</a> / <a href="https://www.politico.com/news/2026/09/23/trump-press-ban-brief" target="_blank" rel="noopener" class="external">Politico</a> / <a href="https://www.cbsnews.com/news/doj-defends-trump-white-house-media-ban/" target="_blank" rel="noopener" class="external">CBS News</a> / <a href="https://www.cnbc.com/2026/09/23/trump-white-house-ban-media-doj-cnn-msnow-politico.html" target="_blank" rel="noopener" class="external">CNBC</a> / <a href="https://www.nbcnews.com/politics/politics-news/trump-media-ban-white-house-access-privilege-national-security-doj-rcna599347" target="_blank" rel="noopener" class="external">NBC News</a>)</p>
466<p>3/ <strong>The FBI was hacked and “very sensitive data” on nearly all agents and job applicants was stolen</strong>, including names, home addresses, Social Security numbers, assignments and, in some cases, information about family members. The bureau hasn’t determined “the point of breach” and whether the information came from FBI systems or a third-party provider. ShinyHunters, meanwhile, demanded that the FBI revise or remove a May advisory describing the group as specializing in large-scale data breaches and extortion. (<a href="https://www.404media.co/we-hacked-the-fbi-hackers-say-they-have-data-on-all-fbi-employees/" target="_blank" rel="noopener" class="external">404 Media</a>
466 / <a href="https://www.nytimes.com/2026/09/23/us/politics/fbi-hack-shinyhunters-data.html" target="_blank" rel="noopener" class="external">New York Times</a> / <a href="https://techcrunch.com/2026/09/22/hacking-group-shinyhunters-claims-it-breached-the-fbi-stole-agents-and-applicants-data/" target="_blank" rel="noopener" class="external">TechCrunch</a> / <a href="https://www.politico.com/news/2026/09/22/shinyhunters-fbi-cyber-hack-01088494" target="_blank" rel="noopener" class="external">Politico</a> / <a href="https://apnews.com/article/fbi-criminal-hacking-group-jobs-website-beach-d627cbc6811344e7ad41e9f164cdf1c9" target="_blank" rel="noopener" class="external">Associated Press</a> / <a href="https://www.reuters.com/world/shinyhunters-hackers-say-they-breached-federal-bureau-investigation-no-immediate-2026-09-22/" target="_blank" rel="noopener" class="external">Reuters</a> / <a href="https://www.cnn.com/2026/09/22/politics/fbi-investigating-stolen-agents-data-hackers" target="_blank" rel="noopener" class="external">CNN</a> / <a href="https://abcnews.com/US/wireStory/fbi-investigates-apparent-breach-jobs-website-hackers-claim-136686678" target="_blank" rel="noopener" class="external">ABC News</a>)</p>
467<p>4/ <strong>Seventeen Democratic senators urged Trump to seek an AI agreement with China to establish “guardrails” around development</strong>. The senators argued that “AI technology is too powerful, and its risks too many, for the U.S. and China to forgo discussions,” and urged Trump to discuss slowing or pausing development with Chinese leader Xi Jinping. However, earlier this week, Trump declared that “I’m not going to stifle growth of anything that’s going to be bigger than the Industrial Revolution.” (<a href="https://www.politico.com/news/2026/09/23/dems-urge-trump-to-seek-ai-deal-with-china-01089253" target="_blank" rel="noopener" class="external">Politico</a> / <a href="https://www.washingtonpost.com/politics/2026/09/23/trump-xi-jinping-will-talk-about-ai-they-arent-close-deal/" target="_blank" rel="noopener" class="external">Washington Post</a>)</p>
468<p>5/ <strong>The first architect for Trump’s White House ballroom resigned after warning that the preliminary design violated building safety codes</strong>. Trump reportedly responded that no building codes apply to White House construction, because “I am the code.” White House records, however, show officials continued to discuss life-safety issues, like adequate emergency exits and fire-containment measures, after James McCrery II resigned. (<a href="https://www.washingtonpost.com/investigations/2026/09/23/i-am-code-trump-clashed-with-ballroom-architect-over-safety-issues/" target="_blank" rel="noopener" class="external">Washington Post</a>)</p>
469<ul>
470<li>
471<strong>Trump administration officials have discussed attaching Trump’s name to Ford’s Theatre</strong>. The federal historic site where Abraham Lincoln was assassinated is owned by the Interior Department, and its name is set by federal law, meaning a formal renaming would require an act of Congress. (<a href="https://www.ms.now/news/trump-fords-theatre-name-kennedy-center" target="_blank" rel="noopener" class="external">MS Now</a>)</li>
472</ul>
473<p>poll/ <strong>56% of Americans say the rule of law in the U.S. is weaker now than it was 10 years ago</strong>. 14% say it’s stronger. (<a href="https://www.gallup.com/analytics/697985/democracy-for-all.aspx" target="_blank" rel="noopener" class="external">Gallup</a>)</p>
474<p>poll/ <strong>33% of Americans approve of the job Trump is doing as president</strong>, while 63% disapprove. (<a href="https://www.gelliottmorris.com/p/2026-09-23-september-strength-in-numbers-verasight-poll-release" target="_blank" rel="noopener" class="external">Strength in Numbers</a>)</p>
475<p>poll/ <strong>49% of voters say they’ll support the Democratic candidate for Congress</strong>, compared with 41% who’d support a Republican. 68% call the economy “extremely important,” while 27% of Americans approve of Trump’s handling of the economy and 20% approve of his handling of inflation. Two-thirds say Trump has worsened economic conditions. (<a href="https://www.cnn.com/2026/09/23/politics/cnn-poll-donald-trump-economy-midterms-vis" target="_blank" rel="noopener" class="external">CNN</a>)</p>
476<p><strong>👍 Well, that’s fantastic: Melania Trump said Trump is “doing the best that he can.”</strong>
476 “He’s very focused. He has a lot on his plate,” she said, adding: “It’s very different what’s going on around the world now. But I think he’s doing the best that he can.” Trump, however, faces weak approval ratings and voter dissatisfaction over the Iran war, the economy, and other priorities ahead of the midterms. Melania added that Trump “works nonstop” and “has the most energy than anybody.” (<a href="https://www.axios.com/2026/09/23/trump-melania-president-fox-news" target="_blank" rel="noopener" class="external">Axios</a>)</p>
477<p><em>The 2026 midterms are in 41 days; the 2028 presidential election is in 776 days.</em></p>
478
479    </div>
480
481    
482    <div class="post-tags">
483      
484        
485        
486        
487        
488      <a href="/tags/iran/" class="post-tag">Iran</a>
489      
490        
491        
492        
493        
494      <a href="/tags/media/" class="post-tag">Media</a>
495      
496        
497        
498        
499        
500      <a href="/tags/white-house/" class="post-tag">White House</a>
501      
502        
503        
504        
505        
506      <a href="/tags/national-security/" class="post-tag">National Security</a>
507      
508    </div>
509    
510
511    <nav class="post-footer-nav" aria-label="Post navigation"><a href="/2026/09/22/day-2072/" class="post-footer-nav__link post-footer-nav__link--prev">
512    ← Previous: Day 2072
513  </a></nav>
514
515    
516    <div class="historical-posts" data-on-this-day='[{&quot;years_ago&quot;:7,&quot;direction&quot;:&quot;ago&quot;,&quot;title&quot;:&quot;Day 977&quot;,&quot;desc&quot;:&quot;\&quot;It doesn&apos;t matter.\&quot;&quot;,&quot;summary&quot;:&quot;&quot;,&quot;url&quot;:&quot;/2019/09/23/day-977/&quot;},{&quot;years_ago&quot;:6,&quot;direction&quot;:&quot;ago&quot;,&quot;title&quot;:&quot;Day 1343&quot;,&quot;desc&quot;:&quot;\&quot;Distressed.\&quot;&quot;,&quot;summary&quot;:&quot;&quot;,&quot;url&quot;:&quot;/2020/09/23/day-1343/&quot;},{&quot;years_ago&quot;:2,&quot;direction&quot;:&quot;ago&quot;,&quot;title&quot;:&quot;Day 1343&quot;,&quot;desc&quot;:&quot;\&quot;Balance of power.\&quot;&quot;,&quot;summary&quot;:&quot;&quot;,&quot;url&quot;:&quot;/2024/09/23/day-1343/&quot;},{&quot;years_ago&quot;:1,&quot;direction&quot;:&quot;ago&quot;,&quot;title&quot;:&quot;Day 1708&quot;,&quot;desc&quot;:&quot;\&quot;Stupid people.\&quot;&quot;,&quot;summary&quot;:&quot;&quot;,&quot;url&quot;:&quot;/2025/09/23/day-1708/&quot;}]'>
517      <h3 class="historical-posts__title">On this day</h3>
518      
519        <a href="https://whatthefuckjusthappenedtoday.com/2019/09/23/day-977/" class="historical-posts__item">
520          <span class="historical-posts__years">
521            7 years ago
522          </span>
523          <span class="historical-posts__headline">Day 977: "It doesn't matter."</span>
524        </a>
525      
526        <a href="https://whatthefuckjusthappenedtoday.com/2020/09/23/day-1343/" class="historical-posts__item">
527          <span class="historical-posts__years">
528            6 years ago
529          </span>
530          <span class="historical-posts__headline">Day 1343: "Distressed."</span>
531        </a>
532      
533        <a href="https://whatthefuckjusthappenedtoday.com/2024/09/23/day-1343/" class="historical-posts__item">
534          <span class="historical-posts__years">
535            2 years ago
536          </span>
537          <span class="historical-posts__headline">Day 1343: "Balance of power."</span>
538        </a>
539      
540        <a href="https://whatthefuckjusthappenedtoday.com/2025/09/23/day-1708/" class="historical-posts__item">
541          <span class="historical-posts__years">
542            1 year ago
543          </span>
544          <span class="historical-posts__headline">Day 1708: "Stupid people."</span>
545        </a>
546      
547      
548      <a href="/on-this-day/september-23/" class="historical-posts__see-all">See all September 23 posts &rarr;</a>
549    </div>
550    
551
552    
553
554
555  </article>
556</div>
557
558 
559
560
561
562        </div>
563      </main>
564      <footer class="footer">
565        <section class="ft-subscribe">
566          <h3 class="ft-subscribe__title">A political newsletter for normal people.</h3>
567          <p class="ft-subscribe__desc">A sane, once-a-day newsletter helping normal people make sense of the news. </p>
568          <div class="subscribe-form">
569  <form action="https://whatthefuckjusthappenedtoday.us7.list-manage.com/subscribe/post?u=104aa3abb9fec8b4d037ed51d&amp;id=9813b73b1a" method="post" id="mc-embedded-subscribe-form-ft" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate data-subscribe-api="https://wtfjht-just-asking-questions.matt-kiser.workers.dev">
570    <div class="subscribe-form__row">
571      <label for="mce-EMAIL-ft" class="sr-only">Email address</label>
572      <input type="email" value="" name="EMAIL" class="subscribe-form__input" id="mce-EMAIL-ft" placeholder="Type your email..." autocomplete="email" required>
573      <input type="submit" value="Subscribe for free" name="subscribe" id="mc-embedded-subscribe-ft" class="subscribe-form__button">
574    </div>
575    <div style="position:absolute;left:-5000px;" aria-hidden="true">
576      <input type="text" name="website" tabindex="-1" value="" autocomplete="off">
577      <input type="text" name="b_104aa3abb9fec8b4d037ed51d_9813b73b1a" tabindex="-1" value="" autocomplete="off">
578    </div><div class="cf-turnstile" data-sitekey="0x4AAAAAADAzC0xAFcUN12kn" data-appearance="interaction-only" data-execution="execute" data-callback="wtfjhtSubscribeToken" data-error-callback="wtfjhtSubscribeError" data-response-field-name="cf-turnstile-response"></div><p class="subscribe-form__trust" role="status" aria-live="polite">Free. No spam. Unsubscribe anytime.</p>
579  </form>
580</div>
581
582        </section>
583
584        <section class="ft-main">
585          <div class="ft-main-item">
586            <h3 class="ft-title">About</h3>
587            <ul>
588              <li><a href="https://whatthefuckjusthappenedtoday.com/about/">About</a></li>
589              <li><a href="https://whatthefuckjusthappenedtoday.com/faq/">FAQ</a></li>
590              <li><a href="https://whatthefuckjusthappenedtoday.com/corrections/">Corrections</a></li>
591              <li><a href="https://whatthefuckjusthappenedtoday.com/membership/">Membership</a></li>
592              <li><a href="https://wtfjht.memberful.com/account" target="_blank" rel="noopener">Member Sign-in</a></li>
593              <li><a href="https://cottonbureau.com/people/wtf-just-happened-today" target="_blank" rel="noopener">Merch</a></li>
594              
595            </ul>
596          </div>
597
598          <div class="ft-main-item">
599            <h3 class="ft-title">Resources</h3>
600            <ul>
601              <!-- <li><a href="https://whatthefuckjusthappenedtoday.com/podcasts/">Podcast</a></li> -->
602              <li><a href="https://whatthefuckjusthappenedtoday.com/subscribe/">Newsletter</a></li>
603              <li><a href="https://whatthefuckjusthappenedtoday.com/do-something/">Do Something.</a></li>
604              <li><a href="https://currentstatus.io/" target="_blank" rel="noopener">Current Status</a></li>
605              <li><a href="https://www.amazon.com/shop/matt_kiser?listId=MX8CHE4TE8JY" target="_blank" rel="noopener">Recommended Books</a></li>
606              <li><a href="https://whatthefuckjusthappenedtoday.com/big-grid/">The Big Grid.™</a></li>
607              <li><a href="https://whatthefuckjusthappenedtoday.com/big-board/">The Big Board.™</a></li>
608              <li><a href="https://whatthefuckjusthappenedtoday.com/big-dumb-dashboard/">The Big Dumb Dashboard.™</a></li>
609            </ul>
610          </div>
611
612          <div class="ft-main-item">
613            <h3 class="ft-title">Archives</h3>
614            <ul>
615              <li><a href="https://whatthefuckjusthappenedtoday.com/archive/">Archives</a></li>
616              <li><a href="https://whatthefuckjusthappenedtoday.com/trump-first-100-days/">Trump's First 100 Days</a></li>
617              <li><a href="https://whatthefuckjusthappenedtoday.com/biden-first-100-days/">Biden's First 100 Days</a></li>
618              <li><a href="https://whatthefuckjusthappenedtoday.com/trump-second-100-days/">Trump's Second 100 Days</a></li>
619            </ul>
620          </div>
621        </section>
622
623        <section class="ft-connect">
624          <div class="ft-row">
625            <span class="ft-row-label">Follow</span>
626            <ul class="ft-icon-list">
627              <li><a href="https://bsky.app/profile/whatthefuckjusthappenedtoday.com" target="_blank" rel="noopener" aria-label="Bluesky">
628<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.
628078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.882 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z"/></svg>
629
630</a></li>
631              <li><a href="https://www.threads.net/@wtfjht" target="_blank" rel="noopener" aria-label="Threads">
632<svg class="icon" width="18" height="18" viewBox="0 0 192 192" fill="currentColor"><path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"/></svg>
633
634</a></li>
635              <li><a href="https://x.com/wtfjht" target="_blank" rel="noopener" aria-label="Twitter/X">
636<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
637
638</a></li>
639              <li><a href="https://mastodon.social/@wtfjht" target="_blank" rel="noopener" aria-label="Mastodon">
640<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545Zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12v6.406Z"/></svg>
641
642</a></li>
643              <li><a href="https://www.instagram.com/wtfjht/" target="_blank" rel="noopener" aria-label="Instagram">
644<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
645
646</a></li>
647              <li><a href="https://www.facebook.com/wtfjht" target="_blank" rel="noopener" aria-label="Facebook">
648<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
649
650</a></li>
651              <li><a href="https://github.com/mkiser/WTFJHT" target="_blank" rel="noopener" aria-label="GitHub">
652<svg class="icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
653
654</a></li>
655            </ul>
656          </div>
657          <div class="ft-row">
658            <span class="ft-row-label">Feeds</span>
659            <ul class="ft-icon-list ft-feeds">
660              <li><a href="https://whatthefuckjusthappenedtoday.com/rss.xml">RSS</a></li>
661              <li><a href="https://whatthefuckjusthappenedtoday.com/atom.xml">Atom</a></li>
662              <li><a href="https://whatthefuckjusthappenedtoday.com/feed.json">JSON</a></li>
663            </ul>
664          </div>
665        </section>
666
667        <section class="ft-legal">
668          <p>
669            <a href="https://whatthefuckjusthappenedtoday.com/archive/" id="random-post-link" class="easter-egg" aria-label="Random post">©</a>
670            2017–2026
671            <a href="https://whatthefuckjusthappenedtoday.com/about/">WTF Just Happened? LLC</a>
672            · <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener">CC BY-NC-SA 4.0</a>
673            · <a href="https://whatthefuckjusthappenedtoday.com/license/">Content license &amp; trademarks</a>
674          </p>
675          <p class="theme-control" role="radiogroup" aria-label="Appearance">
676            <span class="theme-control__label">Appearance:</span>
677            <button type="button" role="radio" class="theme-control__btn" data-theme-pref="auto">Auto</button>
678            <span aria-hidden="true">·</span>
679            <button type="button" role="radio" class="theme-control__btn" data-theme-pref="day">Day</button>
680            <span aria-hidden="true">·</span>
681            <button type="button" role="radio" class="theme-control__btn" data-theme-pref="night">Night</button>
682          </p>
683        </section>
684      </footer>
685    </div>      
686      <!-- SEARCH (lazy-loaded on first interaction) -->
vendor: 115 bytes, lines 686-687
686
687      <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
687<script src="https://whatthefuckjusthappenedtoday.com/public/js/search.js?v=1790254453" defer></script>
687
688      
688<script src="https://whatthefuckjusthappenedtoday.com/public/js/randomPost.js?v=1790254453" defer></script>
688
689      
689<script src="https://whatthefuckjusthappenedtoday.com/public/js/theme-control.js?v=1790254453" defer></script>
689
690      <!-- PWA SERVICE WORKER -->
691      
691<script>
692        window.addEventListener('load', function() {
693          var sw = document.createElement('script');
694          sw.src = 'https://whatthefuckjusthappenedtoday.com/register-sw.js';
695          document.body.appendChild(sw);
696        });
697      </script>
697
698      
699      
700      
700<script src="https://whatthefuckjusthappenedtoday.com/public/js/anchor.min.js" defer></script>
700
701      
702      
703      
704      <!-- POST-ONLY SCRIPTS -->
705      
706      
706<script src="https://whatthefuckjusthappenedtoday.com/public/js/carousel.js" defer></script>
706
707      
708
709      
710      
711        <!-- ANCHORS FOR POSTS -->
712        
712<script>
713          document.addEventListener("DOMContentLoaded", function(event) {
714            anchors.options = {
715              placement: 'left',
716              visible: 'hover',
717              truncate: "36",
718              icon: '\u00a7'
719            };
720            anchors.add('.post-content > p, .post > p, .post li, .post blockquote p, .post-content h3');
721            anchors.remove('.post ol li, div.post.archive p.archive-year, div.post.archive ul.archive-months li, .tios, .masthead-title, li.header, .historical-posts, .historical-posts__title, footer, footer *');
722            
723            // Homepage: rewrite anchor hrefs to the canonical post permalink so copied
724            // links survive the next day's publish (a bare /#id rots within 24 hours)
725            var article = document.querySelector('article.post[data-post-url]');
726            if (article) {
727              var postUrl = article.getAttribute('data-post-url');
728              document.querySelectorAll('.anchorjs-link').forEach(function(a) {
729                a.href = postUrl + a.getAttribute('href');
730              });
731            }
732            
733          });
734        </script>
734
735
736      
737      
738
739      
740        <!-- Highlight-to-share -->
741        
741<script>
742        (function() {
743          var tooltip = null;
744          var selectedText = '';
745          var selectedUrl = '';
746          var mouseDown = false;
747          var interactingUntil = 0;
748          var timer = null;
749          var SHAPE = /^(STRONG|EM|SPAN|H[1-6])$/;
750          var LIST = /^(LI|UL|OL)$/;
751
752          // Create tooltip element
753          function createTooltip() {
754            var el = document.createElement('div');
755            el.className = 'share-tooltip';
756            el.innerHTML =
757              '<button type="button" data-action="copy">' +
758                '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>' +
759                'Copy' +
760              '</button>' +
761              '<button type="button" data-action="share">' +
762                '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"/><polyline points="16 6 12 2 8 6"/><line x1="12" x2="12" y1="2" y2="15"/></svg>' +
763                'Share' +
764              '</button>';
765            el.addEventListener('mousedown', function(e) {
766              e.preventDefault();
767              interactingUntil = Date.now() + 700;
768            });
769            el.addEventListener('touchstart', function() {
770              interactingUntil = Date.now() + 700;
771            }, { passive: true });
772            return el;
773          }
774
775          // Show tooltip above selection
776          function showTooltip(rect) {
777            if (!tooltip) {
778              tooltip = createTooltip();
779              document.body.appendChild(tooltip);
780            }
781
782            var top = rect.top + window.scrollY - tooltip.offsetHeight - 10;
783            if (rect.top - tooltip.offsetHeight - 10 < 0) {
784              top = rect.bottom + window.scrollY + 10;
785            }
786            top = Math.max(window.scrollY + 10, Math.min(top, window.scrollY + window.innerHeight - tooltip.offsetHeight - 10));
787            var left = rect.left + window.scrollX + (rect.width / 2) - (tooltip.offsetWidth / 2);
788
789            // Keep tooltip within viewport
790            left = Math.max(10, Math.min(left, window.innerWidth - tooltip.offsetWidth - 10));
791
792            tooltip.style.top = top + 'px';
793            tooltip.style.left = left + 'px';
794          }
795
796          // Hide tooltip
797          function hideTooltip() {
798            clearTimeout(timer);
799            if (tooltip && tooltip.parentNode) {
800              tooltip.parentNode.removeChild(tooltip);
801              tooltip = null;
802            }
803            selectedText = '';
804            selectedUrl = '';
805          }
806
807          function elementOf(node) {
808            return node.nodeType === 1 ? node : node.parentNode;
809          }
810
811          function childId(el, tag) {
812            for (var c = el.firstElementChild; c; c = c.nextElementSibling) {
813              if (c.tagName === tag && c.id) return c.id;
814              if (tag === 'STRONG' && c.tagName === 'SMALL') {
815                var inner = childId(c, 'STRONG');
816                if (inner) return inner;
817              }
818            }
819            return '';
820          }
821
822          function leadInId(el) {
823            if (el.tagName === 'P') return childId(el, 'STRONG');
824            if (el.tagName === 'H3') return childId(el, 'EM');
825            return '';
826          }
827
828          function pageAnchorId(start, scope) {
829            var node = elementOf(start);
830            while (node && node !== scope && node !== document.body) {
831              if (node.id && SHAPE.test(node.tagName)) return node.id;
832              var id = leadInId(node);
833              if (id) return id;
834              if (LIST.test(node.tagName)) {
835                var list = node;
836                while (list.parentNode && LIST.test(list.parentNode.tagName)) list = list.parentNode;
837                var prev = list.previousElementSibling;
838                for (var i = 0; prev && i < 4; i++, prev = prev.previousElementSibling) {
839                  id = leadInId(prev);
840                  if (id) return id;
841                  if (/^(P|H[1-6])$/.test(prev.tagName)) break;
842                }
843                return '';
844              }
845              node = node.parentNode;
846            }
847            return '';
848          }
849
850          function postAnchorId(start) {
851            var node = elementOf(start);
852            while (node && node !== document.body) {
853              if (node.id) return node.id;
854              node = node.parentNode;
855            }
856            return '';
857          }
858
859          function evaluate() {
860            if (mouseDown || Date.now() < interactingUntil) return;
861            var selection = window.getSelection();
862            var text = selection && selection.rangeCount ? selection.toString().trim() : '';
863
864            if (text.length > 5) {
865              var range = selection.getRangeAt(0);
866              var scope = elementOf(range.commonAncestorContainer);
867              var page = scope && scope.closest ? scope.closest('article.page') : null;
868              var post = page || !scope || !scope.closest ? null : scope.closest('.post-content');
869              var id = page ? pageAnchorId(range.startContainer, page) : (post ? postAnchorId(range.startContainer) : '');
870
871              if (page ? id : post) {
872                var article = scope.closest('article.post[data-post-url]');
873                var base = article ? article.getAttribute('data-post-url') : window.location.pathname;
874                selectedText = text;
875                selectedUrl = id ? window.location.origin + base + '#' + id : window.location.href;
876                showTooltip(range.getBoundingClientRect());
877                return;
878              }
879            }
880
881            hideTooltip();
882          }
883
884          function schedule(delay) {
885            clearTimeout(timer);
886            timer = setTimeout(evaluate, delay);
887          }
888
889          // Show toast
890          function showToast(message) {
891            var existing = document.querySelector('.share-toast');
892            if (existing) existing.remove();
893
894            var toast = document.createElement('div');
895            toast.className = 'share-toast';
896            toast.textContent = message;
897            document.body.appendChild(toast);
898            setTimeout(function() {
899              toast.classList.add('fade-out');
900              setTimeout(function() { toast.remove(); }, 300);
901            }, 1500);
902          }
903
904          // Handle text selection
905          document.addEventListener('mousedown', function() {
906            mouseDown = true;
907          });
908          document.addEventListener('touchend', function() {
909            mouseDown = false;
910          }, { passive: true });
911          window.addEventListener('blur', function() {
912            mouseDown = false;
913          });
914          document.addEventListener('mouseup', function(e) {
915            mouseDown = false;
916            // Ignore if clicking inside tooltip
917            if (e.target.closest('.share-tooltip')) return;
918            schedule(10);
919          });
920          document.addEventListener('selectionchange', function() {
921            if (mouseDown || Date.now() < interactingUntil) return;
922            schedule(120);
923          });
924
925          // Handle tooltip button clicks
926          document.addEventListener('click', function(e) {
927            var btn = e.target.closest('.share-tooltip button');
928            if (!btn) return;
929
930            var action = btn.dataset.action;
931            var url = selectedUrl;
932            var quotedText = '"' + selectedText + '"';
933            if (quotedText.length > 280) {
934              quotedText = '"' + selectedText.substring(0, 250) + '..."';
935            }
936            // Combine text + URL for better compatibility
937            var fullText = quotedText + '\n\n' + url;
938
939            if (typeof gtag === 'function') gtag('event', 'highlight_share', { method: action });
940
941            if (action === 'share' && navigator.share) {
942              navigator.share({
943                text: fullText
944              }).catch(function(err) {
945                if (err.name !== 'AbortError') console.log('Share failed:', err);
946              });
947            } else if (navigator.clipboard && navigator.clipboard.writeText) {
948              navigator.clipboard.writeText(fullText).then(function() {
949                showToast('Copied to clipboard!');
950              }).catch(function() {
951                prompt('Copy this:', fullText);
952              });
953            } else {
954              prompt('Copy this:', fullText);
955            }
956
957            interactingUntil = 0;
958            hideTooltip();
959            window.getSelection().removeAllRanges();
960          });
961
962          // Hide tooltip on scroll or escape
963          document.addEventListener('scroll', function() {
964            if (tooltip) schedule(120);
965          });
966          document.addEventListener('keydown', function(e) {
967            if (e.key === 'Escape') hideTooltip();
968          });
969        })();
970        </script>
970
971      
972
973    <!-- Dropdown menus (share widget & more menu) -->
974    
974<script>
975    (function() {
976      // Show native share button if supported
977      if (navigator.share) {
978        document.querySelectorAll('.share-widget__native').forEach(function(btn) {
979          btn.removeAttribute('hidden');
980        });
981      }
982
983      // Close all dropdown cards
984      function closeAllCards() {
985        document.querySelectorAll('.share-widget__card.is-open, .more-menu__card.is-open').forEach(function(card) {
986          card.classList.remove('is-open');
987          card.setAttribute('aria-hidden', 'true');
988          var trigger = card.previousElementSibling;
989          if (trigger) trigger.setAttribute('aria-expanded', 'false');
990        });
991      }
992
993      // Event delegation
994      document.addEventListener('click', function(e) {
995        // Toggle share card
996        var shareTrigger = e.target.closest('.share-widget__trigger');
997        if (shareTrigger) {
998          e.preventDefault();
999          var card = shareTrigger.nextElementSibling;
1000          var isOpen = card.classList.contains('is-open');
1001          closeAllCards();
1002          if (!isOpen) {
1003            card.classList.add('is-open');
1004            card.setAttribute('aria-hidden', 'false');
1005            shareTrigger.setAttribute('aria-expanded', 'true');
1006          }
1007          return;
1008        }
1009
1010        // Toggle more menu card
1011        var moreTrigger = e.target.closest('.more-menu__trigger');
1012        if (moreTrigger) {
1013          e.preventDefault();
1014          var card = moreTrigger.nextElementSibling;
1015          var isOpen = card.classList.contains('is-open');
1016          closeAllCards();
1017          if (!isOpen) {
1018            card.classList.add('is-open');
1019            card.setAttribute('aria-hidden', 'false');
1020            moreTrigger.setAttribute('aria-expanded', 'true');
1021          }
1022          return;
1023        }
1024
1025        // Open TIOS carousel
1026        var tiosBtn = e.target.closest('[data-action="open-tios"]');
1027        if (tiosBtn) {
1028          e.preventDefault();
1029          closeAllCards();
1030          if (typeof openTiosCarousel === 'function') {
1031            try { openTiosCarousel(0); } catch (err) { console.error('TIOS carousel error:', err); }
1032          }
1033          return;
1034        }
1035
1036        // Copy link
1037        var copyBtn = e.target.closest('.share-widget [data-action="copy"]');
1038        if (copyBtn) {
1039          e.preventDefault();
1040          if (typeof gtag === 'function') gtag('event', 'share_widget', { method: 'copy' });
1041          var widget = copyBtn.closest('.share-widget');
1042          var url = widget.dataset.shareUrl;
1043          navigator.clipboard.writeText(url).then(function() {
1044            var span = copyBtn.querySelector('.share-widget__label');
1045            var original = span.textContent;
1046            span.textContent = 'Copied!';
1047            setTimeout(function() { span.textContent = original; }, 1500);
1048          }).catch(function() {
1049            prompt('Copy this link:', url);
1050          });
1051          return;
1052        }
1053
1054        // Native share
1055        var nativeShareBtn = e.target.closest('[data-action="native-share"]');
1056        if (nativeShareBtn && navigator.share) {
1057          e.preventDefault();
1058          if (typeof gtag === 'function') gtag('event', 'share_widget', { method: 'native' });
1059          var widget = nativeShareBtn.closest('.share-widget');
1060          var url = widget.dataset.shareUrl;
1061          var title = widget.dataset.shareTitle || document.title;
1062          navigator.share({ title: title, url: url }).then(function() {
1063            closeAllCards();
1064          }).catch(function(err) {
1065            // User cancelled or error - silently ignore
1066            if (err.name !== 'AbortError') console.log('Share failed:', err);
1067          });
1068          return;
1069        }
1070
1071        // Social share link clicks
1072        var shareOption = e.target.closest('.share-widget__card a.share-widget__option');
1073        if (shareOption) {
1074          var label = shareOption.querySelector('.share-widget__label');
1075          if (typeof gtag === 'function') gtag('event', 'share_widget', { method: label ? label.textContent.toLowerCase() : 'social' });
1076        }
1077
1078        // Print
1079        var printBtn = e.target.closest('[data-action="print"]');
1080        if (printBtn) {
1081          e.preventDefault();
1082          if (typeof gtag === 'function') gtag('event', 'share_widget', { method: 'print' });
1083          closeAllCards();
1084          window.print();
1085          return;
1086        }
1087
1088        // Close cards when clicking outside
1089        if (!e.target.closest('.share-widget') && !e.target.closest('.more-menu')) {
1090          closeAllCards();
1091        }
1092      });
1093
1094      // Close on escape key
1095      document.addEventListener('keydown', function(e) {
1096        if (e.key === 'Escape') closeAllCards();
1097      });
1098
1099      // Random post (footer easter egg); falls back to /archive/ if the JS failed to load
1100      var rnd = document.getElementById('random-post-link');
1101      if (rnd) rnd.addEventListener('click', function (e) {
1102        if (typeof randomPost === 'function') { e.preventDefault(); randomPost(); }
1103      });
1104
1105    })();
1106    </script>
1106
1107
1108    <!-- Keyboard navigation: j/Right = newer, k/Left = older -->
1109    
1109<script>
1110    (function() {
1111      document.addEventListener('keydown', function(e) {
1112        // Ignore if user is typing in an input
1113        if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA' || e.target.isContentEditable) {
1114          return;
1115        }
1116
1117        if (document.body.classList.contains('carousel-open')) return;
1118
1119        // Get nav links for homepage navigation
1120        var navLinks = document.querySelector('.nav-quick');
1121        var latestLink = navLinks ? navLinks.querySelector('a:first-of-type') : null;
1122        var prevLink = navLinks ? navLinks.querySelectorAll('a')[1] : null;
1123
1124        if (e.key === 'j' || e.key === 'ArrowRight' || e.key === 'k' || e.key === 'ArrowLeft') {
1125          if (typeof gtag === 'function') gtag('event', 'keyboard_nav');
1126        }
1127
1128        if (e.key === 'j' || e.key === 'ArrowRight') {
1129          // j/Right = go to newer post
1130          
1131          if (latestLink) window.location.href = latestLink.href;
1132          
1133        } else if (e.key === 'k' || e.key === 'ArrowLeft') {
1134          // k/Left = go to older post
1135          
1136          if (prevLink) window.location.href = prevLink.href;
1137          
1138        }
1139      });
1140    })();
1141    </script>
1141
1142
1143  
1143<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"4fc0bdeab84b4e5ca656c4c0b31de3ac","r":1,"spa":2}' crossorigin="anonymous"></script>
1143
1144</body>
1145</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.