<rss version="2.0">
  <channel>
    <title>Lego on Alex Johnstone</title>
    <link>https://micro.alexjj.com/categories/lego/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Mon, 22 Sep 2025 15:04:07 +0100</lastBuildDate>
    
    <item>
      <title></title>
      <link>https://micro.alexjj.com/2025/09/22/i-found-mattzo-bricks-website/</link>
      <pubDate>Mon, 22 Sep 2025 15:04:07 +0100</pubDate>
      
      <guid>http://fondoftea.micro.blog/2025/09/22/i-found-mattzo-bricks-website/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/b0cb9e5336.jpg&#34; alt=&#34;Auto-generated description: A black and white cat is lying on a carpet next to a partially constructed Lego model.&#34;&gt;&lt;/p&gt;
&lt;p&gt;I found &lt;a href=&#34;https://mattzobricks.com/&#34;&gt;Mattzo Brick&amp;rsquo;s&lt;/a&gt; website, and realised the huge number of options if I get into 3rd party tracks, specifically from &lt;a href=&#34;https://trixbrix.eu/&#34;&gt;Trixbrix&lt;/a&gt;. I like that they&amp;rsquo;ve added all the custom tracks to Bluebrick but now I have no idea what to make. I did start collecting &lt;a href=&#34;https://micro.alexjj.com/layouts&#34;&gt;images&lt;/a&gt; from online of various layouts for inspiration. What I should probably do is figure out the tables and layout arrangement and then see what I can fit on it. I like that the Trixbrix makes it seem possible to fit more on a narrower table, so should be able to get in two loops, plus stations or sidings. Trixbrix also sell bridges, whicch are probably cheaper than building a technic bridge myself - although not as Lego-satisfying.&lt;/p&gt;
&lt;p&gt;Also found that Mattzo Brick;s website includes &lt;a href=&#34;https://mattzobricks.com/automation/controllers/general&#34;&gt;custom controllers&lt;/a&gt;, firmware, software and signals and all sorts. Basically, like a real model train set has. This is a lot, but I&amp;rsquo;m glad it exists. I suspect once I build a layout, I&amp;rsquo;ll get a bit bored of it - as it&amp;rsquo;s never going to be a full room size with so many routes. However, with signals and control systems, then you can do more with it. Part of me is hesitant though - it&amp;rsquo;s not &amp;ldquo;real Lego&amp;rdquo; but real lego doesn&amp;rsquo;t offer a great deal - colour detection, for moving/stopping/reversing trains when they see a certain coloured block (which is quite neat, and could be useful for a back and forth train), and maybe motorising switch points, so you can build a control console but I don&amp;rsquo;t think there&amp;rsquo;s much else that can be done with stock stuff.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Lego Trains</title>
      <link>https://micro.alexjj.com/2025/09/12/lego-trains/</link>
      <pubDate>Fri, 12 Sep 2025 07:58:59 +0100</pubDate>
      
      <guid>http://fondoftea.micro.blog/2025/09/12/lego-trains/</guid>
      <description>&lt;p&gt;Quite possibly the best two words you can put together.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/photo-25-05-2024-21-48-00.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;We went on a family holiday to LegoLand Denmark for the boys birthday in 2024. Such a great place and needless to say everyone got the Lego bug when we got home, but it was me who &lt;em&gt;really&lt;/em&gt; wanted the lego trains.&lt;/p&gt;
&lt;p&gt;Unsurprisingly, there are whole communities dedicated to it, and I was soon learning about the various vintages and designs of lego trains over the years. It&amp;rsquo;s easy to get sucked in and start wanting the older sets (or the monorail!) but I wanted to actually build something and not spend a fortune. &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; The simplest way was to just buy a set that is available.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/lego-60337-express-passenger-train.webp&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The passenger train one was on sale at Smyths and so (the weekend my wife was away!) we drove there and picked it up. I also bought a couple of track extension packs, but they&amp;rsquo;re quite pricy.&lt;/p&gt;
&lt;p&gt;Like most track based toys, you always want more track. I started buying up used track on bricklink, but soon I&amp;rsquo;d picked up all the cheap stuff and the rest was too much per unit from local sellers, or the postage would kill anything from overseas. I then moved onto 3rd party track from Aliexpress, and got a good deal on a lot of track. You can tell it&amp;rsquo;s not authenic lego track but it still works and when you need 3m of straight for each side of the loop, you take anything you can find.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/photo-20-05-2024-20-43-06.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Next was more trains! I decided to follow a guide for taking a previous monorail train, and motorising it, but then changing it to a unikitty style for our youngest. This was built in Stud.io and then I ordered the parts from Bricklink. I forget how much I spent but it&amp;rsquo;s always more than you think!&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/media.jpg&#34; width=&#34;600&#34; height=&#34;800&#34; alt=&#34;Auto-generated description: A play area features a toy train track set up on a large rug, surrounded by various toys and storage bins.&#34;&gt;
&lt;p&gt;Still not satisfied, I looked for another train but this time trying to be more cost conscious. I saw used sets or parts of sets going for reasonable prices on eBay and so tried to pickup the freight train. I bought some parts on ebay and then the rest from bricklink. In the end, I think it might&amp;rsquo;ve been better just to buy the set, but buying it in small batches made it feel cheaper!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/60198.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;I spent too long on YouTube on channels like, &lt;a href=&#34;https://www.youtube.com/@BatteryPoweredBricks&#34;&gt;Battery Powered Bricks&lt;/a&gt; and wanted to get all the trains. I managed to resist and instead spent my time trying to design train tracks that would fit. He did show some nice wagons for logs and trees, which were very reasonable, and so I bought the parts for those.&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/233514/2025/image.png&#34; width=&#34;600&#34; height=&#34;373&#34; alt=&#34;Auto-generated description: A set of toy vehicles includes two rows each of yellow and beige trucks carrying logs and green trees, with additional black wheels.&#34;&gt;
&lt;p&gt;We don&amp;rsquo;t have a permanent place to setup the lego train, I wish we did, and could build a city around it, so for now it lives in boxes and then comes out every so often for us to make a new track and play with them.&lt;/p&gt;
&lt;p&gt;&lt;video src=&#34;https://eu.uploads.micro.blog/233514/2025/media.mp4&#34; poster=&#34;https://micro.alexjj.com/uploads/2025/poster.png&#34; controls=&#34;controls&#34; preload=&#34;metadata&#34;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The biggest downside to them is the batteries. The train motors need a bunch of AAA (six I think) and the controller needs another four. Mine are all rechargable but it&amp;rsquo;s just a pain. There are third party rechargable battery packs but they&amp;rsquo;re quite expensive. I&amp;rsquo;ve seen rumours that Lego are going to introduce a rechargable pack themselves, and so hopefully that&amp;rsquo;ll make the situation a little better.&lt;/p&gt;
&lt;p&gt;I really want to make the Maersk trains but using slightly different colours (so as to not have to buy the expensive Maersk blue) but it seems a little excessive! I did buy the &lt;a href=&#34;https://www.brickstickershop.com/Replacement-Sticker-for-Set-10219-Maersk-Container-Train-Medium-Azure-Version&#34;&gt;custom stickers&lt;/a&gt; for it though 🙈&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End Game&lt;/strong&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);
  }

  /**
   * Sets up thumbnail for video wrapper
   * @param {HTMLImageElement} thumbnail - Thumbnail element
   * @param {Object} kind - Parsed video/playlist info
   * @param {string} customThumb - Custom thumbnail URL
   */
  function setupThumbnail(thumbnail, kind, customThumb) {
    if (!thumbnail) return;

    if (customThumb) {
      // Use custom thumbnail
      thumbnail.onerror = null;
      thumbnail.src = customThumb;
    } else if (kind.type === &#39;playlist&#39;) {
      // Use playlist placeholder
      thumbnail.src = getPlaylistPlaceholder();
    } else if (kind.type === &#39;video&#39; &amp;&amp; kind.id) {
      // Use YouTube thumbnail with fallback
      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`;
      };
    }
    // For unknown type, keep the default placeholder
  }

  /**
   * Creates embed URL for video or playlist
   * @param {Object} kind - Parsed video/playlist info
   * @returns {string} Embed URL or empty string if invalid
   */
  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;;
  }

  /**
   * Creates and loads iframe embed
   * @param {HTMLElement} wrapper - Video wrapper element
   * @param {Object} kind - Parsed video/playlist info
   * @param {string} title - Video title
   */
  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;);
      // Show error message to user
      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;
    }

    // Create iframe
    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=_VH5ehRibIA&#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;_VH5ehRibIA&#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/_VH5ehRibIA/maxresdefault.jpg&#34;
             alt=&#34;YouTube Thumbnail&#34;&gt;&lt;p&gt;
          &lt;a href=&#34;https://www.youtube.com/watch?v=_VH5ehRibIA&#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;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;I still spent a fortune.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
    </item>
    
  </channel>
</rss>