<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Latest Posts on David Grierson</title>
    <link>https://www.davidgrierson.com/</link>
    <description>Recent content in Latest Posts on David Grierson</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <lastBuildDate>Mon, 20 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.davidgrierson.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>&#39;We let it grow, and now it&#39;s here.&#39;</title>
      <link>https://www.davidgrierson.com/post/blog/maarva/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/maarva/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Maarva (Fiona Shaw) in a scene from Lucasfilm&amp;rsquo;s ANDOR, exclusively on Disney+.
©2022 Lucasfilm Ltd. &amp;amp; TM. All Rights Reserved.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;maarva-andors-monologue&#34;&gt;Maarva Andor&amp;rsquo;s Monologue&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/TaKrm5txGCQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;</description>
      <content>&lt;blockquote&gt;
&lt;p&gt;Maarva (Fiona Shaw) in a scene from Lucasfilm&amp;rsquo;s ANDOR, exclusively on Disney+.
©2022 Lucasfilm Ltd. &amp;amp; TM. All Rights Reserved.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;maarva-andors-monologue&#34;&gt;Maarva Andor&amp;rsquo;s Monologue&lt;/h2&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/TaKrm5txGCQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

</content>
    </item>
    
    <item>
      <title>&#39;Made on a Mac&#39;</title>
      <link>https://www.davidgrierson.com/post/blog/madeonamac/</link>
      <pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/madeonamac/</guid>
      <description>&lt;h2 id=&#34;retro-wysiwyg&#34;&gt;Retro WYSIWYG&lt;/h2&gt;
&lt;p&gt;Veteran Apple users might remember a piece of software from around the turn of the G4/G5 to Intel era called &lt;a href=&#34;https://www.apple.com/welcomescreen/ilife/iweb-3/&#34;&gt;&amp;lsquo;iWeb&amp;rsquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was a functional, slightly clunky, WYSIWYG-style web editor that could also do basic content-management for the &amp;lsquo;flat-file&amp;rsquo; sites it generated. Engaging themes made it perfect for the home blogger or small business, but not without quirks that rendered it less useful for anything more complicated.&lt;/p&gt;
&lt;p&gt;Being a Windows user at the time, I was more used to stuff like Microsoft Frontpage or Macromedia Dreamweaver - but I&amp;rsquo;ve recently been test driving &lt;a href=&#34;https://forums.macrumors.com/threads/osx-10-4-12-shuriken.2369033/&#34;&gt;&amp;lsquo;Shuriken Tiger&amp;rsquo;&lt;/a&gt; OS on my old Mac G4 MDD and thought I&amp;rsquo;d show you what iWeb could do.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;retro-wysiwyg&#34;&gt;Retro WYSIWYG&lt;/h2&gt;
&lt;p&gt;Veteran Apple users might remember a piece of software from around the turn of the G4/G5 to Intel era called &lt;a href=&#34;https://www.apple.com/welcomescreen/ilife/iweb-3/&#34;&gt;&amp;lsquo;iWeb&amp;rsquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was a functional, slightly clunky, WYSIWYG-style web editor that could also do basic content-management for the &amp;lsquo;flat-file&amp;rsquo; sites it generated. Engaging themes made it perfect for the home blogger or small business, but not without quirks that rendered it less useful for anything more complicated.&lt;/p&gt;
&lt;p&gt;Being a Windows user at the time, I was more used to stuff like Microsoft Frontpage or Macromedia Dreamweaver - but I&amp;rsquo;ve recently been test driving &lt;a href=&#34;https://forums.macrumors.com/threads/osx-10-4-12-shuriken.2369033/&#34;&gt;&amp;lsquo;Shuriken Tiger&amp;rsquo;&lt;/a&gt; OS on my old Mac G4 MDD and thought I&amp;rsquo;d show you what iWeb could do.&lt;/p&gt;
&lt;p&gt;You can see the result &lt;a href=&#34;https://www.davidgrierson.com/g4/Mac%20WYSIWYG.html&#34; title=&#34;here&#34;&gt;here&lt;/a&gt;. You can have a giggle at things like angled text pre-rendered as an image and a complete lack of scaling options to suit different devices.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll need to click &amp;lsquo;back&amp;rsquo; in your browser to escape the page, because I&amp;rsquo;m lazy and forgot to put a return hyperlink in.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Bournemouth Airshow 2023</title>
      <link>https://www.davidgrierson.com/post/blog/bournemouth_airshow_23/</link>
      <pubDate>Sun, 03 Sep 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/bournemouth_airshow_23/</guid>
      <description>&lt;h2 id=&#34;bournemouth-airshow-2023&#34;&gt;Bournemouth Airshow 2023&lt;/h2&gt;
&lt;p&gt;Taken from SS Shieldhall anchored off Bournemouth. Other visitors included the paddle steamer Waverley, and countless small boats.&lt;/p&gt;
&lt;p&gt;A friend very kindly loaned me their Canon EF 100-400mm for the day. I&amp;rsquo;m really pleased with the underbelly shot of the P-51.&lt;/p&gt;
&lt;style&gt;
  div.gallery {
     display: flex;
     flex-wrap: wrap;
  }
        div.gallery a {
            flex-grow: 1;
            object-fit: cover;
            margin: 2px;
            display: flex;
        }

        div.gallery a img {            
            height: 200px;
            object-fit: cover;
            flex-grow: 1;
        }

    &lt;/style&gt;

    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.0/jquery.fancybox.min.css&#34; /&gt;

    &lt;div class=&#34;gallery&#34;&gt;
        
	

	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3919.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3919-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3948-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3948-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3950.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3950-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3951.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3951-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3992.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3992-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4050.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4050-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4163.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4163-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4167.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4167-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4255-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4255-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4290.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4290-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4357.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4357-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4492.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4492-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4655.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4655-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4762.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4762-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4778.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4778-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4960.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4960-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4984.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4984-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5039.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5039-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5133.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5133-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5258.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5258-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5293.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5293-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5319-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5319-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5357.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5357-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5382.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5382-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5460.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5460-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5490.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5490-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5521.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5521-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5533.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5533-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5536.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5536-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5545.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5545-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5557.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5557-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5563.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5563-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5574.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5574-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5576.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5576-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5578.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5578-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5580.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5580-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5591.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5591-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5606.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5606-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5673.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5673-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5678.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5678-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5726.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5726-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5789.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5789-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5827.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5827-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5829.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5829-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5836.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5836-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5869-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5869-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5880.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5880-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5934.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5934-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6001.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6001-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6027.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6027-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6028.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6028-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6041.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6041-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6162.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6162-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6187.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6187-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6189.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6189-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6204.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6204-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6212.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6212-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6237.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6237-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6349.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6349-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6443.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6443-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6458.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6458-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6471.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6471-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6484.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6484-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6486.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6486-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6503.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6503-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6618.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6618-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6623.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6623-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6712.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6712-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6792.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6792-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6880.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6880-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6938.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6938-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6999.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6999-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7071-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7071-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7158.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7158-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7169-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7169-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7186-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7186-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7195.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7195-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7207.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7207-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7219.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7219-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7245.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7245-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7314.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7314-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7321.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7321-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7343-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7343-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7352-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7352-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7487-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7487-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
    &lt;/div&gt;</description>
      <content>&lt;h2 id=&#34;bournemouth-airshow-2023&#34;&gt;Bournemouth Airshow 2023&lt;/h2&gt;
&lt;p&gt;Taken from SS Shieldhall anchored off Bournemouth. Other visitors included the paddle steamer Waverley, and countless small boats.&lt;/p&gt;
&lt;p&gt;A friend very kindly loaned me their Canon EF 100-400mm for the day. I&amp;rsquo;m really pleased with the underbelly shot of the P-51.&lt;/p&gt;
&lt;style&gt;
  div.gallery {
     display: flex;
     flex-wrap: wrap;
  }
        div.gallery a {
            flex-grow: 1;
            object-fit: cover;
            margin: 2px;
            display: flex;
        }

        div.gallery a img {            
            height: 200px;
            object-fit: cover;
            flex-grow: 1;
        }

    &lt;/style&gt;

    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.0/jquery.fancybox.min.css&#34; /&gt;

    &lt;div class=&#34;gallery&#34;&gt;
        
	

	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3919.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3919-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3948-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3948-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3950.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3950-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3951.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3951-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3992.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_3992-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4050.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4050-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4163.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4163-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4167.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4167-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4255-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4255-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4290.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4290-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4357.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4357-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4492.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4492-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4655.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4655-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4762.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4762-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4778.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4778-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4960.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4960-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4984.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_4984-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5039.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5039-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5133.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5133-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5258.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5258-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5293.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5293-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5319-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5319-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5357.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5357-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5382.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5382-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5460.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5460-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5490.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5490-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5521.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5521-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5533.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5533-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5536.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5536-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5545.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5545-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5557.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5557-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5563.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5563-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5574.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5574-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5576.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5576-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5578.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5578-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5580.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5580-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5591.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5591-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5606.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5606-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5673.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5673-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5678.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5678-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5726.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5726-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5789.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5789-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5827.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5827-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5829.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5829-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5836.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5836-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5869-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5869-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5880.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5880-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5934.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_5934-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6001.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6001-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6027.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6027-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6028.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6028-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6041.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6041-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6162.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6162-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6187.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6187-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6189.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6189-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6204.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6204-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6212.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6212-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6237.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6237-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6349.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6349-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6443.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6443-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6458.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6458-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6471.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6471-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6484.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6484-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6486.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6486-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6503.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6503-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6618.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6618-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6623.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6623-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6712.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6712-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6792.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6792-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6880.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6880-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6938.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6938-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6999.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_6999-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7071-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7071-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7124-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7158.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7158-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7169-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7169-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7186-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7186-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7195.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7195-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7207.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7207-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7219.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7219-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7245.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7245-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7314.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7314-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7321.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7321-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7343-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7343-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7352-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7352-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7487-Enhanced-NR.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/bmouth23/IMG_7487-Enhanced-NR-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
    &lt;/div&gt;
</content>
    </item>
    
    <item>
      <title>Steam Deck SSD Upgrade &amp; Dual Boot</title>
      <link>https://www.davidgrierson.com/post/blog/steamdeck_ssd/</link>
      <pubDate>Thu, 03 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/steamdeck_ssd/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;Support for Microsoft games on Steam Deck (and by extension, Linux) is surprisingly decent these days. Forza, Halo, Sea of Thieves all work well using the &amp;lsquo;Proton&amp;rsquo; compatibility layer built-in to SteamOS, and Xbox titles can be streamed from the Cloud using the native Edge browser.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s nice to see Microsoft show some enlightenment with respect to Linux coexistence, but unfortunately one major offering is missing - Game Pass. In order to run these games on Steam Deck, you currently have to own them via Steam, leaving Game Pass subscribers out in the cold.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;Support for Microsoft games on Steam Deck (and by extension, Linux) is surprisingly decent these days. Forza, Halo, Sea of Thieves all work well using the &amp;lsquo;Proton&amp;rsquo; compatibility layer built-in to SteamOS, and Xbox titles can be streamed from the Cloud using the native Edge browser.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s nice to see Microsoft show some enlightenment with respect to Linux coexistence, but unfortunately one major offering is missing - Game Pass. In order to run these games on Steam Deck, you currently have to own them via Steam, leaving Game Pass subscribers out in the cold.&lt;/p&gt;
&lt;p&gt;If you are willing to install Windows on Steam Deck, you can work around this for the meantime. It&amp;rsquo;s not perfect, but worth trying.&lt;/p&gt;
&lt;h2 id=&#34;storage-woes&#34;&gt;Storage Woes&lt;/h2&gt;
&lt;p&gt;My 512GB Steam Deck was already nearly full before even considering a Windows install. I tried running Windows-to-Go via a fast SD card, but honestly the performance was still woeful.&lt;/p&gt;
&lt;p&gt;I grabbed a 1TB Corsair MP600 Mini and decided to perform some surgery on Valve&amp;rsquo;s handheld.&lt;/p&gt;
&lt;h2 id=&#34;tools-required&#34;&gt;Tools required&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A new SSD&lt;/li&gt;
&lt;li&gt;Soft plastic spudgers or guitar picks&lt;/li&gt;
&lt;li&gt;Small cross-head screwdriver (Approx. PH0/PH1 sized, with narrow bits for recessed screws)&lt;/li&gt;
&lt;li&gt;Tweezers&lt;/li&gt;
&lt;li&gt;Suitable work surface such as the Steam Deck&amp;rsquo;s own travel case&lt;/li&gt;
&lt;li&gt;USB enclosure for cloning the original SSD&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;preparation&#34;&gt;Preparation&lt;/h2&gt;
&lt;p&gt;It hopefully goes without saying - &lt;strong&gt;THIS MAY VOID YOUR WARRANTY AND I TAKE NO RESPONSIBILITY!&lt;/strong&gt; You&amp;rsquo;re flying solo here, but hopefully the info below is helpful.&lt;/p&gt;
&lt;h3 id=&#34;cloning-the-os&#34;&gt;Cloning the OS&lt;/h3&gt;
&lt;p&gt;If you want to transfer the contents of your existing SSD, you&amp;rsquo;ll need some sort of external enclosure to connect it to the Deck and clone it. I use the &lt;a href=&#34;https://sabrent.com/products/ec-snve&#34;&gt;Sabrent EC-SNVE&lt;/a&gt; as it&amp;rsquo;s cheap and fast. You &lt;strong&gt;don&amp;rsquo;t&lt;/strong&gt; need any special disk cloning software - it can be done from the Deck itself.&lt;/p&gt;
&lt;p&gt;Boot up your Steam Deck and switch to Desktop mode. Open a terminal (Konsole) window and do:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo lsblk&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; to list all your storage devices by name.&lt;/p&gt;
&lt;p&gt;Your source is going to be the internal SSD, which should be listed as &lt;em&gt;nvme0n1&lt;/em&gt; with a tree of partitions below it.&lt;/p&gt;
&lt;p&gt;The destination is going to be the &lt;em&gt;&lt;strong&gt;external&lt;/strong&gt;&lt;/em&gt; SSD, in my case this was listed as &amp;lsquo;sda&amp;rsquo;. Check the &lt;strong&gt;size&lt;/strong&gt; column to confirm that you have a note of the correct drives. If you have a MicroSD card inserted, it might be simpler to remove it now and avoid any potential mix-ups.&lt;/p&gt;
&lt;p&gt;To start the clone, do the command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo dd if=/dev/nvme0n1 of=/dev/sda oflag=sync bs=128M status=progress&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;if&lt;/strong&gt; is the &lt;em&gt;input file&lt;/em&gt; - everything in Linux is represented as a file, even devices. Our internal SSD is at &lt;em&gt;&amp;rsquo;/dev/nvme0n1&amp;rsquo;&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;of&lt;/strong&gt; is the &lt;em&gt;output file&lt;/em&gt; - in this case our external SSD at &lt;em&gt;&amp;rsquo;/dev/sda&amp;rsquo;&lt;/em&gt;.
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;oflag=sync&lt;/strong&gt; flag makes sure that every block is physically written to the external SSD before the next one, instead of sitting in system write cache. This can help prevent corruption. Note &amp;lsquo;oflag=sync&amp;rsquo; is NOT the same as &amp;lsquo;conv=sync&amp;rsquo;!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bs=128M&lt;/strong&gt; should help speed things up by transferring bigger chunks. Some SSDs can handle larger or smaller values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;status=progress&lt;/strong&gt; prints the transfer speed and progress in the terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my case, the transfer took around 30 minutes. Make a cup of tea and get your tools ready for the next stages&amp;hellip;&lt;/p&gt;

&lt;link rel=&#34;stylesheet&#34; href=https://www.davidgrierson.com/css/hugo-easy-gallery.css /&gt;
&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/0_cloning.jpg&#34; alt=&#34;Cloning the drive&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/0_cloning.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;When the transfer is done, shut the machine down from the power menu and disconnect the external SSD enclosure. Reboot into the BIOS by holding Volume Up + Power. Use the D-Pad to navigate to Setup &amp;raquo; Power &amp;raquo; Battery Storage, and enable it.&lt;/p&gt;
&lt;p&gt;Battery Storage mode means your Steam Deck will ignore the power button so it shouldn&amp;rsquo;t accidentally turn on during this work. It will only turn on again when you connect the USB-C power supply.&lt;/p&gt;
&lt;h2 id=&#34;installing-the-ssd&#34;&gt;Installing the SSD&lt;/h2&gt;
&lt;p&gt;First - &lt;strong&gt;REMOVE YOUR MICROSD CARD!&lt;/strong&gt; It will get snapped if you don&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Second - lay the Steam Deck screen down somewhere safe, with the screen properly protected. I used the travel case as it has handy cut-outs for the joysticks.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/1_deck.jpg&#34; alt=&#34;Steam Deck in Case&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/1_deck.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Next, remove the 8 screws securing the rear cover. The 4 inner screws are a different length to the 4 &amp;lsquo;outer&amp;rsquo; screws, and you&amp;rsquo;ll need a narrow bit for the recesses.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/2_screw.jpg&#34; alt=&#34;Steam Deck Screw&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/2_screw.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;With the screws out, &lt;strong&gt;gently&lt;/strong&gt; pry the case open, starting from the R1/R2 triggers and working your way gradually round the curved lower edge. You don&amp;rsquo;t need to stick anything too far into the case here.&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve unclipped the right hand side of the cover, &lt;strong&gt;gently&lt;/strong&gt; pull the two halves of the device apart. The bottom and left clips should unclip themselves without too much hassle.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/3_prise.jpg&#34; alt=&#34;Carefully opening&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/3_prise.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Now that you&amp;rsquo;re inside, carefully peel back the foil covering the hidden screw on the EMC shield. You&amp;rsquo;ll need to reuse this later.&lt;/p&gt;
&lt;p&gt;Remove the three screws holding the EMC shield down, and lift it off taking care not to snag the fan cable. Again, keep track of the different screw lengths.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/4_emcshield.jpg&#34; alt=&#34;EMC shield&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/4_emcshield.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;



&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/5_emcshieldoff.jpg&#34; alt=&#34;EMC shield&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/5_emcshieldoff.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Disconnect the battery by pulling on the fabric tab. If necessary, you can help release the connector by gently pushing the connector away from the socket.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/6_batterycable.jpg&#34; alt=&#34;Battery Cable&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/6_batterycable.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Unscrew the SSD and it will pop up at an angle, ready for removal.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/7_ssdscrew.jpg&#34; alt=&#34;Unscrewing SSD&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/7_ssdscrew.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Slide the EMC shield foil off the old SSD - you might have to separate the adhesive seam.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/8_ssdfoil.jpg&#34; alt=&#34;Defoiling SSD&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/8_ssdfoil.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Transfer the EMC foil to your new SSD. Insert it in the slot at an angle - it will naturally remain sprung &amp;lsquo;up&amp;rsquo; until you screw it down.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/9_newssd.jpg&#34; alt=&#34;New SSD&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/9_newssd.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Screw down the new SSD, and reconnect the battery cable.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/10_battery.jpg&#34; alt=&#34;Reconnect Battery&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/10_battery.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Reinstall the EMC shield, remembering to cover the foil back over the hidden screw.&lt;/p&gt;
&lt;p&gt;Clip the back cover on simply by pressing the two halves of the console together. Reinstall the 8 rear cover screws, taking care to remember the long ones go in the outermost 4 screw-holes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you plan to use this storage in SteamOS, congratulations! Go ahead and turn on the Steam Deck.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In Storage settings, you should see your new space ready to use.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/10_1_storage.jpg&#34; alt=&#34;GParted Live&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/10_1_storage.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;If you plan to install Windows, don&amp;rsquo;t power up your Steam Deck yet!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SteamOS will automatically expand to take up the new space, so if you do power on you&amp;rsquo;ll need to reboot into a bootable GParted Live USB stick to shrink the /home partition again. I found this out the hard way&amp;hellip;&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/11_gparted.jpg&#34; alt=&#34;GParted Live&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/11_gparted.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&#34;installing-windows&#34;&gt;Installing Windows&lt;/h2&gt;
&lt;p&gt;Boot from your choice of USB media (I just used the official Microsoft Windows Media Creation tool), and select the appropriate &amp;lsquo;unallocated space&amp;rsquo; to install Windows into.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/12_windrives.jpg&#34; alt=&#34;Windows Installer&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/12_windrives.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Follow the rest of the instructions just like installing Windows on any normal PC. Once booted, you can install the Valve Steam Deck Windows driver pack from &lt;a href=&#34;https://help.steampowered.com/en/faqs/view/6121-ECCD-D643-BAA8&#34;&gt;here&lt;/a&gt; to enable audio, bluetooth and other features.&lt;/p&gt;
&lt;h2 id=&#34;using-game-pass&#34;&gt;Using Game Pass&lt;/h2&gt;
&lt;p&gt;With a keyboard and mouse attached you can simply run the Xbox application from the Microsoft Store and install any games you want. You can even install games from Steam, but they might not be as optimised as a Linux version, or even the Windows version running under Proton.&lt;/p&gt;
&lt;p&gt;Of course, using a keyboard &amp;amp; mouse defeats the purpose of the Steam Deck entirely. This is where things get confusing. In short, the Steam Deck Controller doesn&amp;rsquo;t appear to Windows like a normal gamepad. When Steam is running, it can &amp;lsquo;see&amp;rsquo; the controller and handle all the input events - but this only works for Steam games, which we had in SteamOS already!&lt;/p&gt;
&lt;p&gt;The simplest solution for me is to install &lt;a href=&#34;https://github.com/Alia5/GlosSI&#34;&gt;GloSSI&lt;/a&gt; - short for &amp;lsquo;Global System-wide Steam Input&amp;rsquo;. Basically, this puts a dummy &amp;lsquo;game&amp;rsquo; in your Steam library that you can launch before any Windows Store games, which enables full controller support to be passed through. It works because Steam thinks you are running a game, and allows the controller to act as a virtual Xbox gamepad which can be seen by your games.&lt;/p&gt;
&lt;p&gt;There are &lt;strong&gt;other&lt;/strong&gt; options for doing the same thing, such as &lt;a href=&#34;https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver&#34;&gt;SWICD&lt;/a&gt; and &lt;a href=&#34;https://github.com/ayufan/steam-deck-tools&#34;&gt;Steam-Deck-Tools&lt;/a&gt;, I recommend you experiment with different tools and see what you prefer. I like the simplicity of GloSSI being able to add my non-Steam games as Steam shortcuts.&lt;/p&gt;
&lt;p&gt;With a bit of luck, you&amp;rsquo;ll be able to play games like Forza Horizon 5 without much hassle at all.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/deckssd/13_Forza.jpg&#34; alt=&#34;Forza Horizon 5&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/deckssd/13_Forza.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&#34;things-to-watch-out-for&#34;&gt;Things to watch out for&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Your Steam Deck will &lt;strong&gt;always&lt;/strong&gt; boot first into Windows now. The temporary workaround is to hold Volume Down + Power to start it up via the Boot Menu and select SteamOS. A more permanent fix is to install something like &lt;a href=&#34;https://github.com/ryanrudolfoba/SteamDeck-Clover-dualboot&#34;&gt;Clover Bootloader&lt;/a&gt; which takes care of managing boot options for you. I haven&amp;rsquo;t tried this yet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows doesn&amp;rsquo;t have native support for managing the refresh rate or thermal profiles, so some games will have bad screen sync, generate lots of heat, or drain your battery quickly. This can&amp;rsquo;t really be helped for now.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Switching to Cloudflare Tunnel</title>
      <link>https://www.davidgrierson.com/post/blog/network_update/</link>
      <pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/network_update/</guid>
      <description>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;For a long time now I have used proxying to simplify hosting multiple HTTP services on a single server.&lt;/p&gt;
&lt;p&gt;The idea is that multiple logical hosts (e.g. web server containers) can run on different ports on the same box, and only a single proxy server needs to face the outside world and deal with incoming requests.&lt;/p&gt;
&lt;p&gt;Each request gets forwarded to the correct logical host using basic criteria like the URI of the incoming request.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;For a long time now I have used proxying to simplify hosting multiple HTTP services on a single server.&lt;/p&gt;
&lt;p&gt;The idea is that multiple logical hosts (e.g. web server containers) can run on different ports on the same box, and only a single proxy server needs to face the outside world and deal with incoming requests.&lt;/p&gt;
&lt;p&gt;Each request gets forwarded to the correct logical host using basic criteria like the URI of the incoming request.&lt;/p&gt;
&lt;h2 id=&#34;pros--cons&#34;&gt;Pros &amp;amp; Cons&lt;/h2&gt;
&lt;p&gt;A proxy makes it possible to host multiple services on the same origin server. Something like &lt;a href=&#34;https://github.com/NginxProxyManager/nginx-proxy-manager&#34; title=&#34;Nginx Proxy Manager&#34;&gt;Nginx Proxy Manager&lt;/a&gt; also helps simplify &amp;amp; automate SSL certificate generation, basic access control, and error handling.&lt;/p&gt;
&lt;p&gt;One oft-mooted advantage is that a proxy server adds another layer of security, but this could also be argued as a potential disadvantage. Not only do you have to secure the individual containers, but you now have to secure the proxy itself. That&amp;rsquo;s an additional layer of complexity and potential vulnerability.&lt;/p&gt;
&lt;p&gt;The ultimate caveat is that your network still needs to expose at least one service port on your gateway or firewall. It might be obvious by now but I am not a cyber security expert, so exposing common service ports (80/443) on my home router has always felt uneasy.&lt;/p&gt;
&lt;h3 id=&#34;external-proxy-services&#34;&gt;External Proxy services&lt;/h3&gt;
&lt;p&gt;One possible answer is to add &lt;strong&gt;another layer&lt;/strong&gt; of proxying on top of the one you host - i.e. an external CDN like Cloudflare.&lt;/p&gt;
&lt;p&gt;By having Cloudflare manage my DNS records and proxy all of my origin services via their CDN, it &lt;strong&gt;obfuscates&lt;/strong&gt; my network&amp;rsquo;s presence on the internet and reduces the amount of attacks that make it to my &amp;lsquo;internal&amp;rsquo; proxy, because domain scanners and web crawlers don&amp;rsquo;t see my IP - they see the Cloudflare one.&lt;/p&gt;
&lt;p&gt;This sounds good but it&amp;rsquo;s not 100% effective for three reasons:&lt;/p&gt;
&lt;p&gt;(1) - My origin still needs to have ports exposed on the firewall;&lt;br&gt;
(2) - With a dynamic residential IP, I need to run yet another daemon to keep the DNS records updated;&lt;br&gt;
(3) - Baddies scan IPs blocks as well as domains, so I still get hits on the firewall regardless of the DNS obfuscation;&lt;/p&gt;
&lt;p&gt;There is a better way&amp;hellip;.&lt;/p&gt;
&lt;h2 id=&#34;cloudflare-tunnel&#34;&gt;Cloudflare Tunnel&lt;/h2&gt;
&lt;p&gt;The Cloudflare Tunnel service acts as an &amp;lsquo;outbound-only&amp;rsquo; route into the Cloudflare network. A daemon running on my server connects to Cloudflare&amp;rsquo;s network without requiring any firewall ingress rules (i.e. port forwarding) and then uses that session to route any traffic inbound from the Cloudflare network.&lt;/p&gt;
&lt;p&gt;Technically, this means I don&amp;rsquo;t need to forward &lt;strong&gt;any&lt;/strong&gt; ports on my own firewall - it can be entirely stealth, as everything is encapsulated in the Cloudflare Tunnel.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t need to run my own proxy server any more (but still could if desired) because the Cloudflare Tunnel can point to my internal, non-routable private IP addresses. Actually since it runs as a Docker container on the same host as my web services, it only needs to be told the Docker IPs and need know nothing about my LAN!&lt;/p&gt;
&lt;p&gt;Because the tunnel is instantiated &lt;strong&gt;from&lt;/strong&gt; my network, I don&amp;rsquo;t even need to publish dynamic DNS updates to Cloudflare any more. I still do for a couple of private domains, because the Cloudflare terms-of-service for free usage restrict bulk non-HTTP traffic such as video.&lt;/p&gt;
&lt;p&gt;Finally, because Cloudflare&amp;rsquo;s expertise is in securing and gatekeeping access to the sites they protect, they take care of all the technicalities like SSL certificate generation, managing your DNS records, and enforcing more-secure versions of client protocols like HTTP/2.&lt;/p&gt;
&lt;p&gt;They also make it easy to set up access control on any service published through the tunnel. I can have a private service available via Cloudflare, and their systems will handle login using one-time-PINs to pre-designated email lists. This certainly &lt;strong&gt;feels&lt;/strong&gt; much safer than using nginx access lists or basic .htaccess methods!&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Although there is a little extra learning overhead, the Cloudflare Tunnel setup is actually simpler to host and maintain because it removes two things from my stack straight away - DDNS updates and running/securing my own proxy. Cloudflare are the experts so it makes absolute sense to shift this risk into their infrastructure, and they very generously provide this free service to hobbyists and small-scale users.&lt;/p&gt;
&lt;p&gt;The most surprising benefit I have noticed is speed of page loads - hopefully this page loaded snappily for you! I don&amp;rsquo;t know where this speed has come from, but I suspect recursive DNS lookups coupled with a chain of proxy requests contributed to the connection overhead.&lt;/p&gt;
&lt;h2 id=&#34;how-to&#34;&gt;How-To&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re interested in trying Cloudflare Tunnel for your own self-hosted services, they have &lt;a href=&#34;https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/&#34; title=&#34;excellent documentation&#34;&gt;excellent documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To start with you&amp;rsquo;ll need to create a Zero Trust domain on Cloudflare Dashboard. Although there is a free-tier, you will need to register a payment method.&lt;/p&gt;
&lt;p&gt;Then, create your tunnel on the dashboard and add your private service addresses and corresponding public hostnames. So for example, this website (&lt;strong&gt;davidgrierson.com&lt;/strong&gt;) is configured to point to an internal address on my server &lt;em&gt;&lt;strong&gt;&lt;a href=&#34;http://172.17.0.xx:8022&#34;&gt;http://172.17.0.xx:8022&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;. Each hostname and service that I set up will use a different internal port, allowing the tunnel to map incoming requests to internal hosts.&lt;/p&gt;
&lt;p&gt;To get the container started on a typical Docker environment, run:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;docker run cloudflare/cloudflared:latest tunnel &amp;ndash;no-autoupdate run &amp;ndash;token XXXX&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To get the container started on Unraid, I created a new container manually in the web GUI and used the following settings:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Name&lt;/em&gt; = &lt;em&gt;&lt;strong&gt;anything you like&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Repository&lt;/em&gt; = &lt;em&gt;&lt;strong&gt;cloudflare/cloudflared&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Docker URL&lt;/em&gt; = &lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://hub.docker.com/r/cloudflare/cloudflared&#34;&gt;https://hub.docker.com/r/cloudflare/cloudflared&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;post arguments&lt;/em&gt; = &lt;em&gt;&lt;strong&gt;tunnel &amp;ndash;no-autoupdate run &amp;ndash;token XXXX&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; where &amp;lsquo;XXXX&amp;rsquo; is a tunnel token generated in the Cloudflare Zero Trust dashboard.&lt;/p&gt;
&lt;p&gt;Voila - hopefully you see a &amp;lsquo;Healthy&amp;rsquo; tunnel in the Cloudflare dashboard, and can start configuring your DNS records to match the host entries you added earlier!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lego Technic Ducati Panigale 42107</title>
      <link>https://www.davidgrierson.com/post/blog/legoducati/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/legoducati/</guid>
      <description>&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?&lt;/h2&gt;
&lt;p&gt;An affordable, pint-sized, plastic version of the Ducati Panigale superbike.&lt;/p&gt;
&lt;h2 id=&#34;does-it-do-anything&#34;&gt;Does it do anything?&lt;/h2&gt;
&lt;p&gt;Yes. Because this is Lego Technic, it&amp;rsquo;s a nice functional model.&lt;br&gt;
There&amp;rsquo;s a basic gearbox with 2 gears plus neutral, a chain drive, and proper suspension.&lt;/p&gt;
&lt;h2 id=&#34;is-it-hard-to-build&#34;&gt;Is it hard to build?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s around 600 pieces and has some fairly intricate mechanical parts, as well as lots of stickers for the body panels.&lt;/p&gt;

&lt;link rel=&#34;stylesheet&#34; href=https://www.davidgrierson.com/css/hugo-easy-gallery.css /&gt;
&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati1.jpg&#34; alt=&#34;Body panels&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;



&lt;div class=&#34;box&#34; style=&#34;max-width:100%&#34;&gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati2.jpg&#34; alt=&#34;Body panels&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati2.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;I&amp;rsquo;d say a fiddly 3-4 hours in total, but I spread it out over a few weeks.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?&lt;/h2&gt;
&lt;p&gt;An affordable, pint-sized, plastic version of the Ducati Panigale superbike.&lt;/p&gt;
&lt;h2 id=&#34;does-it-do-anything&#34;&gt;Does it do anything?&lt;/h2&gt;
&lt;p&gt;Yes. Because this is Lego Technic, it&amp;rsquo;s a nice functional model.&lt;br&gt;
There&amp;rsquo;s a basic gearbox with 2 gears plus neutral, a chain drive, and proper suspension.&lt;/p&gt;
&lt;h2 id=&#34;is-it-hard-to-build&#34;&gt;Is it hard to build?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s around 600 pieces and has some fairly intricate mechanical parts, as well as lots of stickers for the body panels.&lt;/p&gt;

&lt;link rel=&#34;stylesheet&#34; href=https://www.davidgrierson.com/css/hugo-easy-gallery.css /&gt;
&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati1.jpg&#34; alt=&#34;Body panels&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;



&lt;div class=&#34;box&#34; style=&#34;max-width:100%&#34;&gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati2.jpg&#34; alt=&#34;Body panels&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati2.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;I&amp;rsquo;d say a fiddly 3-4 hours in total, but I spread it out over a few weeks.&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:100%&#34;&gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati3.jpg&#34; alt=&#34;Chain&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati3.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;I found the chain was far too slack when using all the links as recommended in the instructions - but removing just one looks far better on the bike.&lt;/p&gt;
&lt;h2 id=&#34;anything-else&#34;&gt;Anything else?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a lovely detailed build and you get some mechanical interaction more worthy of bigger sets.&lt;/p&gt;
&lt;p&gt;It amused me to see two red swords in the parts list when I started the build. Suffice to say this wasn&amp;rsquo;t a mistake, and the Lego engineers can be &lt;strong&gt;very&lt;/strong&gt; clever at re-using components from unrelated sets!&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati4.jpg&#34; alt=&#34;Swords?&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati4.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;



&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati5.jpg&#34; alt=&#34;Genius component re-use&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati5.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;There are nice touches like the brake master cylinders and instrument display too.&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati6.jpg&#34; alt=&#34;Cockpit&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati6.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;The scale isn&amp;rsquo;t &lt;em&gt;quite&lt;/em&gt; the same as other Lego bikes like the &lt;a href=&#34;https://www.lego.com/en-gb/product/bmw-r-1200-gs-adventure-42063&#34;&gt;42063 BMW R 1200 GS&lt;/a&gt; but they are very close and look nice together. I&amp;rsquo;ll need to pick up the Harley Davidson to go with them&amp;hellip;&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati8.jpg&#34; alt=&#34;Next to the GS&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati8.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&#34;gimme-the-details&#34;&gt;Gimme the details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;646 pieces&lt;/li&gt;
&lt;li&gt;Ages 10+&lt;/li&gt;
&lt;li&gt;£59.99 &lt;a href=&#34;https://www.lego.com/en-gb/product/ducati-panigale-v4-r-42107&#34;&gt;direct from Lego&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34;&gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati7.jpg&#34; alt=&#34;Glowing&#34;/&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://www.davidgrierson.com/images/lego_ducati/ducati7.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

</content>
    </item>
    
    <item>
      <title>Valve Steam Deck Dock</title>
      <link>https://www.davidgrierson.com/post/blog/steamdeckdock/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/steamdeckdock/</guid>
      <description>&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h1 id=&#34;update-august-2023&#34;&gt;Update August 2023&lt;/h1&gt;
&lt;p&gt;It seems that many of the issues below have been fixed. My Steam Deck now reliably connects to the Dock and outputs a 4K 60Hz picture on my LG OLED65B9, without any messing around with rebooting or toggling power to the Dock. Whatever has changed, I am grateful! The info below will remain as it was correct at the time.&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a docking station for the Valve Steam Deck. It lets you Dock your Deck.&lt;/p&gt;</description>
      <content>&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h1 id=&#34;update-august-2023&#34;&gt;Update August 2023&lt;/h1&gt;
&lt;p&gt;It seems that many of the issues below have been fixed. My Steam Deck now reliably connects to the Dock and outputs a 4K 60Hz picture on my LG OLED65B9, without any messing around with rebooting or toggling power to the Dock. Whatever has changed, I am grateful! The info below will remain as it was correct at the time.&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a docking station for the Valve Steam Deck. It lets you Dock your Deck.&lt;/p&gt;
&lt;p&gt;Through the power and might of USB-C, it claims to provide 4K 60Hz outputs through HDMI or DisplayPort, can pass through power from a wall adapter, and gives you ethernet plus a couple of extra USB ports.&lt;/p&gt;
&lt;h2 id=&#34;sounds-great-whats-the-catch&#34;&gt;Sounds great, what&amp;rsquo;s the catch?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s buggy. The Steam Deck doesn&amp;rsquo;t always recognise the correct resolution for the attached monitor, and when it does it&amp;rsquo;s often at a much lower refresh rate than expected.&lt;/p&gt;
&lt;p&gt;Using my Samsung ultrawide in picture-by-picture at 1440p, the Dock will not output video to the monitor.  Similarly, it will not play nicely with my LG TV unless I use the manual resolution settings in the latest Preview firmware.&lt;/p&gt;
&lt;p&gt;In theory you should also be able to use it as a generic laptop docking station, but with my work machine I can only get a reliable image when the dock is &lt;strong&gt;unpowered&lt;/strong&gt; and at low refresh rate &amp;amp; 6-bit(!) colour depth. As soon as I plug it in to a wall adapter, the image disappears completely.&lt;/p&gt;
&lt;p&gt;My hopes of using this as a 4K Steam Link replacement are slowly evaporating. It&amp;rsquo;s a real shame as I love the Steam Link concept for living room gaming using &amp;rsquo;the big PC&amp;rsquo;, but it&amp;rsquo;s currently limited to 1080p. The Steam Deck itself has been otherwise flawless (more on that in another post).&lt;/p&gt;
&lt;h2 id=&#34;is-yours-faulty&#34;&gt;Is yours faulty?&lt;/h2&gt;
&lt;p&gt;It doesn&amp;rsquo;t really do what it says it will&amp;hellip; but neither do dozens of others according to the Steam community forums.&lt;/p&gt;
&lt;h2 id=&#34;whats-the-alternative&#34;&gt;What&amp;rsquo;s the alternative?&lt;/h2&gt;
&lt;p&gt;Just get something from JSAUX. It&amp;rsquo;ll save you time, frustration, and possibly money.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Experiment - mapping simulated flight paths</title>
      <link>https://www.davidgrierson.com/post/blog/mapping-flight-data/</link>
      <pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/mapping-flight-data/</guid>
      <description>&lt;h2 id=&#34;the-flight&#34;&gt;The flight&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s nothing exciting about this one, I just needed to generate a test replay.&lt;/p&gt;
&lt;p&gt;LPMA Madeira to GCTS Tenerife South.&lt;br&gt;
PMDG 737-700 in Microsoft Flight Simulator 2020.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;the-map&#34;&gt;The map&lt;/h2&gt;
&lt;p&gt;Flight recorded using &lt;a href=&#34;https://github.com/till213/SkyDolly&#34; title=&#34;SkyDolly&#34;&gt;SkyDolly&lt;/a&gt; and exported in GeoJSON format.&lt;/p&gt;
&lt;p&gt;Data points are at 1Hz intervals in a linestring array in the format [lon, lat, altitude] - however MapLibre-GL &lt;a href=&#34;https://github.com/maplibre/maplibre-gl-js/issues/644&#34; title=&#34;Maplibre issue 644&#34;&gt;presently doesn&amp;rsquo;t support&lt;/a&gt; extruding a line using elevation data, and I am still considering the best workarounds.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;the-flight&#34;&gt;The flight&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s nothing exciting about this one, I just needed to generate a test replay.&lt;/p&gt;
&lt;p&gt;LPMA Madeira to GCTS Tenerife South.&lt;br&gt;
PMDG 737-700 in Microsoft Flight Simulator 2020.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;the-map&#34;&gt;The map&lt;/h2&gt;
&lt;p&gt;Flight recorded using &lt;a href=&#34;https://github.com/till213/SkyDolly&#34; title=&#34;SkyDolly&#34;&gt;SkyDolly&lt;/a&gt; and exported in GeoJSON format.&lt;/p&gt;
&lt;p&gt;Data points are at 1Hz intervals in a linestring array in the format [lon, lat, altitude] - however MapLibre-GL &lt;a href=&#34;https://github.com/maplibre/maplibre-gl-js/issues/644&#34; title=&#34;Maplibre issue 644&#34;&gt;presently doesn&amp;rsquo;t support&lt;/a&gt; extruding a line using elevation data, and I am still considering the best workarounds.&lt;/p&gt;
&lt;p&gt;It might be possible to convert the line array into a polygon, but I expect this will need additional libraries like Turf.js, so for the moment all you&amp;rsquo;ll see is a flat line at 0 altitude.&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&#34;https://www.davidgrierson.com/images/Tenerife_arrival.jpg&#34;  alt=&#34;Approaching the STAR transition&#34;  class=&#34;center&#34;  style=&#34;border-radius: 8px;&#34;  /&gt;



  &lt;img src=&#34;https://www.davidgrierson.com/images/Tenerife_finals.jpg&#34;  alt=&#34;Established on approach&#34;  class=&#34;center&#34;  style=&#34;border-radius: 8px;&#34;  /&gt;



  &lt;img src=&#34;https://www.davidgrierson.com/images/Tenerife_approach.jpg&#34;  alt=&#34;Finals to land&#34;  class=&#34;center&#34;  style=&#34;border-radius: 8px;&#34;  /&gt;

&lt;/p&gt;
&lt;hr&gt;



&lt;div class=&#34;iframe-container&#34;&gt; 

  &lt;!--iframe link is the link to the jsfiddle--&gt; 
&lt;iframe src=&#34;https://www.davidgrierson.com/map2.html&#34; width=&#34;100%&#34; height=&#34;500&#34; &gt;&lt;/iframe&gt; 
&lt;/div&gt; 
&lt;style&gt; 
  .iframe-container {
    display: flex;
    align-items: center;
    justify-content: center;
}
&lt;/style&gt; 

&lt;hr&gt;
&lt;h2 id=&#34;attributions&#34;&gt;Attributions&lt;/h2&gt;
&lt;p&gt;GeoJSON Flight Data recorded and exported using &lt;a href=&#34;https://github.com/till213/SkyDolly&#34; title=&#34;SkyDolly&#34;&gt;SkyDolly&lt;/a&gt;.&lt;br&gt;
Runway &amp;amp; taxiway shape data ©  &lt;a href=&#34;https://www.openstreetmap.org/copyright&#34; title=&#34;OpenStreetMap contributors&#34;&gt;OpenStreetMap contributors&lt;/a&gt;.&lt;br&gt;
Airport metadata courtesy of &lt;a href=&#34;https://ourairports.com/data/&#34; title=&#34;OurAirports&#34;&gt;OurAirports&lt;/a&gt;.&lt;br&gt;
Made with &lt;a href=&#34;https://naturalearthdata.com&#34; title=&#34;Natural Earth&#34;&gt;Natural Earth&lt;/a&gt;.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Secretlab Titan Softweave (2020)</title>
      <link>https://www.davidgrierson.com/post/blog/secretlab_titan/</link>
      <pubDate>Fri, 04 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/secretlab_titan/</guid>
      <description>&lt;p&gt;TLDR: &lt;strong&gt;Gaming chairs shouldn&amp;rsquo;t be your first choice for comfort, especially if you have health issues&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the start of lockdown and the impending shift to work-from-home, I bought one of these based on some fairly positive online reviews. Tech &amp;lsquo;Tubers and &amp;lsquo;Twitterers alike all raved about how it wasn&amp;rsquo;t just another rebranded anonymous gaming chair clone, and how it was solidly-built and comfortable for hours.&lt;/p&gt;
&lt;p&gt;After two years of solid use, my personal opinion is that the comfort aspect is &lt;strong&gt;nonsense&lt;/strong&gt;. A few hours in the Titan has me googling for sciatica remedies. Sure, it &lt;strong&gt;is&lt;/strong&gt; really well upholstered and looks great with the decor in this room, but the ergonomics just don&amp;rsquo;t suit me at all.&lt;/p&gt;</description>
      <content>&lt;p&gt;TLDR: &lt;strong&gt;Gaming chairs shouldn&amp;rsquo;t be your first choice for comfort, especially if you have health issues&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the start of lockdown and the impending shift to work-from-home, I bought one of these based on some fairly positive online reviews. Tech &amp;lsquo;Tubers and &amp;lsquo;Twitterers alike all raved about how it wasn&amp;rsquo;t just another rebranded anonymous gaming chair clone, and how it was solidly-built and comfortable for hours.&lt;/p&gt;
&lt;p&gt;After two years of solid use, my personal opinion is that the comfort aspect is &lt;strong&gt;nonsense&lt;/strong&gt;. A few hours in the Titan has me googling for sciatica remedies. Sure, it &lt;strong&gt;is&lt;/strong&gt; really well upholstered and looks great with the decor in this room, but the ergonomics just don&amp;rsquo;t suit me at all.&lt;/p&gt;
&lt;p&gt;To be fair I am not not exactly a picture of musculoskeletal health to begin with, but I &lt;strong&gt;am&lt;/strong&gt; lucky enough to be able to compare against other well known chairs at work. Specifically, we have an office full of Herman Miller Aerons. The simple fact for me is that I don&amp;rsquo;t have a sore back after sitting in an Aeron for a few hours, but the Titan has me shuffling around trying to find a comfortable position.&lt;/p&gt;
&lt;p&gt;As always with this sort of thing, your mileage may vary. I just know I&amp;rsquo;ll be looking for reconditioned Aerons ASAP&amp;hellip;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>DIY vector mapping</title>
      <link>https://www.davidgrierson.com/post/blog/maptest/</link>
      <pubDate>Fri, 02 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/maptest/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;This post is testing HTML-in-Markdown embedding of a custom MapLibre GL Map. I&amp;rsquo;ll probably use this code in future to add some flair to flight simulator posts.&lt;/p&gt;
&lt;p&gt;Points are filtered in order of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large Airports&lt;/li&gt;
&lt;li&gt;Medium Airports&lt;/li&gt;
&lt;li&gt;Small airports&lt;/li&gt;
&lt;li&gt;Everything else (e.g. heliports, seaplane bases)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Map vector tiles were created from raw data using the &lt;a href=&#34;https://github.com/mapbox/tippecanoe&#34; title=&#34;MapBox Tippecanoe&#34;&gt;MapBox Tippecanoe&lt;/a&gt; tool.&lt;/p&gt;
&lt;h2 id=&#34;static-maps&#34;&gt;Static Maps&lt;/h2&gt;
&lt;p&gt;Tileserver-GL can render static images based on parameters given in the URL.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;This post is testing HTML-in-Markdown embedding of a custom MapLibre GL Map. I&amp;rsquo;ll probably use this code in future to add some flair to flight simulator posts.&lt;/p&gt;
&lt;p&gt;Points are filtered in order of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large Airports&lt;/li&gt;
&lt;li&gt;Medium Airports&lt;/li&gt;
&lt;li&gt;Small airports&lt;/li&gt;
&lt;li&gt;Everything else (e.g. heliports, seaplane bases)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Map vector tiles were created from raw data using the &lt;a href=&#34;https://github.com/mapbox/tippecanoe&#34; title=&#34;MapBox Tippecanoe&#34;&gt;MapBox Tippecanoe&lt;/a&gt; tool.&lt;/p&gt;
&lt;h2 id=&#34;static-maps&#34;&gt;Static Maps&lt;/h2&gt;
&lt;p&gt;Tileserver-GL can render static images based on parameters given in the URL.&lt;/p&gt;

  &lt;img src=&#34;https://maps.davidgrierson.com/styles/radar/static/0,50.933,7@-5,80/784x410.jpeg&#34;  alt=&#34;English Channel&#34;  class=&#34;center&#34;  style=&#34;border-radius: 8px;&#34;  /&gt;


&lt;h2 id=&#34;interactive-maps&#34;&gt;Interactive Maps&lt;/h2&gt;
&lt;p&gt;It can also serve vector tiles to an embedded map renderer, like Maplibre GL.&lt;/p&gt;
&lt;p&gt;Click, drag, and scroll to see how the map filters data points based on zoom-level.&lt;/p&gt;
&lt;p&gt;Zoom &lt;strong&gt;right&lt;/strong&gt; in and you should see taxiway-level features.&lt;/p&gt;
&lt;hr&gt;



&lt;div class=&#34;iframe-container&#34;&gt; 

  &lt;!--iframe link is the link to the jsfiddle--&gt; 
&lt;iframe src=&#34;https://www.davidgrierson.com/map.html&#34; width=&#34;100%&#34; height=&#34;500&#34; &gt;&lt;/iframe&gt; 
&lt;/div&gt; 
&lt;style&gt; 
  .iframe-container {
    display: flex;
    align-items: center;
    justify-content: center;
}
&lt;/style&gt; 

&lt;hr&gt;
&lt;h2 id=&#34;attributions&#34;&gt;Attributions&lt;/h2&gt;
&lt;p&gt;Runway &amp;amp; taxiway shape data ©  &lt;a href=&#34;https://www.openstreetmap.org/copyright&#34; title=&#34;OpenStreetMap contributors&#34;&gt;OpenStreetMap contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Airport metadata courtesy of &lt;a href=&#34;https://ourairports.com/data/&#34; title=&#34;OurAirports&#34;&gt;OurAirports&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Made with &lt;a href=&#34;https://naturalearthdata.com&#34; title=&#34;Natural Earth&#34;&gt;Natural Earth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The map style is my own work. The JSON code is below, if you wish to recreate it. Any use of OSM data must have appropriate attribution.&lt;/p&gt;
&lt;h2 id=&#34;code-sample&#34;&gt;Code sample&lt;/h2&gt;



  &lt;div class=&#34;collapsable-code&#34;&gt;
    &lt;input id=&#34;1&#34; type=&#34;checkbox&#34; checked /&gt;
    &lt;label for=&#34;1&#34;&gt;
      &lt;span class=&#34;collapsable-code__language&#34;&gt;json&lt;/span&gt;
      &lt;span class=&#34;collapsable-code__title&#34;&gt;Radar Style&lt;/span&gt;
      &lt;span class=&#34;collapsable-code__toggle&#34; data-label-expand=&#34;Show&#34; data-label-collapse=&#34;Hide&#34;&gt;&lt;/span&gt;
    &lt;/label&gt;
    &lt;pre class=&#34;language-json&#34; &gt;&lt;code&gt;
{
  &amp;#34;version&amp;#34;: 8,
  &amp;#34;name&amp;#34;: &amp;#34;Radar&amp;#34;,
  &amp;#34;metadata&amp;#34;: {&amp;#34;maputnik:renderer&amp;#34;: &amp;#34;mbgljs&amp;#34;},
  &amp;#34;sources&amp;#34;: {
    &amp;#34;natural_earth.vector&amp;#34;: {
      &amp;#34;type&amp;#34;: &amp;#34;vector&amp;#34;,
      &amp;#34;url&amp;#34;: &amp;#34;https://{your_tile_source.json}&amp;#34;
    },
    &amp;#34;latest.planet&amp;#34;: {
      &amp;#34;type&amp;#34;: &amp;#34;vector&amp;#34;,
      &amp;#34;attribution&amp;#34;: &amp;#34;&amp;lt;a href=&amp;#39;http://openstreetmap.org/copyright&amp;#39;&amp;gt;© OpenStreetMap contributors&amp;lt;/a&amp;gt;&amp;#34;,
      &amp;#34;url&amp;#34;: &amp;#34;https://{your_tile_source.json}&amp;#34;
    },
    &amp;#34;ICAO&amp;#34;: {
      &amp;#34;type&amp;#34;: &amp;#34;vector&amp;#34;,
      &amp;#34;url&amp;#34;: &amp;#34;https://{your_tile_source.json}&amp;#34;
    },
    &amp;#34;Graticules_20&amp;#34;: {
      &amp;#34;type&amp;#34;: &amp;#34;vector&amp;#34;,
      &amp;#34;url&amp;#34;: &amp;#34;https://{your_tile_source.json}&amp;#34;
    }
  },
  &amp;#34;sprite&amp;#34;: &amp;#34;https://{your_url}/sprites/&amp;#34;,
  &amp;#34;glyphs&amp;#34;: &amp;#34;https://{your_url}/fonts/{fontstack}/{range}.pbf&amp;#34;,
  &amp;#34;layers&amp;#34;: [
    {&amp;#34;id&amp;#34;: &amp;#34;terrain&amp;#34;, &amp;#34;type&amp;#34;: &amp;#34;background&amp;#34;},
    {
      &amp;#34;id&amp;#34;: &amp;#34;water&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;fill&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;natural_earth.vector&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;water&amp;#34;,
      &amp;#34;paint&amp;#34;: {
        &amp;#34;fill-color&amp;#34;: &amp;#34;rgba(0, 7, 79, 1)&amp;#34;,
        &amp;#34;fill-outline-color&amp;#34;: &amp;#34;rgba(24, 125, 0, 1)&amp;#34;
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;graticules&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;line&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;Graticules_20&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;ne_50m_graticules_20&amp;#34;,
      &amp;#34;paint&amp;#34;: {
        &amp;#34;line-color&amp;#34;: &amp;#34;rgba(191, 180, 155, 1)&amp;#34;,
        &amp;#34;line-dasharray&amp;#34;: [50, 50],
        &amp;#34;line-width&amp;#34;: 0.5,
        &amp;#34;line-opacity&amp;#34;: 0.5
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;aeroways_2&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;line&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;latest.planet&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;osm&amp;#34;,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;==&amp;#34;, &amp;#34;aeroway&amp;#34;, &amp;#34;taxiway&amp;#34;]],
      &amp;#34;layout&amp;#34;: {&amp;#34;line-cap&amp;#34;: &amp;#34;butt&amp;#34;, &amp;#34;line-join&amp;#34;: &amp;#34;round&amp;#34;},
      &amp;#34;paint&amp;#34;: {
        &amp;#34;line-color&amp;#34;: &amp;#34;rgba(175, 175, 63, 1)&amp;#34;,
        &amp;#34;line-dasharray&amp;#34;: [1],
        &amp;#34;line-opacity&amp;#34;: 0.5,
        &amp;#34;line-width&amp;#34;: 2,
        &amp;#34;line-gap-width&amp;#34;: 3
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;aeroways_1&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;line&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;latest.planet&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;osm&amp;#34;,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;==&amp;#34;, &amp;#34;aeroway&amp;#34;, &amp;#34;runway&amp;#34;]],
      &amp;#34;layout&amp;#34;: {
        &amp;#34;line-cap&amp;#34;: &amp;#34;square&amp;#34;,
        &amp;#34;line-join&amp;#34;: &amp;#34;miter&amp;#34;,
        &amp;#34;line-round-limit&amp;#34;: 10
      },
      &amp;#34;paint&amp;#34;: {
        &amp;#34;line-color&amp;#34;: &amp;#34;rgba(255, 255, 255, 1)&amp;#34;,
        &amp;#34;line-width&amp;#34;: 6,
        &amp;#34;line-dasharray&amp;#34;: [1],
        &amp;#34;line-opacity&amp;#34;: 0.5,
        &amp;#34;line-gap-width&amp;#34;: 2
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_points_else&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;circle&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 9,
      &amp;#34;filter&amp;#34;: [
        &amp;#34;!&amp;#34;,
        [
          &amp;#34;any&amp;#34;,
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;small_airport&amp;#34;],
            false
          ],
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;medium_airport&amp;#34;],
            false
          ],
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;large_airport&amp;#34;],
            false
          ]
        ]
      ],
      &amp;#34;paint&amp;#34;: {
        &amp;#34;circle-color&amp;#34;: &amp;#34;rgba(149, 0, 255, 0)&amp;#34;,
        &amp;#34;circle-stroke-color&amp;#34;: &amp;#34;rgba(206, 255, 0, 1)&amp;#34;,
        &amp;#34;circle-stroke-width&amp;#34;: 1,
        &amp;#34;circle-radius&amp;#34;: 2
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_points_small&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;circle&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 6,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;small_airport&amp;#34;]],
      &amp;#34;paint&amp;#34;: {
        &amp;#34;circle-color&amp;#34;: &amp;#34;rgba(149, 0, 255, 0)&amp;#34;,
        &amp;#34;circle-stroke-color&amp;#34;: &amp;#34;rgba(0, 79, 255, 1)&amp;#34;,
        &amp;#34;circle-stroke-width&amp;#34;: 1,
        &amp;#34;circle-radius&amp;#34;: 2
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_points_medium&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;circle&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 5,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;medium_airport&amp;#34;]],
      &amp;#34;paint&amp;#34;: {
        &amp;#34;circle-color&amp;#34;: &amp;#34;rgba(149, 0, 255, 1)&amp;#34;,
        &amp;#34;circle-stroke-color&amp;#34;: &amp;#34;rgba(136, 192, 218, 1)&amp;#34;,
        &amp;#34;circle-stroke-width&amp;#34;: 1,
        &amp;#34;circle-radius&amp;#34;: 2
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_points_large&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;circle&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;large_airport&amp;#34;]],
      &amp;#34;paint&amp;#34;: {
        &amp;#34;circle-color&amp;#34;: &amp;#34;rgba(235, 0, 255, 1)&amp;#34;,
        &amp;#34;circle-stroke-color&amp;#34;: &amp;#34;rgba(3, 20, 189, 1)&amp;#34;,
        &amp;#34;circle-stroke-width&amp;#34;: 1,
        &amp;#34;circle-radius&amp;#34;: 4,
        &amp;#34;circle-blur&amp;#34;: 0.5
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_labels_else&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;symbol&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 9.5,
      &amp;#34;filter&amp;#34;: [
        &amp;#34;!&amp;#34;,
        [
          &amp;#34;any&amp;#34;,
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;small_airport&amp;#34;],
            false
          ],
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;medium_airport&amp;#34;],
            false
          ],
          [
            &amp;#34;case&amp;#34;,
            [&amp;#34;==&amp;#34;, [&amp;#34;typeof&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;]], &amp;#34;string&amp;#34;],
            [&amp;#34;==&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;type&amp;#34;], &amp;#34;large_airport&amp;#34;],
            false
          ]
        ]
      ],
      &amp;#34;layout&amp;#34;: {
        &amp;#34;text-field&amp;#34;: [
          &amp;#34;step&amp;#34;,
          [&amp;#34;zoom&amp;#34;],
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          0,
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          9,
          [&amp;#34;concat&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;], &amp;#34;\n&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;name&amp;#34;]]
        ],
        &amp;#34;text-allow-overlap&amp;#34;: false,
        &amp;#34;text-ignore-placement&amp;#34;: false,
        &amp;#34;symbol-z-order&amp;#34;: &amp;#34;auto&amp;#34;,
        &amp;#34;text-padding&amp;#34;: 10,
        &amp;#34;text-anchor&amp;#34;: &amp;#34;top&amp;#34;,
        &amp;#34;text-optional&amp;#34;: true,
        &amp;#34;text-variable-anchor&amp;#34;: [&amp;#34;left&amp;#34;, &amp;#34;right&amp;#34;, &amp;#34;top&amp;#34;, &amp;#34;bottom&amp;#34;],
        &amp;#34;icon-allow-overlap&amp;#34;: true,
        &amp;#34;text-font&amp;#34;: [&amp;#34;Open Sans Regular&amp;#34;, &amp;#34;Arial Unicode MS Regular&amp;#34;],
        &amp;#34;symbol-avoid-edges&amp;#34;: true,
        &amp;#34;symbol-spacing&amp;#34;: 100,
        &amp;#34;text-size&amp;#34;: 12
      },
      &amp;#34;paint&amp;#34;: {&amp;#34;text-color&amp;#34;: &amp;#34;rgba(206, 255, 0, 1)&amp;#34;, &amp;#34;text-opacity&amp;#34;: 1}
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_labels_small&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;symbol&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 8,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;small_airport&amp;#34;]],
      &amp;#34;layout&amp;#34;: {
        &amp;#34;text-field&amp;#34;: [
          &amp;#34;step&amp;#34;,
          [&amp;#34;zoom&amp;#34;],
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          0,
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          9,
          [&amp;#34;concat&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;], &amp;#34;\n&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;name&amp;#34;]]
        ],
        &amp;#34;text-allow-overlap&amp;#34;: false,
        &amp;#34;text-ignore-placement&amp;#34;: false,
        &amp;#34;symbol-z-order&amp;#34;: &amp;#34;auto&amp;#34;,
        &amp;#34;text-padding&amp;#34;: 10,
        &amp;#34;text-anchor&amp;#34;: &amp;#34;top&amp;#34;,
        &amp;#34;text-optional&amp;#34;: true,
        &amp;#34;text-variable-anchor&amp;#34;: [&amp;#34;left&amp;#34;, &amp;#34;right&amp;#34;, &amp;#34;top&amp;#34;, &amp;#34;bottom&amp;#34;],
        &amp;#34;icon-allow-overlap&amp;#34;: true,
        &amp;#34;text-font&amp;#34;: [&amp;#34;Open Sans Regular&amp;#34;, &amp;#34;Arial Unicode MS Regular&amp;#34;],
        &amp;#34;symbol-avoid-edges&amp;#34;: true,
        &amp;#34;symbol-spacing&amp;#34;: 100,
        &amp;#34;text-size&amp;#34;: 12
      },
      &amp;#34;paint&amp;#34;: {&amp;#34;text-color&amp;#34;: &amp;#34;rgba(0, 79, 255, 1)&amp;#34;, &amp;#34;text-opacity&amp;#34;: 1}
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_labels_medium&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;symbol&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 6,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;medium_airport&amp;#34;]],
      &amp;#34;layout&amp;#34;: {
        &amp;#34;text-field&amp;#34;: [
          &amp;#34;step&amp;#34;,
          [&amp;#34;zoom&amp;#34;],
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          0,
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          8,
          [&amp;#34;concat&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;], &amp;#34;\n&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;name&amp;#34;]]
        ],
        &amp;#34;text-allow-overlap&amp;#34;: false,
        &amp;#34;text-ignore-placement&amp;#34;: false,
        &amp;#34;symbol-z-order&amp;#34;: &amp;#34;auto&amp;#34;,
        &amp;#34;text-padding&amp;#34;: 10,
        &amp;#34;text-anchor&amp;#34;: &amp;#34;top&amp;#34;,
        &amp;#34;text-optional&amp;#34;: true,
        &amp;#34;text-variable-anchor&amp;#34;: [&amp;#34;left&amp;#34;, &amp;#34;right&amp;#34;, &amp;#34;top&amp;#34;, &amp;#34;bottom&amp;#34;],
        &amp;#34;icon-allow-overlap&amp;#34;: true,
        &amp;#34;text-font&amp;#34;: [&amp;#34;Open Sans Regular&amp;#34;, &amp;#34;Arial Unicode MS Regular&amp;#34;],
        &amp;#34;symbol-avoid-edges&amp;#34;: true,
        &amp;#34;symbol-spacing&amp;#34;: 100,
        &amp;#34;text-size&amp;#34;: 12
      },
      &amp;#34;paint&amp;#34;: {&amp;#34;text-color&amp;#34;: &amp;#34;rgba(167, 62, 173, 1)&amp;#34;, &amp;#34;text-opacity&amp;#34;: 1}
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;ICAO_labels_large&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;symbol&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;ICAO&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;gps_codes&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 4,
      &amp;#34;filter&amp;#34;: [&amp;#34;all&amp;#34;, [&amp;#34;has&amp;#34;, &amp;#34;gps_code&amp;#34;], [&amp;#34;==&amp;#34;, &amp;#34;type&amp;#34;, &amp;#34;large_airport&amp;#34;]],
      &amp;#34;layout&amp;#34;: {
        &amp;#34;text-field&amp;#34;: [
          &amp;#34;step&amp;#34;,
          [&amp;#34;zoom&amp;#34;],
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          0,
          [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;],
          6,
          [&amp;#34;concat&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;gps_code&amp;#34;], &amp;#34;\n&amp;#34;, [&amp;#34;get&amp;#34;, &amp;#34;name&amp;#34;]]
        ],
        &amp;#34;text-allow-overlap&amp;#34;: false,
        &amp;#34;text-ignore-placement&amp;#34;: false,
        &amp;#34;symbol-z-order&amp;#34;: &amp;#34;auto&amp;#34;,
        &amp;#34;text-padding&amp;#34;: 10,
        &amp;#34;text-anchor&amp;#34;: &amp;#34;top&amp;#34;,
        &amp;#34;text-optional&amp;#34;: true,
        &amp;#34;text-variable-anchor&amp;#34;: [&amp;#34;left&amp;#34;, &amp;#34;right&amp;#34;, &amp;#34;top&amp;#34;, &amp;#34;bottom&amp;#34;],
        &amp;#34;icon-allow-overlap&amp;#34;: true,
        &amp;#34;text-font&amp;#34;: [&amp;#34;Open Sans Regular&amp;#34;, &amp;#34;Arial Unicode MS Regular&amp;#34;],
        &amp;#34;symbol-avoid-edges&amp;#34;: true,
        &amp;#34;symbol-spacing&amp;#34;: 100,
        &amp;#34;text-size&amp;#34;: [&amp;#34;literal&amp;#34;, 15],
        &amp;#34;icon-anchor&amp;#34;: &amp;#34;left&amp;#34;,
        &amp;#34;text-justify&amp;#34;: &amp;#34;center&amp;#34;
      },
      &amp;#34;paint&amp;#34;: {
        &amp;#34;text-color&amp;#34;: &amp;#34;rgba(235, 0, 255, 1)&amp;#34;,
        &amp;#34;text-opacity&amp;#34;: 1,
        &amp;#34;text-translate&amp;#34;: [0, 0]
      }
    },
    {
      &amp;#34;id&amp;#34;: &amp;#34;rivers&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;line&amp;#34;,
      &amp;#34;source&amp;#34;: &amp;#34;natural_earth.vector&amp;#34;,
      &amp;#34;source-layer&amp;#34;: &amp;#34;river&amp;#34;,
      &amp;#34;minzoom&amp;#34;: 4,
      &amp;#34;paint&amp;#34;: {&amp;#34;line-color&amp;#34;: &amp;#34;rgba(3, 11, 96, 1)&amp;#34;}
    }
  ],
  &amp;#34;attribution&amp;#34;: &amp;#34;&amp;lt;a href=&amp;#39;http://openstreetmap.org/copyright&amp;#39;&amp;gt;© OpenStreetMap contributors&amp;lt;/a&amp;gt;&amp;#34;,
  &amp;#34;id&amp;#34;: &amp;#34;j148gjx7r&amp;#34;,
  &amp;#34;owner&amp;#34;: &amp;#34;David Grierson&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;


</content>
    </item>
    
    <item>
      <title>Why Hugo?</title>
      <link>https://www.davidgrierson.com/post/blog/whyhugo/</link>
      <pubDate>Thu, 25 Aug 2022 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/whyhugo/</guid>
      <description>&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;For a long time I favoured Wordpress + nginx + MariaDB as the backend for personal web projects like this. Recently, I decided to switch to static pages in an effort to simplify (hah!) my workflow and reduce load on my server.&lt;/p&gt;
&lt;p&gt;This was driven by a few things.&lt;/p&gt;
&lt;h3 id=&#34;cost&#34;&gt;Cost&lt;/h3&gt;
&lt;p&gt;Yes, they are both free if you host your own. I used to host my WordPress instance on a cloud VPS, but with better things to spend my money on I decided to bring it &amp;ldquo;in-house&amp;rdquo;, making use of the excellent Docker manager feature in my Unraid NAS machine.&lt;/p&gt;</description>
      <content>&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;For a long time I favoured Wordpress + nginx + MariaDB as the backend for personal web projects like this. Recently, I decided to switch to static pages in an effort to simplify (hah!) my workflow and reduce load on my server.&lt;/p&gt;
&lt;p&gt;This was driven by a few things.&lt;/p&gt;
&lt;h3 id=&#34;cost&#34;&gt;Cost&lt;/h3&gt;
&lt;p&gt;Yes, they are both free if you host your own. I used to host my WordPress instance on a cloud VPS, but with better things to spend my money on I decided to bring it &amp;ldquo;in-house&amp;rdquo;, making use of the excellent Docker manager feature in my Unraid NAS machine.&lt;/p&gt;
&lt;p&gt;I would have continued with a locally hosted WordPress, were it not for&amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;reliability&#34;&gt;Reliability&lt;/h3&gt;
&lt;p&gt;Keeping the various containers talking to each other was a nightmare. Migrating my content from the old installation never went cleanly and required lots of manual clean-up, particularly in the media library. Unraid whoopsies (mostly user-error) would break file &amp;amp; folder permissions for the web server container, and bad upstream Docker builds would cause irrecoverable damage to the database installation.&lt;/p&gt;
&lt;p&gt;I persisted for some while after switching out MariaDB for MySQL, but eventually the database bugs re-occurred and I decided to throw the towel in. I can live with mistakes I&amp;rsquo;ve made causing rework, but when you&amp;rsquo;re pulling from mainline/stable upstream repositories and stuff is breaking, it&amp;rsquo;s more effort than it&amp;rsquo;s worth.&lt;/p&gt;
&lt;p&gt;No doubt most of this was my own ineptitude, but it was just taking up too much of my&amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;personal-time&#34;&gt;Personal time&lt;/h3&gt;
&lt;p&gt;Maintaining and securing a WordPress installation can be time consuming. Even when it was working well on my cloud machine, I felt like I spent as much time looking after the various plug-ins, themes, database connections, analytics options, et cetera et cetera, than actually making content!&lt;/p&gt;
&lt;p&gt;Worrying about security also led me to overburden my Wordpress installs with &amp;ldquo;helpful&amp;rdquo; plug-ins - the sort that would help you with SSL, real-time threat monitoring, etc. After hearing about a couple of undisclosed vulnerabilities in the plug-ins that were supposed to be protecting my stuff, I realised that I couldn&amp;rsquo;t trust them. They were also seriously slowing the site down.&lt;/p&gt;
&lt;h3 id=&#34;speed&#34;&gt;Speed&lt;/h3&gt;
&lt;p&gt;What little content I had was poorly optimised, and moving to self-hosting also required some thinking about how to properly serve that content within the limits of a 100Mbps upload. Not only that, but my server was already working full duty as a CCTV NVR, Plex Media Server, ADS-B receiver, Valheim server, Virtual Machine host, and whatever else I could throw at it.&lt;/p&gt;
&lt;p&gt;The answer to this problem had to have low overhead, be simple to get started with, and easy to work with going forward. I think I managed to tick 2/3 of those boxes&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;the-solution&#34;&gt;The solution&lt;/h2&gt;
&lt;h3 id=&#34;computing-overhead&#34;&gt;Computing overhead&lt;/h3&gt;
&lt;p&gt;As far as content rendering goes, static site generators are undoubtedly quicker than a full-featured CMS. If I&amp;rsquo;m being really honest, I &lt;strong&gt;didn&amp;rsquo;t need&lt;/strong&gt; all the functionality and complexity of WordPress. This is a hobby site, not a business or a popular blog.&lt;/p&gt;
&lt;p&gt;After some trial and error, Hugo won the day. I dabbled with Ghost (a database-driven WordPress alternative) and Grav (a flat-file CMS) but both still had a level of complexity above my needs.&lt;/p&gt;
&lt;p&gt;Being supremely lazy, I liked that Hugo had reliable Docker images available in the community, its own in-built web server &lt;strong&gt;for testing in dev&lt;/strong&gt;, and a really low footprint on my system. Hugo &lt;strong&gt;only runs when you generate the content, and for a simple site like this that only takes a few hundred milliseconds.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nothing on this environment is directly exposed to the Internet. To actually serve the site, I went for Nginx over Apache simply because it&amp;rsquo;s what I&amp;rsquo;m used to. I use the Nginx proxying features through a well-known front-end interface, which helps me serve multiple domains and implement basic access control really easily, whilst automating things like SSL-certificate provisioning.&lt;/p&gt;
&lt;p&gt;Local proxying apparently also helps with speed of content delivery, but the real bottleneck here is my 100Mbps upload. So the final piece in the puzzle is a reputable global CDN, that also happens to be really friendly to hobbyists.&lt;/p&gt;
&lt;h3 id=&#34;speed-1&#34;&gt;Speed&lt;/h3&gt;
&lt;p&gt;By CDN, I mean CloudFlare. With appropriate allow-lists in place, my proxy server only serves content to the CloudFlare CDN, which in turn serves it to you.&lt;/p&gt;
&lt;p&gt;CloudFlare also helps accommodate my ever-changing IP address. They have a fast, global DNS network with DDNS support, so even when my lease renews they can keep the site cached &amp;amp; viewable until the DNS records are updated.&lt;/p&gt;
&lt;h3 id=&#34;simplicity&#34;&gt;Simplicity&lt;/h3&gt;
&lt;p&gt;Ah, the elephant in the room. You see, Hugo doesn&amp;rsquo;t have an elegant (convoluted?) built-in WYSIWYG editor like WordPress. Almost all of your content is written in &lt;a href=&#34;https://daringfireball.net/projects/markdown/&#34; title=&#34;Markdown&#34;&gt;Markdown&lt;/a&gt;, which is a nice human-readable sort of source file that can be readily converted into HTML.&lt;/p&gt;



  &lt;div class=&#34;collapsable-code&#34;&gt;
    &lt;input id=&#34;1&#34; type=&#34;checkbox&#34; checked /&gt;
    &lt;label for=&#34;1&#34;&gt;
      &lt;span class=&#34;collapsable-code__language&#34;&gt;markdown&lt;/span&gt;
      &lt;span class=&#34;collapsable-code__title&#34;&gt;Markdown example&lt;/span&gt;
      &lt;span class=&#34;collapsable-code__toggle&#34; data-label-expand=&#34;Show&#34; data-label-collapse=&#34;Hide&#34;&gt;&lt;/span&gt;
    &lt;/label&gt;
    &lt;pre class=&#34;language-markdown&#34; &gt;&lt;code&gt;
### In markdown you do headings like this
And make stuff **bold** like this.
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;


&lt;p&gt;Is this a huge barrier to entry? Not really. In a plain text editor, Markdown still has great readability. I&amp;rsquo;m using VS Code, which helpfully adds highlights &amp;amp; emphasis to things like typography styling or link syntax.&lt;/p&gt;
&lt;p&gt;Once I got over the initial hurdles with Hugo - learning about content structure, theming &amp;amp; templates, and getting my Nginx configuration correct, actually writing content has become a breeze. Editing a simple text file and dumping it in the working directory is so much easier than logging in to WordPress and getting bogged down in customisation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4/10&lt;/strong&gt; for learning curve, but &lt;strong&gt;10/10&lt;/strong&gt; for speed once you get started.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;how-to&#34;&gt;How-To?&lt;/h1&gt;
&lt;p&gt;Sorry, I&amp;rsquo;d love to but I&amp;rsquo;m simply not qualified. If I gave instructions and your box ended up getting pwned, I&amp;rsquo;d feel bad. But you can read more about the stack including particular Docker images used below. They all have excellent community help available to get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/klakegg/hugo/&#34; title=&#34;klakegg/hugo&#34;&gt;klakegg/hugo&lt;/a&gt; static site generator docker image
&lt;ul&gt;
&lt;li&gt;This generates HTML from my markdown source files.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/panr/hugo-theme-terminal&#34; title=&#34;panr-hugo-theme-terminal&#34;&gt;panr-hugo-theme-terminal&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;The theme I use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/linuxserver/docker-nginx&#34; title=&#34;Linuxserver.io Nginx&#34;&gt;Linuxserver.io Nginx&lt;/a&gt; web server docker image
&lt;ul&gt;
&lt;li&gt;This serves the web site on my &lt;strong&gt;internal&lt;/strong&gt; network&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/NginxProxyManager/nginx-proxy-manager&#34; title=&#34;Nginx Proxy Manager&#34;&gt;Nginx Proxy Manager&lt;/a&gt; docker image
&lt;ul&gt;
&lt;li&gt;This acts as a proxy between the Internet and my internal network, and also manages SSL certificates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/oznu/cloudflare-ddns/&#34; title=&#34;Cloudflare DDNS&#34;&gt;Cloudflare DDNS&lt;/a&gt; docker image
&lt;ul&gt;
&lt;li&gt;This updates the Cloudflare DNS network with my dynamic IP address, allowing me to add a second proxy layer using the Cloudflare CDN.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Hello!</title>
      <link>https://www.davidgrierson.com/post/hello/</link>
      <pubDate>Mon, 22 Aug 2022 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/hello/</guid>
      <description>&lt;p&gt;This is hopefully the first of many dull and uninspiring snippets to be published here.&lt;/p&gt;
&lt;p&gt;I hope you find it useful.&lt;/p&gt;</description>
      <content>&lt;p&gt;This is hopefully the first of many dull and uninspiring snippets to be published here.&lt;/p&gt;
&lt;p&gt;I hope you find it useful.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title></title>
      <link>https://www.davidgrierson.com/post/blog/current_computers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/post/blog/current_computers/</guid>
      <description>&lt;p&gt;Updated: 2026-01-01&lt;/p&gt;
&lt;h2 id=&#34;daily-drivers&#34;&gt;Daily drivers:&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Main&lt;/strong&gt;    - Ryzen 5800X3D + Radeon RX 6900 XT&lt;br&gt;
&lt;strong&gt;Notebook&lt;/strong&gt; - Ryzen 9955HX3D + NVIDIA RTX 5080&lt;br&gt;
&lt;strong&gt;Mobile&lt;/strong&gt;  - Valve Steam Deck LCD + 1TB upgrade&lt;/p&gt;
&lt;h2 id=&#34;retro-machines&#34;&gt;Retro Machines&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Windows early 00&amp;rsquo;s build&lt;/strong&gt;   - Pentium 3 Coppermine 1.1GHz + GeForce Ti4200 + SBLive!- Windows 98&lt;br&gt;
&lt;strong&gt;Windows mid 90&amp;rsquo;s build&lt;/strong&gt;   - Pentium 2 450MHz + 3DFX Voodoo3 3000 AGP + 3DFX Voodoo PCI + SB AWE64 + SBLive!&lt;br&gt;
&lt;strong&gt;PowerPC Mac&lt;/strong&gt;   - Power Mac G4 1.25GHz + Radeon 9000 &amp;ldquo;Mirror Drive Door&amp;rdquo;  - OS 9.2.2 and OS X &amp;lsquo;Shuriken Tiger&amp;rsquo;&lt;/p&gt;</description>
      <content>&lt;p&gt;Updated: 2026-01-01&lt;/p&gt;
&lt;h2 id=&#34;daily-drivers&#34;&gt;Daily drivers:&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Main&lt;/strong&gt;    - Ryzen 5800X3D + Radeon RX 6900 XT&lt;br&gt;
&lt;strong&gt;Notebook&lt;/strong&gt; - Ryzen 9955HX3D + NVIDIA RTX 5080&lt;br&gt;
&lt;strong&gt;Mobile&lt;/strong&gt;  - Valve Steam Deck LCD + 1TB upgrade&lt;/p&gt;
&lt;h2 id=&#34;retro-machines&#34;&gt;Retro Machines&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Windows early 00&amp;rsquo;s build&lt;/strong&gt;   - Pentium 3 Coppermine 1.1GHz + GeForce Ti4200 + SBLive!- Windows 98&lt;br&gt;
&lt;strong&gt;Windows mid 90&amp;rsquo;s build&lt;/strong&gt;   - Pentium 2 450MHz + 3DFX Voodoo3 3000 AGP + 3DFX Voodoo PCI + SB AWE64 + SBLive!&lt;br&gt;
&lt;strong&gt;PowerPC Mac&lt;/strong&gt;   - Power Mac G4 1.25GHz + Radeon 9000 &amp;ldquo;Mirror Drive Door&amp;rdquo;  - OS 9.2.2 and OS X &amp;lsquo;Shuriken Tiger&amp;rsquo;&lt;/p&gt;
&lt;h2 id=&#34;servers-and-sbcs&#34;&gt;Servers and SBCs&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Misc&lt;/strong&gt;    - Assorted raspberry Pi 1/3/3+/4 doing random jobs:&lt;br&gt;
- load balancing &amp;amp; redundant trio of DNS servers&lt;br&gt;
- USB4VC input converter for retro PCs&lt;br&gt;
- ADS-B and ACARS receiver&lt;br&gt;
- Batocera Retro Games console&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plex/NAS/Docker/Web Server&lt;/strong&gt;  - AMD 5600X + Nvidia Geforce 1080 + 36TB array + 500GB SSD cache&lt;/p&gt;
&lt;h2 id=&#34;consoles&#34;&gt;Consoles&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Xbox Series X&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Original Xbox&lt;/strong&gt; - softmodded &amp;amp; Insignia-enabled&lt;br&gt;
&lt;strong&gt;Playstaion 2&lt;/strong&gt; - Silver with softmod and network loading&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>About</title>
      <link>https://www.davidgrierson.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/about/</guid>
      <description>&lt;hr&gt;
&lt;h2 id=&#34;me&#34;&gt;Me&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m a systems engineer in the air traffic control industry. I&amp;rsquo;m working towards becoming a Chartered Engineer (CEng) having previously studied Aeronautical Engineering at Glasgow. I have experience in a range of industries including healthcare, defence technology, specialist road haulage, and aviation.&lt;/p&gt;
&lt;p&gt;Aviation is my main interest - ever since my dad took me to Leuchars Airshow, or arranged visits to the cockpit on holiday flights. When I&amp;rsquo;m gaming, it will most likely involve some sort of flight simulator. I host a small ADS-B receiver, and made a brief attempt at obtaining my PPL a long time ago. I&amp;rsquo;d love to give that another go some time, when life allows.&lt;/p&gt;</description>
      <content>&lt;hr&gt;
&lt;h2 id=&#34;me&#34;&gt;Me&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m a systems engineer in the air traffic control industry. I&amp;rsquo;m working towards becoming a Chartered Engineer (CEng) having previously studied Aeronautical Engineering at Glasgow. I have experience in a range of industries including healthcare, defence technology, specialist road haulage, and aviation.&lt;/p&gt;
&lt;p&gt;Aviation is my main interest - ever since my dad took me to Leuchars Airshow, or arranged visits to the cockpit on holiday flights. When I&amp;rsquo;m gaming, it will most likely involve some sort of flight simulator. I host a small ADS-B receiver, and made a brief attempt at obtaining my PPL a long time ago. I&amp;rsquo;d love to give that another go some time, when life allows.&lt;/p&gt;
&lt;p&gt;I have a habit of hoarding ancient computers &amp;amp; games consoles. I like to extend the useful life of old kit and indulge in a bit of childhood nostalgia at the same time. My baseline for &amp;lsquo;vintage&amp;rsquo; starts somewhere between Windows 95 and the original Xbox, but anything goes really. I keep a list of them &lt;a href=&#34;https://www.davidgrierson.com/post/blog/current_computers/&#34; title=&#34;Current Computers&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I live in Scotland with my family.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer: nothing on this site is endorsed by or necessarily reflects the views of my employer. All opinions are my own.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;this-site&#34;&gt;This Site&lt;/h2&gt;
&lt;p&gt;This is mainly a sandbox for learning about web admin, testing my skills and sharing snippets of things that interest me. I hope &lt;em&gt;someone&lt;/em&gt; might find it useful or interesting.&lt;/p&gt;
&lt;p&gt;The blog format might be a few decades past prime time, but it&amp;rsquo;s got a strong nostalgia factor for me. I know everyone is on Twitch or YouTube these days but I&amp;rsquo;d rather be behind a camera than in front of one, and my voiceovers would be snoreworthy.&lt;/p&gt;
&lt;p&gt;The site is mostly self-hosted. Content is generated in Markdown using Hugo CMS, and hosted on an Unraid NAS system. Everything is containerised within Docker and tunnelled to the outside world via Cloudflare.&lt;/p&gt;
&lt;p&gt;The stack includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/klakegg/hugo/&#34; title=&#34;klakegg/hugo&#34;&gt;klakegg/hugo&lt;/a&gt; static site generator docker image
&lt;ul&gt;
&lt;li&gt;This generates HTML from my markdown source files.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/linuxserver/docker-nginx&#34; title=&#34;Linuxserver.io Nginx&#34;&gt;Linuxserver.io Nginx&lt;/a&gt; web server docker image
&lt;ul&gt;
&lt;li&gt;This serves the website internally on my private network.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/oznu/cloudflare-ddns/&#34; title=&#34;Cloudflare DDNS&#34;&gt;Cloudflare DDNS&lt;/a&gt; docker image
&lt;ul&gt;
&lt;li&gt;This updates the Cloudflare DNS network with my dynamic IP address, allowing me to add a second proxy layer using the Cloudflare CDN.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cloudflare/cloudflared&#34; title=&#34;Cloudflare Tunnel&#34;&gt;Cloudflare Tunnel&lt;/a&gt; docker image
&lt;ul&gt;
&lt;li&gt;This connects my origin server directly to the Cloudflare network without having to expose any ports on my edge firewall.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Honourable mention to &lt;a href=&#34;https://github.com/NginxProxyManager/nginx-proxy-manager&#34; title=&#34;Nginx Proxy Manager&#34;&gt;Nginx Proxy Manager&lt;/a&gt; which I used to use for proxying my HTTP services to the outside world, but has since been replaced by tunnelling directly into the Cloudflare CDN.&lt;/p&gt;

  &lt;img src=&#34;https://www.davidgrierson.com/images/cloudflare.png&#34;  alt=&#34;Protected by Cloudflare&#34;  class=&#34;center&#34;  style=&#34;border-radius: 8px;&#34;  /&gt;


&lt;p&gt;N362&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Photography</title>
      <link>https://www.davidgrierson.com/photography/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://www.davidgrierson.com/photography/</guid>
      <description>&lt;p&gt;I like playing with cameras, and once every few hundred files there might even be a good photo.&lt;/p&gt;
&lt;p&gt;Since I started learning to shoot film I have tried to improve that ratio a little, motivated entirely by the cost of film&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;current-equipment&#34;&gt;Current Equipment&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Analog&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Digital&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;em&gt;Asahi Pentax MX&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;Canon EOS 80D&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pentax K 50mm f/1.7&lt;/td&gt;
          &lt;td&gt;EF-S 50mm f/1.8 STM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sigma Mini-Tele 135mm f/3.5&lt;/td&gt;
          &lt;td&gt;EF-S 18-135mm f/3.5-5.6 IS USM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sigma Mini-Wide 28mm f/2.8&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Film stock:&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;em&gt;Colour&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;B&amp;amp;W&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Kodak Portra 400&lt;/td&gt;
          &lt;td&gt;Kodak T-Max 400 &amp;amp; P3200&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Lomography Colour 400&lt;/td&gt;
          &lt;td&gt;Ilford Ortho Plus&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;Some of my favourite shots, a mixture of film and digital:&lt;/p&gt;</description>
      <content>&lt;p&gt;I like playing with cameras, and once every few hundred files there might even be a good photo.&lt;/p&gt;
&lt;p&gt;Since I started learning to shoot film I have tried to improve that ratio a little, motivated entirely by the cost of film&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;current-equipment&#34;&gt;Current Equipment&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Analog&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Digital&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;em&gt;Asahi Pentax MX&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;Canon EOS 80D&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pentax K 50mm f/1.7&lt;/td&gt;
          &lt;td&gt;EF-S 50mm f/1.8 STM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sigma Mini-Tele 135mm f/3.5&lt;/td&gt;
          &lt;td&gt;EF-S 18-135mm f/3.5-5.6 IS USM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sigma Mini-Wide 28mm f/2.8&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Film stock:&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;em&gt;Colour&lt;/em&gt;&lt;/td&gt;
          &lt;td&gt;&lt;em&gt;B&amp;amp;W&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Kodak Portra 400&lt;/td&gt;
          &lt;td&gt;Kodak T-Max 400 &amp;amp; P3200&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Lomography Colour 400&lt;/td&gt;
          &lt;td&gt;Ilford Ortho Plus&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;Some of my favourite shots, a mixture of film and digital:&lt;/p&gt;
&lt;style&gt;
  div.gallery {
     display: flex;
     flex-wrap: wrap;
  }
        div.gallery a {
            flex-grow: 1;
            object-fit: cover;
            margin: 2px;
            display: flex;
        }

        div.gallery a img {            
            height: 200px;
            object-fit: cover;
            flex-grow: 1;
        }

    &lt;/style&gt;

    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.0/jquery.fancybox.min.css&#34; /&gt;

    &lt;div class=&#34;gallery&#34;&gt;
        
	

	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//astro.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//astro-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//bigboat.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//bigboat-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//glasgowriverside.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//glasgowriverside-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//glencoe.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//glencoe-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//lighttrails.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//lighttrails-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//london1.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//london1-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//london2.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//london2-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//london3.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//london3-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//p51.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//p51-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//red.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//red-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//redbird.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//redbird-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//sailing1.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//sailing1-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//sailing2.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//sailing2-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//shieldhall.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//shieldhall-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//snowdoncolours.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//snowdoncolours-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//snowdonia.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//snowdonia-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//snowdonsunrise.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//snowdonsunrise-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
	
            &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.davidgrierson.com/images/showcase//starselfie.jpg&#34;&gt;
                &lt;img src=&#34;https://www.davidgrierson.com/images/showcase//starselfie-thumb.jpg&#34;&gt;  &lt;br/&gt;            
            &lt;/a&gt;
	
    &lt;/div&gt;
</content>
    </item>
    
  </channel>
</rss>
