<rss version="2.0">
  <channel>
    <title>Web Whimsy on Nic Babarskis</title>
    <link>https://nic.babarskis.blog/categories/web-whimsy/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Fri, 02 Oct 2026 16:07:56 -0400</lastBuildDate>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/10/02/i-think-this-fortune-comes.html</link>
      <pubDate>Fri, 02 Oct 2026 16:07:56 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/10/02/i-think-this-fortune-comes.html</guid>
      <description>&lt;p&gt;📷 I think this fortune comes across as more foreboding than intended.&lt;/p&gt;
 &lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/img-3261.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;Auto-generated description: A fortune cookie slip reads, A surprising encounter will leave a lasting impact.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/09/13/i-made-an-extremely-niche.html</link>
      <pubDate>Sun, 13 Sep 2026 22:38:05 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/09/13/i-made-an-extremely-niche.html</guid>
      <description>&lt;p&gt;I made an extremely niche meme about The Christian Post &lt;a href=&#34;https://web.archive.org/web/20260912075459/https://www.christianpost.com/voices/christian-nationalism-already-failed-america-once.html&#34;&gt;publishing an opinion piece &lt;/a&gt; condemning Christian Nationalism. Worth noting this was the default position of the politics editor they &lt;a href=&#34;https://medium.com/arc-digital/how-the-christian-post-sold-its-soul-for-trump-4294662f7781&#34;&gt;cancelled&lt;/a&gt; half a decade ago.&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/99ea7b228e.jpg&#34; width=&#34;501&#34; height=&#34;500&#34; alt=&#34;&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/09/09/no-mans-sky-releasing-yet.html</link>
      <pubDate>Wed, 09 Sep 2026 14:57:20 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/09/09/no-mans-sky-releasing-yet.html</guid>
      <description>&lt;p&gt;No Man&amp;rsquo;s Sky releasing yet another feature rich FREE update. Good god, will it ever end?&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=inZfjVQxC3o&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;inZfjVQxC3o&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/inZfjVQxC3o/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=inZfjVQxC3o&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/18/the-michigan-secretary-of-states.html</link>
      <pubDate>Tue, 18 Aug 2026 13:12:05 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/18/the-michigan-secretary-of-states.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.newsblur.com/newsletters/story/10296204:e074ec&#34;&gt;The Michigan Secretary of State&amp;rsquo;s Office has released the &amp;lsquo;I voted&amp;rsquo; sticker contest winners for the November 2026 election.&lt;/a&gt; Delightful.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/13/i-dont-know-what-else.html</link>
      <pubDate>Thu, 13 Aug 2026 18:15:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/13/i-dont-know-what-else.html</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t know what else to say about this other than this video is basically just thumbing through my CD carrying case circa 2008.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=4Bsjf3z2NJ4&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;4Bsjf3z2NJ4&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/4Bsjf3z2NJ4/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=4Bsjf3z2NJ4&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/13/pyrotechnics-have-been-a-theme.html</link>
      <pubDate>Thu, 13 Aug 2026 10:08:18 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/13/pyrotechnics-have-been-a-theme.html</guid>
      <description>&lt;p&gt;Pyrotechnics have been a theme for this month&amp;rsquo;s &lt;a href=&#34;https://miniature-calendar.com/2026/08/&#34;&gt;Miniature Calendars:&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/e27fadad02.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;A miniature diorama by Tatsuya Tanaka for August 1st, 2026. Set against a pitch-black night sky, three elaborate firework bursts are created from various shapes of dry pasta—fusilli spirals, conchiglie shells, and rotelle wagon wheels—mounted on long, wavy pasta stems. Below, a tiny miniature couple stands holding hands between two green bushes on a dark horizon, looking up in awe at the pasta fireworks display.&#34;&gt;  
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/f97af75939.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;A superhero-themed miniature diorama by Tatsuya Tanaka for August 8th, 2026. Five colorful plastic clothespins—white, blue, red, yellow, and green—are lined up atop rugged black volcanic rock, posed like a classic Sentai or Power Rangers hero team. Behind them, vibrant, translucent orange and red flame effects create a dramatic, fiery explosion backdrop.&#34;&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/d9a1e5a287.jpg&#34; width=&#34;600&#34; height=&#34;600&#34; alt=&#34;A miniature diorama by Tatsuya Tanaka for August 9th, 2026. Against a dark black background, two glass citrus squeezers and bright yellow lemon slices are arranged in the sky to resemble sparkling, illuminated fireworks. At the bottom, a tiny family figurine set—two parents and two children—sits and stands between two miniature trees, gazing up at the glowing lemon and glass display.&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/11/summer-marigolds.html</link>
      <pubDate>Tue, 11 Aug 2026 07:42:56 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/11/summer-marigolds.html</guid>
      <description>&lt;p&gt;📷 Summer Marigolds&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/ad77af6891.jpg&#34; width=&#34;450&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/10/i-cant-think-of-another.html</link>
      <pubDate>Mon, 10 Aug 2026 14:38:18 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/10/i-cant-think-of-another.html</guid>
      <description>&lt;p&gt;I can&amp;rsquo;t think of another piece of media or a tech related product that I&amp;rsquo;ve one-time purchased that has received as much substantive continued support and ongoing improvement as &lt;em&gt;No Man&amp;rsquo;s Sky.&lt;/em&gt;&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=c-KoLySxccY&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;c-KoLySxccY&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/c-KoLySxccY/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=c-KoLySxccY&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/08/03/theyre-featuring-a-ukrainian-dish.html</link>
      <pubDate>Mon, 03 Aug 2026 20:45:15 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/08/03/theyre-featuring-a-ukrainian-dish.html</guid>
      <description>&lt;p&gt;🇱🇹 🇺🇦They&amp;rsquo;re featuring a Ukrainian dish here, but the Lithuanian half of me is excited to see that cabbage and root-based soups are having a moment. Now they just need some deep fried dark and dense rye bread smothered in cheese.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=7OJ-O5rmKrY&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;7OJ-O5rmKrY&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/7OJ-O5rmKrY/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=7OJ-O5rmKrY&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/31/star-trek-tng-theme-but.html</link>
      <pubDate>Fri, 31 Jul 2026 21:07:28 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/31/star-trek-tng-theme-but.html</guid>
      <description>&lt;p&gt;Star Trek: TNG Theme but the theme is coming from the Enterprise-D:&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=XPuFItRTxdw&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;XPuFItRTxdw&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/XPuFItRTxdw/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=XPuFItRTxdw&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/25/right-now-my-favorite-i.html</link>
      <pubDate>Sat, 25 Jul 2026 17:30:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/25/right-now-my-favorite-i.html</guid>
      <description>&lt;p&gt;For the moment, my favorite &lt;em&gt;&amp;ldquo;I want to hop into a browser window and find a quick distraction&amp;rdquo;&lt;/em&gt; location is the &amp;lsquo;For You&amp;rsquo; page of &lt;a href=&#34;https://grain.social/&#34;&gt;grain.social&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/20/watch-this-volkswagen-get-glazed.html</link>
      <pubDate>Mon, 20 Jul 2026 06:45:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/20/watch-this-volkswagen-get-glazed.html</guid>
      <description>&lt;p&gt;Watch this Volkswagen get glazed like a Krispy Kreme donut.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=JWoBr88vND4&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;JWoBr88vND4&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/JWoBr88vND4/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=JWoBr88vND4&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/19/heres-a-delightful-and-calm.html</link>
      <pubDate>Sun, 19 Jul 2026 22:32:28 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/19/heres-a-delightful-and-calm.html</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a delightful and calm video of a nonindustrial farmer walking you through the process of turning flax into linen going from seed to sewing if you will.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=3JKhhtoe9v4&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;3JKhhtoe9v4&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/3JKhhtoe9v4/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=3JKhhtoe9v4&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/14/they-can-take-our-cold.html</link>
      <pubDate>Tue, 14 Jul 2026 19:59:14 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/14/they-can-take-our-cold.html</guid>
      <description>&lt;p&gt;They may take our cold beet soup but they can never take our freedom 🇱🇹🇱🇹🇱🇹.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/cf97fedf10.jpg&#34; alt=&#34;A screenshot from Reddit of a New York Times picture of a bowl of bright pink Lithuanian chilled soup, topped with a halved boiled egg, diced vegetables, and fresh herbs, is shown. The NYtimes caption erroneously labels it a Polish chilled soup. The Reddit poster comments “The New York Times is trying to start a war between Poland and Lithuania. &#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/13/its-time-for-corn-sweat.html</link>
      <pubDate>Mon, 13 Jul 2026 22:00:53 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/13/its-time-for-corn-sweat.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.wkar.org/knight-center-for-environmental-journalism/2026-07-10/its-time-for-corn-sweat-as-michigan-hits-mid-summer&#34;&gt;It&amp;rsquo;s time for &amp;lsquo;corn sweat&amp;rsquo; as Michigan hits mid-summer.&lt;/a&gt;  Let&amp;rsquo;s gooo! 🌞🌽💦🇺🇸&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/13/media-has-a-story-out.html</link>
      <pubDate>Mon, 13 Jul 2026 10:51:31 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/13/media-has-a-story-out.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.404media.co/these-are-the-worst-chatgpt-flyers-youve-sent-us/&#34;&gt;404 Media has a story out today&lt;/a&gt; that is a compilation of unhinged AI fliers and posters for businesses or other community events. It&amp;rsquo;s getting wild out there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/dd8f5c0030.jpg&#34; alt=&#34;A French menu poster titled &amp;ldquo;JUICE TIME&amp;rdquo; that shows clear signs of being AI-generated despite having legible text. The layout is divided into three sections: a dine-in menu (&amp;ldquo;SUR PLACE&amp;rdquo;), a takeaway menu (&amp;ldquo;À EMPORTER&amp;rdquo;), and a tea section (&amp;ldquo;DU THÉ AFGHANS&amp;rdquo;). AI generation artifacts are visible throughout the composition: the header &amp;ldquo;DU THÉ AFGHANS&amp;rdquo; contains a grammatical error, mixing singular and plural forms; the ornate metallic teapots and tea glasses at the bottom feature asymmetrical, melting filigree patterns that lack structural logic; the fruits have a hyper-glossy, plastic texture, with the central avocado pit appearing to float unnaturally over the flesh; and the liquid splashes in the top corners exhibit impossible physics, blending seamlessly into the solid fruit pieces.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/cleanshot-2026-07-09-at-03.25.342x.png&#34; alt=&#34;A &amp;ldquo;COMING SOON&amp;rdquo; advertisement flyer for a restaurant named &amp;ldquo;MEXIBITES FOOD AND BAKERY&amp;rdquo; featuring a central food illustration with distinct signs of AI generation. While the main text is clear, the food bowl contains several telltale AI artifacts: the orange rice has a highly uniform, fuzzy texture resembling a mossy carpet rather than individual grains; the sliced green and red chili peppers floating on the beans are rendered as mathematically perfect, hollow plastic loops and O-rings lacking organic variety; the lime wedges in the top-left are oddly geometric, with one piece morphing unnaturally into a solid green leaf-like shape; and the logo at the bottom features an impossible geometry where a cooking fork&amp;rsquo;s handle melts directly into a metallic grill frame underneath a floating, neon-orange doughnut.&#34;&gt;&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/29c2e11097.jpg&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/10/hello-there.html</link>
      <pubDate>Fri, 10 Jul 2026 10:42:03 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/10/hello-there.html</guid>
      <description>&lt;p&gt;📷 Hello There.&lt;/p&gt;
 &lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/0b9b716ff5.jpg&#34;&gt;  
 &lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/8b419e18ea.jpg&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/07/i-havent-seen-a-movie.html</link>
      <pubDate>Tue, 07 Jul 2026 21:07:14 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/07/i-havent-seen-a-movie.html</guid>
      <description>&lt;p&gt;I haven&amp;rsquo;t seen a movie in theaters yet this year, but Coyote vs. ACME might get me there.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=H-43VeYGiPM&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;H-43VeYGiPM&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/H-43VeYGiPM/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=H-43VeYGiPM&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/07/building-on-a-post-from.html</link>
      <pubDate>Tue, 07 Jul 2026 10:15:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/07/building-on-a-post-from.html</guid>
      <description>&lt;p&gt;📷 Building on a post from yesterday, I&amp;rsquo;m not the only person in my household enjoying the summer bloom.&lt;/p&gt;
&lt;div class=&#34;microblog_collection&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/63402499ff-m.jpg&#34; alt=&#34;A person wearing a light blue outfit is sitting and hugging their knees while perched on a branch surrounded by lush green leaves in a tree.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/63402499ff-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/2ef6103368-m.jpg&#34; alt=&#34;A young child is standing on a brick pathway near a garden filled with blooming pink and white flowers in front of a blue house.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/2ef6103368-xl.jpg&#34;&gt;&lt;/div&gt;  
&lt;blockquote class=&#34;quoteback&#34; data-author=&#34;Nic Babarskis&#34; data-avatar=&#34;https://micro.blog/thebigbabooski/avatar.jpg&#34; cite=&#34;https://nic.babarskis.blog/2026/07/06/the-midsummer-bloom-is-in.html&#34;&gt;
&lt;p&gt;📷 The midsummer bloom is in full swing&lt;/p&gt;
&lt;img src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fnic.babarskis.blog%2Fuploads%2F2026%2F62975a6023.jpg&#34; width=&#34;450&#34; height=&#34;600&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
&lt;footer&gt;Nic Babarskis &lt;cite&gt;&lt;a href=&#34;https://nic.babarskis.blog/2026/07/06/the-midsummer-bloom-is-in.html&#34; class=&#34;u-in-reply-to&#34;&gt;https://nic.babarskis.blog/2026/07/06/the-midsummer-bloom-is-in.html&lt;/a&gt;&lt;/cite&gt;&lt;/footer&gt;
&lt;/blockquote&gt;&lt;script src=&#34;https://cdn.micro.blog/quoteback.js&#34;&gt;&lt;/script&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/07/01/a-new-month-marked-through.html</link>
      <pubDate>Wed, 01 Jul 2026 07:30:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/07/01/a-new-month-marked-through.html</guid>
      <description>&lt;p&gt;A new month marked through &lt;a href=&#34;https://miniature-calendar.com&#34;&gt;miniature-calendar.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260701&#34;&gt;Pencil Barrel Sauna:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/07/260701wed.jpg&#34; alt=&#34;A miniature diorama by Tatsuya Tanaka titled &amp;ldquo;Pencil Barrel Sauna.&amp;rdquo; A collection of natural wood pencils (by MUJI) are arranged side-by-side horizontally to construct the cylindrical, rustic wooden frame of an outdoor barrel sauna. Tiny 1/64 scale figurines of people in towels and swimwear are depicted relaxing inside and lounging outside the pencil-crafted structure. The scene is cleanly shot against a bright background, with the calendar text at the bottom reading &amp;ldquo;MINIATURE LIFE by Tatsuya Tanaka - July 1st, 2026 -&amp;rdquo;.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/28/143018.html</link>
      <pubDate>Sun, 28 Jun 2026 14:30:18 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/28/143018.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mastodon.social/@publicdomainrev&#34;&gt;Public Domain Review&amp;rsquo;s&lt;/a&gt; (@publicdomainrev@mastodon.social) &lt;a href=&#34;https://publicdomainreview.org/essay/our-mortal-waltz-the-dance-of-death-across-centuries&#34;&gt;Sunday Read&lt;/a&gt; this week features depictions of Cholera and infrastructure failure. Maybe in the face of defunding public health and deregulation we should dust off some of these prints.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/default.jpg&#34; alt=&#34;A detailed black-and-white woodcut print depicting a chaotic scene inside a ballroom. In the center stands Death, personified as a tall, robed skeleton who holds two long human bones together as if playing a violin. On the floor around him lie the collapsed, lifeless bodies of three masquerade ball attendees still dressed in their festive clothing. In the upper-left background, a band of musicians holding brass instruments flees the room in terror. In the background to the right, a grim figure representing Cholera sits ominously on a set of stairs, dressed in an exotic Egyptian-style costume.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://pdr-assets.b-cdn.net/essays/our-mortal-waltz-the-dance-of-death-across-centuries/10-2739458-maximum-edit.jpeg&#34; alt=&#34;A dramatic, high-contrast black-and-white composite illustration depicting a machine-age &amp;ldquo;Dance of Death&amp;rdquo; through dual transportation disasters. On one side, a colossal skeleton crouches beneath a fractured railway bridge, tearing up the tracks with its bare hands and sending a steam locomotive plunging vertically into an abyss of jagged wreckage and thick smoke. On the other side, amid a chaotic web of dark ink lines, a grinning skeleton emerges from the twisted, overturned debris of a violent, early 20th-century automobile crash, highlighting the fatal toll of modern industrial progress.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/25/the-bsky-account-that-made.html</link>
      <pubDate>Thu, 25 Jun 2026 11:05:06 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/25/the-bsky-account-that-made.html</guid>
      <description>&lt;p&gt;The bsky account that made early accurate predictions about what was going to happen to the reflecting pool RE paint peeling and algae blooms is back with an updated set of predictions. &lt;a href=&#34;https://bsky.app/profile/monarchdiaries.bsky.social/post/3mons3xjuu22z&#34;&gt;It&amp;rsquo;s like old-school 538, but for material science and microbiology. &lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/23/if-you-love-music-music.html</link>
      <pubDate>Tue, 23 Jun 2026 19:01:15 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/23/if-you-love-music-music.html</guid>
      <description>&lt;p&gt;If you love music, music history, or musical artifacts you should check out–and considering contributing too–the &lt;a href=&#34;https://www.michigan.gov/libraryofmichigan/about/make-a-gift/mimusic&#34;&gt;MI Music Experience.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.michigan.gov/libraryofmichigan/-/media/Project/Websites/libraryofmichigan/About-The-Library/Make-A-Gift/Music/MIMusicExperience_F.png?rev=861fe1ebb86443ef9baa44a4128bff57&amp;amp;hash=F8D98C065ABAC6FEDF2B8BE4F049BD1A&#34; alt=&#34;A graphic logo for &amp;ldquo;MI MUSIC EXPERIENCE&amp;rdquo; styled as a retro automobile radio faceplate. The outer frame is light blue-grey with horizontal grille lines, flanked by two circular knobs on the left and right, and five white rectangular preset buttons along the bottom. The central black display window features the text &amp;ldquo;MI&amp;rdquo; and &amp;ldquo;MUSIC&amp;rdquo; in bold white capital letters. They are separated by a white silhouette map of the state of Michigan, which has a vertical orange radio-tuning needle running through it. Below this, the word &amp;ldquo;EXPERIENCE&amp;rdquo; is written with small vertical tick marks between each letter.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/21/wondering-about-steampunk-but-for.html</link>
      <pubDate>Sun, 21 Jun 2026 10:00:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/21/wondering-about-steampunk-but-for.html</guid>
      <description>&lt;p&gt;Wondering about steampunk, but for carpentry and wood based technology. Nautical culture through the Napoleonic wars would be where you start. Maybe one could include Master and Commander or Moby Dick as early examples.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blogs.loc.gov/inside_adams/2026/05/david-bushnells-secret-submarine-of-the-american-revolution/&#34;&gt;Some fun photos of the &lt;em&gt;Turtle&lt;/em&gt; from the American revolution:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blogs.loc.gov/inside_adams/files/2026/05/Field-Turtle-Scene-657x1024.jpg&#34; alt=&#34;A drawing by Cyril Field depicting Ezra Lee abandoning his attempt to attack the HMS Eagle. Illustration in The Story of the Submarine, 1908.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blogs.loc.gov/inside_adams/files/2026/05/Handshouse-Turtle1-1536x2048.jpeg&#34; alt=&#34;This Turtle replica, built by Handshouse Studio and on display at the International Spy Museum in Washington, D.C., shows how the gunpowder keg may have looked. Photo by Claire D’Mura.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/21/an-eggcellent-bouquet-for-fathers.html</link>
      <pubDate>Sun, 21 Jun 2026 08:25:14 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/21/an-eggcellent-bouquet-for-fathers.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260621&#34;&gt;An Egg-cellent Bouquet for Fathers Day from Miniature Calendar: &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/06/260621sun.jpg&#34; alt=&#34;A miniature diorama by Tatsuya Tanaka set against a plain, cream-colored background. A figurine of a person in casual clothes is holding out a large cone made of dark seaweed that is filled with fluffy yellow scrambled eggs. They are presenting it to a figurine of a man in a grey suit, holding it exactly as one would hold a bouquet of flowers. On the ground next to the man in the suit rests a large, cracked-open white eggshell. The text at the bottom reads &amp;ldquo;MINIATURE LIFE by Tatsuya Tanaka - June 21st, 2026&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/21/when-the-us-commissioned-a.html</link>
      <pubDate>Sun, 21 Jun 2026 07:52:37 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/21/when-the-us-commissioned-a.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blogs.loc.gov/music/2026/06/shipboard-songs-music-of-the-united-states-exploring-expedition/&#34;&gt;When the U.S. commissioned a hymnal-esque collection of sea shanties to commemorate the Navy’s circumnavigation of the globe: &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The physical manuscript is also remarkable in a variety of ways. The notation on each page is remarkably neat, rivaling some of the master composers and arrangers whose collections are held by the Music Division. Nearly every shanty also includes multiple handwritten verses, showing a variety of lyrical inspirations…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blogs.loc.gov/music/files/2026/05/ShipboardSongs_Image4-scaled-e1780004893193.jpg&#34; alt=&#34;In the three smaller lines below the shanty’s title, James Dwight Dana notates two Indigenous musical traditions as inspiration for “My Tent beside the Oregon.” The top line is attributed to the Chinook tribe, and the bottom two lines are attributed to the Chekalis [Chehalis] tribe. ML96 .D26 no. 1, Music Division, Library of Congress.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/19/ghost-in-the-shell-tv.html</link>
      <pubDate>Fri, 19 Jun 2026 10:38:38 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/19/ghost-in-the-shell-tv.html</guid>
      <description>&lt;p&gt;Ghost in the Shell TV shows (I&amp;rsquo;ve seen the films, haven&amp;rsquo;t spent time with the Manga) remain one of my favorite artistic expressions of a creative studio trying to articulate the sociological implications of an information economy driven society. &lt;a href=&#34;https://www.youtube.com/watch?v=nnRcKC4Rgsc&#34;&gt;We&amp;rsquo;re about to get a new reinterpretation.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/18/one-day.html</link>
      <pubDate>Thu, 18 Jun 2026 21:35:09 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/18/one-day.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/ps2pdieFFVA?si=0tcLGYCqJGGhRKLP&amp;amp;t=271&#34;&gt;One day&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/15/my-daughter-first-child-almost.html</link>
      <pubDate>Mon, 15 Jun 2026 20:40:55 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/15/my-daughter-first-child-almost.html</guid>
      <description>&lt;p&gt;📚 My daughter (first child, almost five and a half) has expressed to mom that she wants to start reading Chronicles of Narnia at bedtime, and both of us are basically treating this whole situation like encountering a flighty horse on a cliff side that we desperately don&amp;rsquo;t want to spook.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/09/new-animagraffs-video-just-dropped.html</link>
      <pubDate>Tue, 09 Jun 2026 22:14:49 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/09/new-animagraffs-video-just-dropped.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/PRWwXeRIvoI?si=2HYIblcfequiAES7&#34;&gt;New Animagraffs video just dropped.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/06/04/i-see-santa-monica-studios.html</link>
      <pubDate>Thu, 04 Jun 2026 20:21:16 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/06/04/i-see-santa-monica-studios.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=HLMX2w3cwuE&#34;&gt;I see Santa Monica Studios has not been idle.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/05/31/spring-progress-final-photo-to.html</link>
      <pubDate>Sun, 31 May 2026 07:33:22 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/05/31/spring-progress-final-photo-to.html</guid>
      <description>&lt;p&gt;Spring Progress 📷 2026.05.28&lt;/p&gt;
&lt;p&gt;Final photo to label spring. Summer ascendant.&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/50d798a9da.jpg&#34; alt=&#34;A sidewalk and street are bordered by a tree with lush green leaves, set against a backdrop of residential houses and clear blue sky.&#34;&gt;
&lt;p&gt;Here&amp;rsquo;s the whole progression:&lt;/p&gt;
&lt;div class=&#34;microblog_collection&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2603-m.jpg&#34; alt=&#34;Bare tree branches with budding red buds stretch over a suburban street on an overcast day.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2603-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2619-m.jpg&#34; alt=&#34;A residential street is lined with bare trees budding in early spring, with a house and a sky oddly cloudy and clear as the backdrop.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2619-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2691-m.jpg&#34; alt=&#34;A tree with budding red flowers is set against a backdrop of a suburban street and a clear blue sky.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/img-2691-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/9ff3d9e5dd454658a6b02e7cb6fd1eae-m.jpg&#34; alt=&#34;A greenhouse is filled with rows of vibrant flowers in various colors, displayed in pots and hanging baskets.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/9ff3d9e5dd454658a6b02e7cb6fd1eae-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/6cb42ba846-m.jpg&#34; alt=&#34;Budding branches are in the foreground with a quiet suburban street and houses under a blue sky in the background.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/6cb42ba846-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/06caf569f5-m.jpg&#34; alt=&#34;A suburban street is partially obscured by the green leaves of a tree in the foreground, with houses and a clear sky in the background.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/06caf569f5-xl.jpg&#34;&gt;&lt;img src=&#34;https://cdn.uploads.micro.blog/188083/2026/50d798a9da-m.jpg&#34; alt=&#34;A sidewalk and street are bordered by a tree with lush green leaves, set against a backdrop of residential houses and clear blue sky.&#34; data-microblog-lightbox=&#34;https://cdn.uploads.micro.blog/188083/2026/50d798a9da-xl.jpg&#34;&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/05/21/spring-progress-we-might-be.html</link>
      <pubDate>Thu, 21 May 2026 18:54:17 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/05/21/spring-progress-we-might-be.html</guid>
      <description>&lt;p&gt;Spring Progress 📷 2026.05.19&lt;/p&gt;
&lt;p&gt;We might be able to say summer has arrived.&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/06caf569f5.jpg&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/05/11/looks-like-ghost-in-the.html</link>
      <pubDate>Mon, 11 May 2026 22:21:21 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/05/11/looks-like-ghost-in-the.html</guid>
      <description>&lt;p&gt;Look&amp;rsquo;s like Ghost in the Shell is getting another reboot, but frankly I still &lt;a href=&#34;https://youtu.be/FF21zT4_5ME?si=60sOAHZOTCfryHHk&amp;amp;t=41&#34;&gt;haven&amp;rsquo;t gotten over this sequence&lt;/a&gt; from 2nd GiG.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/05/04/these-photos-are-remarkable-texas.html</link>
      <pubDate>Mon, 04 May 2026 15:00:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/05/04/these-photos-are-remarkable-texas.html</guid>
      <description>&lt;p&gt;These photos are remarkable:&lt;/p&gt;
&lt;blockquote class=&#34;quoteback&#34; data-author=&#34;Alan Jacobs &#34; data-avatar=&#34;https://micro.blog/ayjay/avatar.jpg&#34; cite=&#34;https://social.ayjay.org/2026/05/04/texas-by-erin-newmanmitchell.html&#34;&gt;&lt;p&gt;&lt;img style=&#34;display: block;  &#34; src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcosmosmalick.net%2Fuploads%2F2026%2Fbluebonnets-fredericksburgtx-scaled.jpg&#34; alt=&#34;Bluebonnets_FredericksburgTX scaled.&#34; width=&#34;800&#34; height=&#34;1202&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;
&lt;p&gt;TEXAS! (by &lt;a href=&#34;https://texashighways.com/travel/capturing-the-spectacular-landscapes-of-texas/&#34;&gt;Erin Newman-Mitchell&lt;/a&gt;)&lt;/p&gt;
&lt;footer&gt;Alan Jacobs  &lt;cite&gt;&lt;a href=&#34;https://social.ayjay.org/2026/05/04/texas-by-erin-newmanmitchell.html&#34; class=&#34;u-in-reply-to&#34;&gt;https://social.ayjay.org/2026/05/04/texas-by-erin-newmanmitchell.html&lt;/a&gt;&lt;/cite&gt;&lt;/footer&gt;&lt;/blockquote&gt;&lt;script src=&#34;https://cdn.micro.blog/quoteback.js&#34;&gt;&lt;/script&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/29/tea-anemone-by-tatsuya-tanaka.html</link>
      <pubDate>Wed, 29 Apr 2026 21:06:23 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/29/tea-anemone-by-tatsuya-tanaka.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260427&#34;&gt;Tea Anemone&lt;/a&gt; by Tatsuya Tanaka at Miniature Calendar:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/04/260427mon.jpg&#34; alt=&#34;A miniature diorama by Tatsuya Tanaka featuring a bamboo matcha whisk (chasen) stood upright to resemble a sea anemone. Several tiny clownfish figures are nestled within the whisk&amp;rsquo;s bristles. To the left, a miniature scuba diver in an orange suit &amp;ldquo;swims&amp;rdquo; through the air, trailing small bubbles. The background includes a ceramic matcha bowl and a plate of colorful dango (pink, white, and green rice dumplings), all set against a soft teal backdrop that mimics water.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/25/the-eldest-shares-her-mom.html</link>
      <pubDate>Sat, 25 Apr 2026 18:34:44 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/25/the-eldest-shares-her-mom.html</guid>
      <description>&lt;p&gt;The eldest shares her mom and grandmothers&amp;rsquo; interest.&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/img-2752.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/23/to-the-extent-i-pay.html</link>
      <pubDate>Thu, 23 Apr 2026 11:01:36 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/23/to-the-extent-i-pay.html</guid>
      <description>&lt;p&gt;To the extent I pay attention to Home and Garden trends I always got the impression the platonic ideal for lawn maintenance was a golf course fairway.&lt;/p&gt;
&lt;p&gt;Meanwhile I’m out here weedmaxxing&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/81bf593692d043b7b6cc96ca905dc7b4.jpg&#34;&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/0771af5994f941c68b14042684d0ab23.jpg&#34;&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/6080a94d8e5a4a27aacd53d7d0a2e52c.jpg&#34;&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/161bd99983e74d5c8f9f9facccb0d70b.jpg&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/15/spring-progress-the-maple-awakens.html</link>
      <pubDate>Wed, 15 Apr 2026 19:35:07 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/15/spring-progress-the-maple-awakens.html</guid>
      <description>&lt;p&gt;Spring Progress 📸 2026.04.08 The maple awakens #SP26.3&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/img-2691.jpg&#34; alt=&#34;Auto-generated description: A tree with budding red flowers is set against a backdrop of a suburban street and a clear blue sky.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/15/public-domain-review-highlighting-works.html</link>
      <pubDate>Wed, 15 Apr 2026 10:34:38 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/15/public-domain-review-highlighting-works.html</guid>
      <description>&lt;p&gt;Public Domain Review highlighting works that feature Notre Dame today:&lt;/p&gt;
&lt;blockquote class=&#34;quoteback&#34; data-author=&#34;The Public Domain Review&#34; data-avatar=&#34;https://micro.blog/publicdomainrev@mastodon.social/avatar.jpg&#34; cite=&#34;https://mastodon.social/@publicdomainrev/116408559908239505&#34;&gt;&lt;p&gt;Highlights from the many centuries of artworks to feature the Notre-Dame de Paris — which caught fire 5 years ago &lt;a href=&#34;https://mastodon.social/tags/onthisday&#34; class=&#34;mention hashtag&#34;&gt;#&lt;span&gt;onthisday&lt;/span&gt;&lt;/a&gt; — from its illuminated punctuation of medieval skylines to grainy detailed studies at the birth of photography: &lt;a href=&#34;https://publicdomainreview.org/collection/the-notre-dame-cathedral-in-art-1460-1921&#34;&gt;&lt;span class=&#34;invisible&#34;&gt;https://&lt;/span&gt;&lt;span class=&#34;ellipsis&#34;&gt;publicdomainreview.org/collect&lt;/span&gt;&lt;span class=&#34;invisible&#34;&gt;ion/the-notre-dame-cathedral-in-art-1460-1921&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&#34;microblog_collection&#34;&gt;
&lt;img src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Ffiles.mastodon.social%2Fmedia_attachments%2Ffiles%2F116%2F408%2F559%2F710%2F148%2F524%2Foriginal%2Ffd7bca5f92a03e23.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;img src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Ffiles.mastodon.social%2Fmedia_attachments%2Ffiles%2F116%2F408%2F559%2F756%2F300%2F787%2Foriginal%2F9de0ad951cb7d57d.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;img src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Ffiles.mastodon.social%2Fmedia_attachments%2Ffiles%2F116%2F408%2F559%2F818%2F519%2F886%2Foriginal%2Fd2fb74f15cfc6793.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;img src=&#34;https://cdn.micro.blog/photos/1000x/https%3A%2F%2Ffiles.mastodon.social%2Fmedia_attachments%2Ffiles%2F116%2F408%2F559%2F879%2F277%2F831%2Foriginal%2Fbec0a371a1b8b1d6.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
&lt;/div&gt;&lt;footer&gt;The Public Domain Review &lt;cite&gt;&lt;a href=&#34;https://mastodon.social/@publicdomainrev/116408559908239505&#34; class=&#34;u-in-reply-to&#34;&gt;https://mastodon.social/@publicdomainrev/116408559908239505&lt;/a&gt;&lt;/cite&gt;&lt;/footer&gt;&lt;/blockquote&gt;&lt;script src=&#34;https://cdn.micro.blog/quoteback.js&#34;&gt;&lt;/script&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/13/how-to-eat-french-fries.html</link>
      <pubDate>Mon, 13 Apr 2026 21:52:44 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/13/how-to-eat-french-fries.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260410&#34;&gt;&amp;lsquo;How to Eat French Fries&amp;rsquo; by Tatsuya Tanaka at Miniature Calendar:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/04/260410fri.jpg&#34; alt=&#34;A miniature art photograph by Tatsuya Tanaka. A tiny figure of a woman in a yellow tracksuit with a black stripe—reminiscent of &amp;ldquo;The Bride&amp;rdquo; from Kill Bill—stands in a combat pose with a katana. She is surrounded by &amp;ldquo;severed&amp;rdquo; French fries scattered on a white surface, with red ketchup at the broken ends to mimic blood. In the background, a large red carton of fries and a small container of ketchup are visible under dramatic lighting.&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/12/per-my-last-post-the.html</link>
      <pubDate>Sun, 12 Apr 2026 23:11:18 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/12/per-my-last-post-the.html</guid>
      <description>&lt;p&gt;Per my last post, &lt;a href=&#34;https://youtu.be/e2oZtvjg5oA?si=w3TqMQP-Tbs8Kpya&#34;&gt;the Castlevania 2 &amp;lsquo;Bloody Tears&amp;rsquo; theme&lt;/a&gt; goes harder than it has a right too.&lt;/p&gt;
&lt;blockquote class=&#34;quoteback&#34; data-author=&#34;Nic Babarskis&#34; data-avatar=&#34;https://micro.blog/thebigbabooski/avatar.jpg&#34; cite=&#34;https://nic.babarskis.blog/2026/04/12/somehow-was-able-to-get.html&#34;&gt;
&lt;p&gt;Somehow was able to get classic video game soundtracks into the 5-year-olds music rotation (its a delicate inception, but worth the respite from the usual playlists) and every time &lt;a href=&#34;https://www.youtube.com/watch?v=Zqa2mgjbOIM&#34;&gt;Dire Dire Docks&lt;/a&gt; comes on I think of &lt;a href=&#34;https://youtu.be/bFexVk2U-EA?si=eeYfswn11ShZIRVM&#34;&gt;the Northernlion commentary.&lt;/a&gt;&lt;/p&gt;
&lt;footer&gt;Nic Babarskis &lt;cite&gt;&lt;a href=&#34;https://nic.babarskis.blog/2026/04/12/somehow-was-able-to-get.html&#34; class=&#34;u-in-reply-to&#34;&gt;https://nic.babarskis.blog/2026/04/12/somehow-was-able-to-get.html&lt;/a&gt;&lt;/cite&gt;&lt;/footer&gt;
&lt;/blockquote&gt;&lt;script src=&#34;https://cdn.micro.blog/quoteback.js&#34;&gt;&lt;/script&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/12/somehow-was-able-to-get.html</link>
      <pubDate>Sun, 12 Apr 2026 23:07:12 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/12/somehow-was-able-to-get.html</guid>
      <description>&lt;p&gt;Somehow was able to get classic video game soundtracks into the 5-year-olds music rotation (its a delicate inception, but worth the respite from the usual playlists) and every time &lt;a href=&#34;https://www.youtube.com/watch?v=Zqa2mgjbOIM&#34;&gt;Dire Dire Docks&lt;/a&gt; comes on I think of &lt;a href=&#34;https://youtu.be/bFexVk2U-EA?si=eeYfswn11ShZIRVM&#34;&gt;the Northernlion commentary.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/06/the-toddler-is-experiencing-some.html</link>
      <pubDate>Mon, 06 Apr 2026 06:45:13 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/06/the-toddler-is-experiencing-some.html</guid>
      <description>&lt;p&gt;The toddler is experiencing some sort of sleep regression.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Thomas_C._Lea_III_-_That_Two-Thousand_Yard_Stare_-_Original.jpg/1280px-Thomas_C._Lea_III_-_That_Two-Thousand_Yard_Stare_-_Original.jpg&#34; alt=&#34; &amp;ldquo;That 2,000 Yard Stare&amp;rdquo; - Thomas Lee, 1944, World War II. Army Art Collection, U.S. Army Center of Military History&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/03/ongoing-artemis-mission-updates-on.html</link>
      <pubDate>Fri, 03 Apr 2026 08:03:23 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/03/ongoing-artemis-mission-updates-on.html</guid>
      <description>&lt;p&gt;Ongoing Artemis 2 mission updates on &lt;a href=&#34;https://www.nasa.gov/blogs/missions/&#34;&gt;this blog&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/01/the-artemis-launch-has-me.html</link>
      <pubDate>Wed, 01 Apr 2026 21:39:11 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/01/the-artemis-launch-has-me.html</guid>
      <description>&lt;p&gt;The Artemis launch has me thinking about Mass Effect space exploration so here&amp;rsquo;s the links to each game&amp;rsquo;s galaxy map music:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=7ZoFw9uXJwk&#34;&gt;ME 1&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=jqvcqe9KOW0&amp;amp;t=11s&#34;&gt;ME 2&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=DS6FQsgXfxk&#34;&gt;ME 3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=T3mCj2u3XSY&#34;&gt;ME-A&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/01/perhaps-youve-been-warned-to.html</link>
      <pubDate>Wed, 01 Apr 2026 20:30:10 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/01/perhaps-youve-been-warned-to.html</guid>
      <description>&lt;p&gt;Perhaps you’ve been warned to watch for “woke” Michigan companies but have you been informed about:&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/9c52aa9ade.jpg&#34; width=&#34;449&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/04/01/when-youve-been-forced-for.html</link>
      <pubDate>Wed, 01 Apr 2026 20:28:17 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/04/01/when-youve-been-forced-for.html</guid>
      <description>&lt;p&gt;When you’ve been forced (for better or worse) to live through “interesting times:”&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/a3eb7d019e.jpg&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/03/26/feists-let-it-die-is.html</link>
      <pubDate>Thu, 26 Mar 2026 12:56:24 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/03/26/feists-let-it-die-is.html</guid>
      <description>&lt;p&gt;🎵 Feist&amp;rsquo;s &lt;em&gt;Let It Die&lt;/em&gt; is an &lt;a href=&#34;https://album.link/bm3wpvxrgvckb&#34;&gt;undefeated album&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/03/10/come-here-quick-falling-frontier.html</link>
      <pubDate>Tue, 10 Mar 2026 20:01:51 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/03/10/come-here-quick-falling-frontier.html</guid>
      <description>&lt;p&gt;Come here quick!! &lt;a href=&#34;https://youtu.be/msj-iui56so&#34;&gt;Falling Frontier just dropped another gameplay trailer!&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/02/11/when-your-franchise-has-to.html</link>
      <pubDate>Wed, 11 Feb 2026 08:54:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/02/11/when-your-franchise-has-to.html</guid>
      <description>&lt;p&gt;When your franchise has to reach up to touch rock bottom you accept any crack of light that manifests.&lt;/p&gt;
&lt;img src=&#34;https://nic.babarskis.blog/uploads/2026/3a941dbd42.jpg&#34;&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/02/05/abbey-toast-by-tatsuya-tanaka.html</link>
      <pubDate>Thu, 05 Feb 2026 01:10:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/02/05/abbey-toast-by-tatsuya-tanaka.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260204&#34;&gt;&amp;lsquo;Abbey Toast&amp;rsquo; by Tatsuya Tanaka posted to Miniature-Calendar:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/02/260204wed.jpg&#34; alt=&#34;A miniaturized remix of The Beatles Abbey Road album photo with toast and broccoli substituting as the street&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/01/20/onion-pond-by-miniaturecalendar.html</link>
      <pubDate>Tue, 20 Jan 2026 13:31:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/01/20/onion-pond-by-miniaturecalendar.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/260120&#34;&gt;Onion Pond by Miniature-Calendar:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2026/01/260120tue1.jpg&#34; alt=&#34;A miniature diorama featuring several whole yellow onions arranged to look like a cluster of hills or islands. In the center, a halved onion lies flat, its smooth, concentric inner layers serving as the surface of a pond. A tiny model boat with two miniature figures is positioned on the &amp;ldquo;pond,&amp;rdquo; and several small, green model evergreen trees are tucked between the onions, completing the scenic, whimsical landscape&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2026/01/13/dusttodigital-now-has-a-streaming.html</link>
      <pubDate>Tue, 13 Jan 2026 09:40:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2026/01/13/dusttodigital-now-has-a-streaming.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.dust-digital.com/about&#34;&gt;Dust-to-Digital&lt;/a&gt; now has a &lt;a href=&#34;https://dust-digital.com/&#34;&gt;24/7 streaming radio station&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/12/25/apropos-for-today-an-excerpt.html</link>
      <pubDate>Thu, 25 Dec 2025 12:30:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/12/25/apropos-for-today-an-excerpt.html</guid>
      <description>&lt;p&gt;Apropos for today, an excerpt from &lt;a href=&#34;https://youtu.be/t8Ax6KXnQZI?si=glrM-mZIpYG33YWM&#34;&gt;&amp;lsquo;The Darkling Thrush&amp;rsquo;&lt;/a&gt; which I was introduced too through yesterday&amp;rsquo;s &lt;a href=&#34;https://www.yourclassical.org/story/2025/12/03/a-festival-of-nine-lessons-and-carols&#34;&gt;Festival of Nine Lessons and Carols:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So little cause for carolings&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Of such ecstatic sound&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Was written on terrestrial things&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Afar or nigh around,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;That I could think there trembled through&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;His happy good-night air&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Some blessed Hope, whereof he knew&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;And I was unaware.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/12/01/what-a-delight-to-discover.html</link>
      <pubDate>Mon, 01 Dec 2025 23:09:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/12/01/what-a-delight-to-discover.html</guid>
      <description>&lt;p&gt;What a delight to discover that Robert Glasper &lt;a href=&#34;https://www.youtube.com/watch?v=Cvd2SypKdIM&amp;amp;list=PLIh86OChcGjYuaw7K86o-JfRzYa8VQxXV&#34;&gt;made a Christmas album&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/playlist?list=PLIh86OChcGjYuaw7K86o-JfRzYa8VQxXV&#34;&gt;YouTube Playlist&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;PLIh86OChcGjYuaw7K86o-JfRzYa8VQxXV&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;data:image/svg&amp;#43;xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3Crect%20x=%27220%27%20y=%27260%27%20width=%27840%27%20height=%2760%27%20fill=%27%23fff%27/%3E%3Crect%20x=%27220%27%20y=%27340%27%20width=%27660%27%20height=%2760%27%20fill=%27%23fff%27/%3E%3C/svg%3E&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/playlist?list=PLIh86OChcGjYuaw7K86o-JfRzYa8VQxXV&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Playlist&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/11/22/yo-you-can-watch-pretty.html</link>
      <pubDate>Sat, 22 Nov 2025 19:38:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/11/22/yo-you-can-watch-pretty.html</guid>
      <description>&lt;p&gt;Yo! You can watch pretty much the &lt;a href=&#34;https://archive.org/details/ReadingRainbowTVSeries&#34;&gt;entire Reading Rainbow archive through the Internet Archive.&lt;/a&gt;&lt;/p&gt;
&lt;iframe src=&#34;https://archive.org/embed/ReadingRainbowTVSeries&amp;playlist=1&#34; width=&#34;640&#34; height=&#34;580&#34; frameborder=&#34;0&#34; webkitallowfullscreen=&#34;true&#34; mozallowfullscreen=&#34;true&#34; allowfullscreen&gt;&lt;/iframe&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/11/22/treasure-of-life-from-miniature.html</link>
      <pubDate>Sat, 22 Nov 2025 10:08:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/11/22/treasure-of-life-from-miniature.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://miniature-calendar.com/251122&#34;&gt;Treasure of Life from Miniature Calendar:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://miniature-calendar.com/wp-content/uploads/2025/11/251122sat.jpg&#34; alt=&#34;A picture of a miniature showing two adults reclining in bed reading. The bed is made from a ring box and the ring sits at the foot of the bed&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Chicago Transit Authority’s slow TV ‘Ride the Rails’ videos remind me why I love the Brown Line</title>
      <link>https://nic.babarskis.blog/2025/11/21/chicago-transit-authoritys-slow-tv.html</link>
      <pubDate>Fri, 21 Nov 2025 22:33:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/11/21/chicago-transit-authoritys-slow-tv.html</guid>
      <description>&lt;p&gt;My family has maintained a relationship to Chicago’s Brown Line.&lt;/p&gt;
&lt;p&gt;For the years that we lived in central Illinois my parents would periodically take my sister and I to the city for a day or weekend excursion. Ostensibly we were there to visit my grandmother in Bridgeport (a Red Line stop) or my cousins in the suburbs, but we would also find an excuse to take the bikes down to the lakefront for a ride from the Adler Planetarium to the Lincoln Park zoo, or a jaunt up and down lake shore drive. We’d also ride the El. We’d take the Brown Line to Sedgwick and eat at the &lt;a href=&#34;https://oldjerusalemrestaurant.net/?y_source=1_MTA5MjA5ODUzNy03MTUtbG9jYXRpb24ud2Vic2l0ZQ%253D%253D&#34;&gt;Old Jerusalem Restaurant.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I lived in Wheaton I’d keep up the pattern and find excuses to take the Brown Line to Old Town or Lincoln Park. My future spouse lived not far from the Diversey stop for a time.&lt;/p&gt;
&lt;p&gt;The CTA &lt;a href=&#34;https://youtube.com/playlist?list=PL0-sTc_CuqtXDvfQIx_Za5kG8nB4nz8FU&amp;amp;si=KawfhckFN383vJEA&#34;&gt;maintains a playlist of ‘Ride the Rails’ videos.&lt;/a&gt; The production values have improved incrementally over time. I find it comforting to pull one up and ride along for a couple stops. The familiar “doors closing” cadence and the click-clack of the tracks acts a bit like a breathe prayer. The Brown Line remains my favorite.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Could we make CosmodromePunk a thing?</title>
      <link>https://nic.babarskis.blog/2025/11/03/could-we-make-cosmodromepunk-a.html</link>
      <pubDate>Mon, 03 Nov 2025 12:38:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/11/03/could-we-make-cosmodromepunk-a.html</guid>
      <description>&lt;p&gt;The artistic director of &lt;a href=&#34;https://youtu.be/RwV4RyGOJZM?si=qJD2F11_lQmN57H3&#34;&gt;this film&lt;/a&gt; would go on to lead artistic direction for the first Ghost in the Shell film. I wouldn&amp;rsquo;t call it&amp;rsquo;s aesthetic vision cyberpunk though. I&amp;rsquo;d propose something else, like cassettepunk, or maybe CosmodromePunk. I think a lot of the videos &lt;a href=&#34;https://www.youtube.com/@hanahakiblank&#34;&gt;this YT channel&lt;/a&gt; makes could fall into that aesthetic.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=RwV4RyGOJZM&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;RwV4RyGOJZM&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/RwV4RyGOJZM/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=RwV4RyGOJZM&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/10/26/parents-leave-all-sorts-of.html</link>
      <pubDate>Sun, 26 Oct 2025 19:52:43 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/10/26/parents-leave-all-sorts-of.html</guid>
      <description>&lt;p&gt;Parents leave all sorts of small indelible marks on their children that last a lifetime, and from my mom I&amp;rsquo;ve held onto an affection for &lt;a href=&#34;https://www.youtube.com/watch?v=bDgOwX72fLI&#34;&gt;Bruce Hornsby &amp;amp; The Range&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;
:root {
   
  --yt-aspect-ratio-16-9: 56.25%;

   
  --yt-bg-black: #000;
  --yt-play-button-bg: rgba(255, 0, 0, 0.8);
  --yt-play-button-bg-hover: rgba(255, 0, 0, 1);
  --yt-play-button-icon: #fff;
  --yt-overlay-bg: rgba(0, 0, 0, 0.85);
  --yt-overlay-text: #fff;
  --yt-focus-outline: #e53935;

   
  --yt-play-button-width: 68px;
  --yt-play-button-height: 48px;
  --yt-play-button-border-radius: 12px;

   
  --yt-focus-outline-width: 3px;
  --yt-focus-outline-offset: 4px;

   
  --yt-transition-duration: 0.2s;
  --yt-transition-timing: ease-in-out;
}

.video-wrapper {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  padding-bottom: var(--yt-aspect-ratio-16-9);
  margin: 0;
  height: 0;
  max-width: 100%;
  overflow: hidden;
  background-color: var(--yt-bg-black);
  cursor: pointer;
  outline: none;
  border: none;
  color: inherit;
  font: inherit;
  text-align: inherit;
  appearance: none;
  -webkit-appearance: none;
}

.video-wrapper[data-is-loaded=&#34;true&#34;] {
  cursor: auto;
}

.video-wrapper:focus-visible {
  outline: var(--yt-focus-outline-width) solid var(--yt-focus-outline);
  outline-offset: var(--yt-focus-outline-offset);
}

.video-thumbnail {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  background-color: var(--yt-bg-black);
  z-index: 1;
  transition: opacity var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-thumbnail {
  opacity: 0.9;
}

.video-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: var(--yt-overlay-bg);
  color: var(--yt-overlay-text);
  text-align: center;
  font-size: 0.85em;
  padding: 0.5em 1em;
  z-index: 2;
  pointer-events: auto;
}

.video-play-button {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--yt-play-button-width);
  height: var(--yt-play-button-height);
  background-color: var(--yt-play-button-bg);
  border-radius: var(--yt-play-button-border-radius);
  z-index: 3;
  pointer-events: none;
  transition: all var(--yt-transition-duration) var(--yt-transition-timing);
}

.video-wrapper:hover .video-play-button {
  background-color: var(--yt-play-button-bg-hover);
  transform: translate(-50%, -50%) scale(1.1);
}

.video-wrapper:active .video-play-button {
  transform: translate(-50%, -50%) scale(1.05);
}

.video-play-button::before {
  content: &#39;&#39;;
  position: absolute;
  left: 26px;
  top: 14px;
  width: 0;
  height: 0;
  border-left: 18px solid var(--yt-play-button-icon);
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
}

.video-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  z-index: 4;
}

.video-noscript {
  display: block;
  max-width: 100%;
  background-color: var(--yt-bg-black);
  color: inherit;
  text-align: center;
  padding: 0;
  margin-top: 0.5em;
}

.video-noscript img {
  display: block;
  width: 100%;
  height: auto;
}

.video-noscript a {
  display: inline-block;
  padding: 0.75em 1em;
  color: inherit;
  text-decoration: underline;
}

.yt-text-link {
  display: none;
}
&lt;/style&gt;

&lt;script&gt;
(function(){
  &#39;use strict&#39;;

  
  const CONSTANTS = {
    VIDEO_ID_LENGTH: 11,
    MAX_INPUT_LENGTH: 2048,
    VIDEO_ID_PATTERN: /^[a-zA-Z0-9_-]{11}$/,
    PLAYLIST_PREFIXES: /^(PL|OL|UU|LL|FL)/i,
    ALLOWED_URL_CHARS: /^[a-zA-Z0-9_\-?=&amp;#:/.]+$/,
    TIME_FORMATS: {
      HOURS: 3600,
      MINUTES: 60,
      SECONDS: 1
    },
    YOUTUBE_NOCOOKIE_DOMAIN: &#39;https://www.youtube-nocookie.com&#39;,
    YOUTUBE_IMG_DOMAIN: &#39;https://img.youtube.com&#39;,
    EMBED_PARAMS: &#39;autoplay=1&amp;mute=1&#39;
  };

  

  function validateInput(input, maxLength = CONSTANTS.MAX_INPUT_LENGTH) {
    if (!input || typeof input !== &#39;string&#39;) return &#39;&#39;;

    const trimmed = input.trim();

    if (trimmed.length &gt; maxLength) {
      console.warn(`Input exceeds maximum length of ${maxLength}`);
      return &#39;&#39;;
    }

    
    if (!CONSTANTS.ALLOWED_URL_CHARS.test(trimmed)) {
      console.warn(&#39;Input contains invalid characters&#39;);
      return &#39;&#39;;
    }

    return trimmed;
  }

  

  function parseStartValue(value) {
    if (!value) return 0;

    
    if (/^\d+$/.test(value)) {
      const parsed = parseInt(value, 10);
      return isNaN(parsed) ? 0 : Math.max(0, parsed);
    }

    
    let total = 0;
    let matched = false;
    const regex = /(\d+)(h|m|s)/gi;
    let match;

    while ((match = regex.exec(value)) !== null) {
      matched = true;
      const num = parseInt(match[1], 10);
      if (isNaN(num)) continue;

      const unit = match[2].toLowerCase();
      if (unit === &#39;h&#39;) total += num * CONSTANTS.TIME_FORMATS.HOURS;
      else if (unit === &#39;m&#39;) total += num * CONSTANTS.TIME_FORMATS.MINUTES;
      else if (unit === &#39;s&#39;) total += num * CONSTANTS.TIME_FORMATS.SECONDS;
    }

    return matched ? Math.max(0, total) : 0;
  }

  

  function extractStartTime(queryString) {
    if (!queryString) return 0;

    try {
      const cleanQuery = queryString.startsWith(&#39;?&#39;) || queryString.startsWith(&#39;#&#39;)
        ? queryString.slice(1)
        : queryString;

      const params = new URLSearchParams(cleanQuery);

      
      return parseStartValue(params.get(&#39;start&#39;)) ||
             parseStartValue(params.get(&#39;t&#39;)) ||
             parseStartValue(params.get(&#39;time_continue&#39;)) ||
             0;
    } catch (e) {
      console.warn(&#39;Failed to parse query parameters:&#39;, e);
      return 0;
    }
  }

  

  function parseId(raw) {
    const validated = validateInput(raw);
    if (!validated) {
      return { type: &#39;unknown&#39;, id: &#39;&#39;, start: 0 };
    }

    let startSeconds = 0;
    let normalized = validated;

    
    const queryIndex = normalized.indexOf(&#39;?&#39;);
    if (queryIndex !== -1) {
      startSeconds = extractStartTime(normalized.slice(queryIndex + 1));
      normalized = normalized.slice(0, queryIndex);
    }

    
    const hashIndex = normalized.indexOf(&#39;#&#39;);
    if (hashIndex !== -1) {
      startSeconds = startSeconds || extractStartTime(normalized.slice(hashIndex + 1));
      normalized = normalized.slice(0, hashIndex);
    }

    
    if (CONSTANTS.PLAYLIST_PREFIXES.test(normalized)) {
      return { type: &#39;playlist&#39;, id: normalized, start: startSeconds };
    }

    
    if (CONSTANTS.VIDEO_ID_PATTERN.test(normalized)) {
      return { type: &#39;video&#39;, id: normalized, start: startSeconds };
    }

    
    const listMatch = normalized.match(/list=([^&amp;]+)/);
    if (listMatch &amp;&amp; listMatch[1]) {
      return { type: &#39;playlist&#39;, id: listMatch[1], start: startSeconds };
    }

    console.warn(&#39;Unable to parse video/playlist ID:&#39;, raw);
    return { type: &#39;unknown&#39;, id: &#39;&#39;, start: startSeconds };
  }

  

  function validateThumbnailUrl(thumbUrl) {
    if (!thumbUrl) return &#39;&#39;;

    let cleaned = thumbUrl.trim();

    
    const markdownMatch = cleaned.match(/^\[[^\]]*\]\(([^)]+)\)$/);
    if (markdownMatch) {
      cleaned = markdownMatch[1].trim();
    }

    
    try {
      const url = new URL(cleaned, document.baseURI);

      
      if (url.protocol !== &#39;http:&#39; &amp;&amp; url.protocol !== &#39;https:&#39;) {
        console.warn(&#39;Thumbnail URL must use http or https protocol&#39;);
        return &#39;&#39;;
      }

      return url.href;
    } catch (e) {
      console.warn(&#39;Invalid thumbnail URL:&#39;, e);
      return &#39;&#39;;
    }
  }

  

  function getPlaylistPlaceholder() {
    const svg = `&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; viewBox=&#39;0 0 1280 720&#39;&gt;` +
                `&lt;rect width=&#39;100%&#39; height=&#39;100%&#39; fill=&#39;#000&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;260&#39; width=&#39;840&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;rect x=&#39;220&#39; y=&#39;340&#39; width=&#39;660&#39; height=&#39;60&#39; fill=&#39;#fff&#39;/&gt;` +
                `&lt;/svg&gt;`;
    return &#39;data:image/svg+xml;charset=utf-8,&#39; + encodeURIComponent(svg);
  }

  

  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      
      thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/maxresdefault.jpg`;
      thumbnail.onerror = () =&gt; {
        thumbnail.onerror = null;
        thumbnail.src = `${CONSTANTS.YOUTUBE_IMG_DOMAIN}/vi/${kind.id}/0.jpg`;
      };
    }
    
  }

  

  function createEmbedUrl(kind) {
    if (kind.type === &#39;playlist&#39; &amp;&amp; kind.id) {
      return `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/videoseries?list=${encodeURIComponent(kind.id)}&amp;${CONSTANTS.EMBED_PARAMS}`;
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      let url = `${CONSTANTS.YOUTUBE_NOCOOKIE_DOMAIN}/embed/${encodeURIComponent(kind.id)}?${CONSTANTS.EMBED_PARAMS}`;
      if (kind.start &gt; 0) {
        url += `&amp;start=${Math.floor(kind.start)}`;
      }
      return url;
    }
    return &#39;&#39;;
  }

  

  function loadEmbed(wrapper, kind, title) {
    if (wrapper.dataset.isLoaded === &#39;true&#39;) return;

    const embedUrl = createEmbedUrl(kind);
    if (!embedUrl) {
      console.error(&#39;Unable to create embed URL - invalid video/playlist ID&#39;);
      
      wrapper.innerHTML = &#39;&lt;div style=&#34;padding: 2em; text-align: center; color: #fff;&#34;&gt;Unable to load video. Please check the video ID.&lt;/div&gt;&#39;;
      return;
    }

    
    const iframe = document.createElement(&#39;iframe&#39;);
    iframe.setAttribute(&#39;allowfullscreen&#39;, &#39;&#39;);
    iframe.setAttribute(&#39;loading&#39;, &#39;lazy&#39;);
    iframe.setAttribute(&#39;allow&#39;, &#39;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#39;);
    iframe.setAttribute(&#39;title&#39;, title ? `YouTube video player: ${title}` : &#39;YouTube video player&#39;);
    iframe.src = embedUrl;

    
    const replacement = document.createElement(&#39;div&#39;);
    replacement.className = wrapper.className;
    replacement.dataset.listenersAdded = &#39;true&#39;;
    replacement.dataset.isLoaded = &#39;true&#39;;
    replacement.appendChild(iframe);

    wrapper.replaceWith(replacement);
  }

  

  function enhanceEmbeds() {
    const wrappers = document.querySelectorAll(&#39;.video-wrapper&#39;);

    wrappers.forEach(wrapper =&gt; {
      
      if (wrapper.dataset.listenersAdded === &#39;true&#39;) return;
      wrapper.dataset.listenersAdded = &#39;true&#39;;

      
      const rawVideoId = wrapper.dataset.videoId || &#39;&#39;;
      const rawThumbUrl = wrapper.dataset.thumb || &#39;&#39;;
      const videoTitle = wrapper.dataset.videoTitle || &#39;&#39;;

      
      const kind = parseId(rawVideoId);
      const safeThumb = validateThumbnailUrl(rawThumbUrl);

      
      const thumbnail = wrapper.querySelector(&#39;.video-thumbnail&#39;);
      setupThumbnail(thumbnail, kind, safeThumb);

      
      const loadHandler = () =&gt; loadEmbed(wrapper, kind, videoTitle);

      wrapper.addEventListener(&#39;click&#39;, loadHandler);

      const overlay = wrapper.querySelector(&#39;.video-overlay&#39;);
      if (overlay) overlay.addEventListener(&#39;click&#39;, loadHandler);
      if (thumbnail) thumbnail.addEventListener(&#39;click&#39;, loadHandler);

      
      wrapper.addEventListener(&#39;keydown&#39;, (e) =&gt; {
        if (e.key === &#39;Enter&#39; || e.key === &#39; &#39;) {
          e.preventDefault();
          loadHandler();
        }
      });
    });
  }

  
  enhanceEmbeds();
  if (document.readyState === &#39;loading&#39;) {
    document.addEventListener(&#39;DOMContentLoaded&#39;, enhanceEmbeds);
  }
})();
&lt;/script&gt;&lt;p class=&#34;yt-text-link&#34;&gt;
      &lt;a href=&#34;https://www.youtube.com/watch?v=bDgOwX72fLI&#34;&gt;YouTube Video&lt;/a&gt;
    &lt;/p&gt;&lt;button type=&#34;button&#34;
    class=&#34;video-wrapper&#34;
    aria-label=&#34;Play YouTube video&#34;
    data-video-id=&#34;bDgOwX72fLI&#34;
    data-thumb=&#34;&#34;
    &gt;&lt;img
      class=&#34;video-thumbnail&#34;
      src=&#34;data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20viewBox=%270%200%201280%20720%27%3E%3Crect%20width=%27100%25%25%27%20height=%27100%25%25%27%20fill=%27%23000%27/%3E%3C/svg%3E&#34;
      alt=&#34;YouTube Thumbnail&#34;
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;&gt;&lt;div class=&#34;video-play-button&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;&lt;noscript&gt;
    &lt;div class=&#34;video-noscript&#34;&gt;&lt;img src=&#34;https://img.youtube.com/vi/bDgOwX72fLI/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=bDgOwX72fLI&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YouTube Video&lt;/a&gt;
        &lt;/p&gt;&lt;/div&gt;
  &lt;/noscript&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/10/18/this-morning-i-saw-a.html</link>
      <pubDate>Sat, 18 Oct 2025 12:47:10 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/10/18/this-morning-i-saw-a.html</guid>
      <description>&lt;p&gt;This morning I saw a senior citizen with a cane, on the curb, in an inflatable animal costume, with signage promoting the No Kings rally happening downtown later today. Punching all the squares on my U.S.-in-2025 bingo card.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/10/14/this-site-is-so-delightful.html</link>
      <pubDate>Tue, 14 Oct 2025 10:28:14 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/10/14/this-site-is-so-delightful.html</guid>
      <description>&lt;p&gt;This site is so delightful. &lt;a href=&#34;https://miniature-calendar.com/251014&#34;&gt;https://miniature-calendar.com/251014&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/06/02/hanahaki-blank-continuing-to-evoke.html</link>
      <pubDate>Mon, 02 Jun 2025 11:25:38 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/06/02/hanahaki-blank-continuing-to-evoke.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/OgcV4LhEQ6E?si=HjilgmW8Mzjqc1ol&#34;&gt;Hanahaki Blank continuing to evoke the golden age of hand drawn anime:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/OgcV4LhEQ6E?si=-WdtSaBiaiSmBcRZ&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/05/28/taking-a-python-intro-course.html</link>
      <pubDate>Wed, 28 May 2025 22:19:33 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/05/28/taking-a-python-intro-course.html</guid>
      <description>&lt;p&gt;Taking a Python Intro course this summer and turns out if you need to code late into the evening Olde Pine is a great companion:&lt;/p&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/WqYVapE7KTA?si=s5u4tOFriB4yJvCA&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;iframe style=&#34;border-radius:12px&#34; src=&#34;https://open.spotify.com/embed/track/3XY1XnhE0QjPUZqpIb7GDn?utm_source=generator&#34; width=&#34;100%&#34; height=&#34;152&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;&#34; allow=&#34;autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture&#34; loading=&#34;lazy&#34;&gt;&lt;/iframe&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/05/14/i-took-amazon-immolating-million.html</link>
      <pubDate>Wed, 14 May 2025 11:30:00 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/05/14/i-took-amazon-immolating-million.html</guid>
      <description>&lt;p&gt;I took Amazon immolating $700 million dollars to distill a pure moment that evokes Tolkein at his best–as I remember him when read to me in my childhood–so good job I guess?&lt;/p&gt;
&lt;p&gt;It really is best viewed on a big screen with a good sound system:&lt;/p&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/M8Zas_YRD3g?si=r32pxBs__qBXmETO&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/03/30/theres-very-specific-vibes-video.html</link>
      <pubDate>Sun, 30 Mar 2025 21:46:09 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/03/30/theres-very-specific-vibes-video.html</guid>
      <description>&lt;p&gt;There&amp;rsquo;s very specific vibes video that features 80s and 90s anime that exudes what I&amp;rsquo;d call a &lt;a href=&#34;https://youtube.com/shorts/KofY0oCVpcA?si=9mD9X-RDlPOdFc6b&#34;&gt;#vhspunk aesthetic&lt;/a&gt;–before the iPhone with its black mirror imposed a glass sheen on tech products. The video style is typified by &lt;a href=&#34;https://www.youtube.com/@hanahakiblank&#34;&gt;Hanahaki Blank&amp;rsquo;s&lt;/a&gt; youtube channel. Its the perfect delta of the beauty of hand drawn animation, late 20th century nostaligia, and technophilia.&lt;/p&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/cFfpmC0Kv5w?si=ZNAMzDvcO9_KxpNi&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>https://nic.babarskis.blog/2025/03/19/pssst-you-can-buy-bsky.html</link>
      <pubDate>Wed, 19 Mar 2025 08:09:51 -0400</pubDate>
      
      <guid>http://thebigbabooski.micro.blog/2025/03/19/pssst-you-can-buy-bsky.html</guid>
      <description>&lt;p&gt;Pssst, you can buy BSKY CEO’s SXSW “A World Without Caesars” t-shirt &lt;a href=&#34;https://worldwithoutcaesars.com/&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hat tip to &lt;a href=&#34;https://micro.blog/manton&#34;&gt;@manton&lt;/a&gt; for the link.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>