<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>@Summitt Dweller’s Personal Blog - Posts</title>
    <link>https://blog.summittdweller.com/posts/</link>
    <description>All entries in Posts on Personal Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
    <lastBuildDate>Mon, 08 Jun 2026 06:33:16 -0500</lastBuildDate>
    <atom:link href="https://blog.summittdweller.com/posts/" rel="self" type="application/rss+xml" />
    
      
      <item>
        <title>Tama County Celebrates</title>
        <link>https://blog.summittdweller.com/posts/2026/06/tama-county-celebrates/</link>
        <pubDate>Mon, 08 Jun 2026 06:33:16 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2026/06/tama-county-celebrates/</guid>
        <description>&lt;iframe src=&#34;https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Ftamacountydems%2Fposts%2Fpfbid0P12apNeeQ97d91zDWMQmJrQguwnkdVbzjX6SAq8T9uvNnDgBCMSghNzEZw8R1wZtl&amp;show_text=true&amp;width=500&#34; width=&#34;500&#34; height=&#34;497&#34; style=&#34;border:none;overflow:hidden&#34; scrolling=&#34;no&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;true&#34; allow=&#34;autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share&#34;&gt;&lt;/iframe&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Farewell Facebook Friends</title>
        <link>https://blog.summittdweller.com/posts/2025/09/farewell-facebook/</link>
        <pubDate>Sun, 21 Sep 2025 08:33:16 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2025/09/farewell-facebook/</guid>
        <description>&lt;p&gt;I find myself at a crossroads.  Those of you who know me well are probably aware that I have never been a fan, advocate, or avid user of &lt;em&gt;Facebook&lt;/em&gt;, or social media in general.&lt;/p&gt;
&lt;p&gt;I do like FB &lt;em&gt;Marketplace&lt;/em&gt; though.  I&amp;rsquo;ve had some wonderful experiences buying or selling things there.  Sure, there have been some unpleasant &lt;em&gt;Marketplace&lt;/em&gt; experiences, too, but the good far outweighs the bad, so I will probably stick with it.&lt;/p&gt;
&lt;p&gt;The same goes for FB &lt;em&gt;Messenger&lt;/em&gt;.  I prefer using email or text messaging for online communication, but for my &lt;em&gt;Marketplace&lt;/em&gt; communications, and especially for staying in touch with all my distant friends, &lt;em&gt;Messenger&lt;/em&gt; is a must.  Not all the time, but often enough that I will probably stick with using &lt;em&gt;Messenger&lt;/em&gt;, too.&lt;/p&gt;
&lt;p&gt;Research tells me that I can&amp;rsquo;t leave &lt;em&gt;Facebook&lt;/em&gt; without also losing &lt;em&gt;Marketplace&lt;/em&gt; and &lt;em&gt;Messenger&lt;/em&gt;.  Well, crap.&lt;/p&gt;
&lt;p&gt;That research also shows me that lots of other people would like to do the same, disengage from social media, but keep the positive and useful things in play.  This is not a paid endorsement, but my research did also lead me to an app called &lt;em&gt;SocialFocus&lt;/em&gt;.  If you are interested, please check it out: &lt;a href=&#34;https://socialfocus.app/&#34;&gt;https://socialfocus.app/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll try not to get long-winded here, but I wanted to share one other thing from my research&amp;hellip;&lt;/p&gt;
&lt;p&gt;This morning as I was browsing in &lt;em&gt;Marketplace&lt;/em&gt;, something popped into my &lt;em&gt;Facebook&lt;/em&gt; feed and I opened it, perhaps for the last time.  I came across a photo (&lt;a href=&#34;https://www.tamatoledonews.com/news/local-news/2025/09/19/stc-announces-2025-homecoming-court/&#34;&gt;https://www.tamatoledonews.com/news/local-news/2025/09/19/stc-announces-2025-homecoming-court/&lt;/a&gt;) posted by &lt;em&gt;TamaToledoNews&lt;/em&gt;.  I don&amp;rsquo;t know most of the kids at STC any more, so it wasn&amp;rsquo;t the group of smiling young faces that caught my attention, although I wish them all the best.  It was the &lt;em&gt;&lt;strong&gt;setting of this photo&lt;/strong&gt;&lt;/em&gt; that brought a tear to my eye.  If I am given permission, I will add a copy of the image in this blog because you never know how long &lt;em&gt;Facebook&lt;/em&gt; will last, and you certainly never know who might not be able to open &lt;em&gt;Facebook&lt;/em&gt; now, or in the future.  I know I won&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t verify this, &lt;em&gt;because that would almost certainly require more interaction with FB&lt;/em&gt;, but I believe that the photo was taken beneath a willow tree planted on October 8, 2012, the day my son was buried, by members of the Iowa Geocachers Organization board of directors, and friends.  One of those folks, Liz, became a good friend and the tears I shed this morning are for Ian, and for Liz as she celebrates her first heavenly birthday.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s postings from Liz, and many others like her, that I will miss the most.&lt;/p&gt;
&lt;p&gt;When Ian passed I was moved by the outpouring of love and support we received.  I still am to this day.  But, I was also moved in a very different manner by all the hateful speculation and vitriol that I found online.  In spite of the positives, I choose to pull back from social media in 2012, and was glad that I had when the 2016 election cycle rolled around.  In years since I&amp;rsquo;ve gradually drifted back into social media, largely driven by connections with young people and distant friends who had no other simple means of keeping in touch.&lt;/p&gt;
&lt;p&gt;But the vitriol is back, so I&amp;rsquo;m done.&lt;/p&gt;
&lt;p&gt;In the absence of social media I&amp;rsquo;ve no doubt that I will find comfort in actual things, like Ian&amp;rsquo;s tree(s), and the good people in my life who occasionally visit in-person, or know me well enough to share an update via text message, email, or a phone call (yes, Mary reminds me that you can still do that with your phone) at times.  If I sent you a link to this post, via whatever means available, then you&amp;rsquo;ll know you are one of the people I will miss and I hope you will find a way to keep in touch.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Alexa Notes</title>
        <link>https://blog.summittdweller.com/posts/2025/06/alexa-notes/</link>
        <pubDate>Mon, 02 Jun 2025 18:43:21 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2025/06/alexa-notes/</guid>
        <description>&lt;h1 id=&#34;connecting-ceiling-fan-control-to-alexa&#34;&gt;Connecting Ceiling Fan Control to Alexa&lt;/h1&gt;
&lt;h2 id=&#34;how-to-setup-the-smart-life-app&#34;&gt;How to Setup the &amp;ldquo;Smart Life&amp;rdquo; App&lt;/h2&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2025/48e259ceb8576a65b6e5158ecfdd2ead3c1f9ef0eb96ab8675e89a69e484529b.png&#34; alt=&#34;picture 0&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Step 1: Connect your phone to the 2.4G WIFI network (must be 2.4G).&lt;/p&gt;
&lt;p&gt;Step 2: Open your “Smart life” APP， and add your device.&lt;/p&gt;
&lt;p&gt;Step 3: Click &amp;ldquo;Smart Home Appliance&amp;rdquo; then click the “fan”.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2025/5631abb3fcd846e3d9c378b2f643cddf68034619b6cda6a23fac335dc5848628.png&#34; alt=&#34;picture 1&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2025/d699d6a6f1e397888abc2268ea23fb49caf0a3b53f53ae7910f9622b0f3cbb6b.png&#34; alt=&#34;picture 2&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Step 5: Choose Confirm indicator rapidly blink, then click &amp;ldquo;Next&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Step 6: Waiting for connection.&lt;/p&gt;
&lt;p&gt;Step 7: Connection succeeded.&lt;/p&gt;
&lt;div style=&#34;page-break-before:always&#34;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-do-i-connect-to-alexa&#34;&gt;How do I connect to Alexa?&lt;/h2&gt;
&lt;p&gt;The following is an example using Amazon Echo&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Complete product networking configuration in the Smart Life App&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Complete the device&amp;rsquo;s networking configuration according to the prompts in the App&lt;/p&gt;
&lt;p&gt;Note: In the App, change the name of the device to an easily identifiable name such as Alexa; names are usually in English, such as &amp;ldquo;bedroom light&amp;rdquo;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Configure the Amazon Echo device&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(If you have already configured Amazon Echo, you can skip this step. The following instructions are based on the iOS client)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Make sure your Amazon Echo device is powered on and connected to a Wi-Fi network.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open the Alexa app on your phone. After successful login, tap on the menu in the upper left corner of the Home page, select &amp;ldquo;Settings&amp;rdquo; and tap &amp;ldquo;Set Up A New Device&amp;rdquo; to set up the Amazon Echo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose your Amazon Echo device type and language for connecting. Press and hold the small dot on the device until the light turns yellow. Then tap &amp;ldquo;Continue&amp;rdquo; to connect to the hotspot.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After connecting to the Amazon Echo hotspot, return to the page. At this point, the connection is successful. Tap &amp;ldquo;Continue&amp;rdquo; to proceed to the next step. Choose a Wi-Fi network to connect to. Amazon Echo will take a few minutes to try to connect to the network.&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;
&lt;p&gt;After the network connection is successful, Tap “Continue.&amp;quot; An introduction video will appear. After the video ends, Tap “Continue” to jump to the Alexa Home page. You have now completed the Amazon Echo&amp;rsquo;s configuration process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Key step - link Skill&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tap on &amp;ldquo;Skills&amp;rdquo; in the Alexa app menu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then search for &amp;ldquo;Smart Life&amp;rdquo;. Tap &amp;ldquo;Enable&amp;rdquo; to enable the Skill.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter the Smart Life APP account and password, then tap “Link Now” to link your Smart Life account to enable the Skill. Now you can start your smart home journey.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;common-commands&#34;&gt;Common commands&lt;/h2&gt;
&lt;p&gt;Control the device via voice commands Now you can control your smart device with Echo. You can control your device (such as your bedroom light) with the following commands:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;ALEXA,TURN on the bedroom light!&amp;rdquo;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>My Grandparent&#39;s 1926 California Trip Project</title>
        <link>https://blog.summittdweller.com/posts/2025/02/california-trip-project/</link>
        <pubDate>Sun, 02 Feb 2025 18:43:21 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2025/02/california-trip-project/</guid>
        <description>&lt;p&gt;In October 1926 my grandparents, Clarence and Miriam Abia McFate, packed their family into what I imagine was a pickup truck with a homemade camper in the bed and embarked on a trip that grandma, Miriam, described as&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
With the auto route traveling west, in a house built on a Ford with all modern convenience of camp life.  Our house is equipped with a gasoline stove for cooking, a small wood heater for heating, 1 small medicine cabinet, with all necessities of a young hospital.  Folding table and chairs, 1 day bed, used in day time as a seat and a place for our bed covers, when not in use. One cupboard and all cooking utensils including a pressure cooker.  We fasten tent and camp cots on out side.  All in all we have a very comfortable way to travel.  Not to  fast but just fast enough for the most enjoyable time of our lives.  
&lt;p&gt;Following you will find each day drive as we journey on.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
&lt;p&gt;By grandma&amp;rsquo;s account they traveled 2,809 miles between October 18, 1926, and November 28 of that year, a span of 42 days on-the-road.&lt;/p&gt;
&lt;h2 id=&#34;rootstalk-plan&#34;&gt;Rootstalk Plan&lt;/h2&gt;
&lt;p&gt;A few years ago I approached the publisher and editor of &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;&lt;em&gt;Rootstalk&lt;/em&gt;,&lt;/a&gt; a print and digital publication of &lt;a href=&#34;https://www.grinnell.edu/academics/centers-programs/prairie-studies&#34;&gt;the Grinnell College Center for Prairie Studies&lt;/a&gt;, to inquire about featuring grandma&amp;rsquo;s journal in an upcoming edition of the magazine.  They were very supportive, but we quickly realized that all 60+ pages of text could not possibly fit in a single issue, so a plan was made to break the journal into three annual installments with the last to publish sometime in 2026 on the 100th anniversary of the trip.&lt;/p&gt;
&lt;p&gt;Because &lt;em&gt;Rootstalk&lt;/em&gt; has an undetermined future, we recently decided to create a substantially condensed edition of the journal for the print issue of &lt;em&gt;Rootstalk&lt;/em&gt; targeted for release following the Spring 2025 term.  Along with the condensed print edition it is our intent to also produce an edited and augmented digital edition of the entire journal in &lt;em&gt;Rootstalk&amp;rsquo;s&lt;/em&gt; Spring 2025 issue.  There is no class of assistant editors meeting this semester so the effort will involve just the editorial staff and me, along with any assistance, and/or content, I can solicit from interested family members.&lt;/p&gt;
&lt;h2 id=&#34;the-task-at-hand&#34;&gt;The Task at Hand&lt;/h2&gt;
&lt;p&gt;In order to get the journal published I plan to re-read the entire journal, noting those portions that I believe are worthy of inclusion in the condensed version (about 5%-10% of the journal).  I also hope to write an intro piece and end reflection to accompany the journal, along with gathering some photos to help tell the story.&lt;/p&gt;
&lt;p&gt;In the digital edition I hope to also include a timeline and a map, both helping to tell the story in a different fashion.  To that end I&amp;rsquo;ve obtained a royalty-free US highway roadmap from November 1926, and have created a GitHub private repository of resources at &lt;a href=&#34;https://github.com/SummittDweller/Grandparents-Miriam-and-Clarence-McFate-California-Trip&#34;&gt;Grandparents-Miriam-and-Clarence-McFate-California-Trip&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;starting-from-a-pdf&#34;&gt;Starting From a PDF&lt;/h3&gt;
&lt;p&gt;Grandma&amp;rsquo;s manuscript was transcribed into a typewritten document many years ago by members of my extended family.  I have since obtained a scanned text document of the typewritten transcript, and converted it into a 64+ page PDF from which my work will begin.&lt;/p&gt;
&lt;h3 id=&#34;step-by-step&#34;&gt;Step-by-Step&lt;/h3&gt;
&lt;p&gt;This section, to be expanded over time, is a step-by-step list of tasks needed to transform the PDF into something suitable for publication.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Identify and sequentially number the paragraphs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In each numbered paragraph collect the following using automated text analysis:&lt;/p&gt;
&lt;p&gt;a) References to the travelers&lt;br&gt;
b) References to people encountered on the trip&lt;br&gt;
c) References to places&lt;br&gt;
d) Corresponding date or dates&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Rebranding CV to HAT with Pagefind</title>
        <link>https://blog.summittdweller.com/posts/2025/01/rebranding-cv/</link>
        <pubDate>Sat, 25 Jan 2025 08:43:21 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2025/01/rebranding-cv/</guid>
        <description>&lt;p&gt;Today I&amp;rsquo;m rebranding the Tama-Toledo Community Visioning (CV) site to Hometown Action Team (HAT) and adding Pagefind.&lt;/p&gt;
&lt;p&gt;When doing so I get this build error&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
Warning: Running in pre-1.0 compatibility mode.
Pagefind 1.0 changes the default output directory from /_pagefind/ to /pagefind/
but references to the /_pagefind/ URL were found on your site, and the output directory is unconfigured.
To preserve your setup, the search files have been written twice, to both /_pagefind/ and /pagefind/
&lt;p&gt;To remove this warning, either update your script and style references to the new &lt;code&gt;/pagefind/&lt;/code&gt; URL
or run Pagefind with &lt;code&gt;--output-subdir _pagefind&lt;/code&gt; to ensure pre-1.0 behaviour&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
&lt;p&gt;So, I am going to try changing all _pagefind references to just &amp;lsquo;pagefind&amp;rsquo;.  Wish me luck&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>A Newer Pagefind Enabled Blog!</title>
        <link>https://blog.summittdweller.com/posts/2024/12/newer-pagefind-enabled-blog/</link>
        <pubDate>Sun, 22 Dec 2024 10:43:32 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/12/newer-pagefind-enabled-blog/</guid>
        <description>&lt;p&gt;It&amp;rsquo;s deja vu all over again.  My &lt;code&gt;timeline&lt;/code&gt; module doesn&amp;rsquo;t work with the current rendition of &lt;a href=&#34;https://blog.SummittDweller.com&#34;&gt;https://blog.SummittDweller.com&lt;/a&gt; and I can&amp;rsquo;t figure out what&amp;rsquo;s broken.  So, I&amp;rsquo;ve resurrected my &lt;a href=&#34;https://github.com/SummittDweller/blogs-SummittDweller&#34;&gt;old personal blog project&lt;/a&gt; and updated with the meager content it was missing.  That project has a working &lt;code&gt;timeline&lt;/code&gt; but no &lt;code&gt;Pagefind&lt;/code&gt; search, yet.&lt;/p&gt;
&lt;p&gt;So, how might I &lt;strong&gt;ONCE AGAIN&lt;/strong&gt; approach combining Hugo with Pagefind in the cloud?  Well, &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt;* by Tom Hombergs looked like a promising place to start.  The process that Tom advocates leverages a neat little package called &lt;a href=&#34;https://www.npmjs.com/package/hugo-bin&#34;&gt;hugo-bin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;The links provided above and below are to a Wayback Machine capture of the original post.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;once-againthat-was-too-easy&#34;&gt;Once Again&amp;hellip;That Was Too Easy!&lt;/h1&gt;
&lt;p&gt;Wrapping this Hugo blog site in an NPM package was so easy that I forgot to document it&amp;hellip; and maybe I really didn&amp;rsquo;t need too.  Time to catch up, so here&amp;rsquo;s a brief sysnopsis of what I did&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;following-toms-excellent-advice&#34;&gt;Following Tom&amp;rsquo;s Excellent Advice&lt;/h2&gt;
&lt;p&gt;I started by studying &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt; and quickly found that I could easily follow it almost verbatim.  Since I already had &lt;code&gt;npm&lt;/code&gt; and &lt;code&gt;Hugo&lt;/code&gt; installed I skipped ahead to the section titled &amp;ldquo;Setting Up a Hugo Project&amp;rdquo; and then to the &lt;code&gt;npx&lt;/code&gt; and &lt;code&gt;git&lt;/code&gt; commands there.  My experience, mostly in commands, looked like this on my Mac Mini workstation.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  cd ~/GitHub/
  # Named the new project npm-blog-SummittDweller so it would not confilct with any of my existing `blog...` directories
  mkdir npm-blog-SummittDweller
  cd npm-blog-SummittDweller
  npx hugo new site . --force
  # Copied the contents of my old project into the new one and then removed whatever I no longer needed
  cp -fr ~/GitHub/blogs-SummittDweller/. .  
  # Installed Pagefind...
  npm install pagefind
  git init
  # I created a new empty repo in GitHub called npm-blog-SummittDweller, then...
  git remote add origin https://github.com/SummittDweller/npm-blog-sd 
  git add . 
  git commit -m &amp;#34;Initial commit of new npm-wrapped Hugo project&amp;#34;
  git push
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Having secured a new repo I moved to running Hugo locally, then polishing my &lt;code&gt;package.json&lt;/code&gt; scripts as Tom did.  I now have a &lt;code&gt;package.json&lt;/code&gt; that reads like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;npm-blog-sd&amp;#34;,
  &amp;#34;version&amp;#34;: &amp;#34;1.0.0&amp;#34;,
  &amp;#34;description&amp;#34;: &amp;#34;My personal (SummittDweller) blog built with Hugo inside an NPM package.  December 2024.&amp;#34;,
  &amp;#34;main&amp;#34;: &amp;#34;index.js&amp;#34;,
  &amp;#34;scripts&amp;#34;: {
    &amp;#34;test&amp;#34;: &amp;#34;echo \&amp;#34;Error: no test specified\&amp;#34; &amp;amp;&amp;amp; exit 1&amp;#34;,
    &amp;#34;build&amp;#34;: &amp;#34;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;do:build&amp;#34;: &amp;#34;hugo -d public &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;azure:build&amp;#34;: &amp;#34;hugo -d public --baseURL=\&amp;#34;https://azure-static-web-apps-ashy-rock-0f18efc0f\&amp;#34; &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;clean&amp;#34;: &amp;#34;npm run hugo:clean&amp;#34;,
    &amp;#34;serve&amp;#34;: &amp;#34;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --site public --output-subdir ../static/_pagefind &amp;amp;&amp;amp; npm run hugo:serve&amp;#34;,
    &amp;#34;hugo:build&amp;#34;: &amp;#34;hugo -d public&amp;#34;,
    &amp;#34;hugo:serve&amp;#34;: &amp;#34;hugo server&amp;#34;,
    &amp;#34;hugo:clean&amp;#34;: &amp;#34;rm -rf build resources public&amp;#34;
  },
  &amp;#34;author&amp;#34;: &amp;#34;Mark A. McFate&amp;#34;,
  &amp;#34;license&amp;#34;: &amp;#34;ISC&amp;#34;,
  &amp;#34;dependencies&amp;#34;: {
    &amp;#34;hugo-bin&amp;#34;: &amp;#34;^0.137.0&amp;#34;,
    &amp;#34;pagefind&amp;#34;: &amp;#34;^1.2.0&amp;#34;
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;it-works&#34;&gt;It Works!&lt;/h1&gt;
&lt;p&gt;Now I just use &lt;code&gt;npm run serve&lt;/code&gt; to build the Hugo site, index it with Pagefind, and serve it locally at &lt;a href=&#34;http://localhost:1313&#34;&gt;http://localhost:1313&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;a-staging-site-in-azure&#34;&gt;A Staging Site in Azure&lt;/h1&gt;
&lt;p&gt;I can simply push changes to the &lt;code&gt;main&lt;/code&gt; branch of the &lt;code&gt;npm-blog-sd&lt;/code&gt; repo to trigger an Azure (aka GitHub Actions) rebuild, indexing and deployment of the site to &lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net&#34;&gt;this address&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;errors&#34;&gt;Errors?&lt;/h1&gt;
&lt;p&gt;So, it took lots of trial-and-error to get the Azure configuration straight.  First there were issues with deployment tokens, so I rewound the project and got that fixed.  Then, since this blog uses SASS I needed to run the &lt;code&gt;extended&lt;/code&gt; version of Hugo, or more specifically, &lt;code&gt;hugo-bin-extended&lt;/code&gt;.   I fixed that, apparently, with the addition of&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  &amp;#34;dependencies&amp;#34;: {
    &amp;#34;hugo-bin-extended&amp;#34;: &amp;#34;latest&amp;#34;,
    &amp;#34;pagefind&amp;#34;: &amp;#34;^1.2.0&amp;#34;
  }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;hellip;in &lt;code&gt;package.json&lt;/code&gt;.  That &lt;code&gt;hugo-bin-extended&lt;/code&gt; key replaced &lt;code&gt;hugo-bin&lt;/code&gt; and I set the version to &lt;code&gt;latest&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;last-of-the-errors&#34;&gt;Last of the Errors?&lt;/h2&gt;
&lt;p&gt;The changes mentioned above left me with two deprecation errors&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ERROR deprecated: site config key paginate was deprecated in Hugo v0.128.0 and will be removed in Hugo 0.141.0. Use pagination.pagerSize instead.
WARN  Raw HTML omitted while rendering &amp;#34;/github/workspace/content/about.md&amp;#34;; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe
You can suppress this warning by adding the following to your site configuration:
ignoreLogs = [&amp;#39;warning-goldmark-raw-html&amp;#39;]
ERROR deprecated: .Site.Social was deprecated in Hugo v0.124.0 and will be removed in Hugo 0.141.0. Implement taxonomy &amp;#39;social&amp;#39; or use .Site.Params.Social instead.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This &lt;a href=&#34;https://stackoverflow.com/a/5542964&#34;&gt;post&lt;/a&gt; was very helpful for working with my submodule theme!&lt;/p&gt;
&lt;h1 id=&#34;success&#34;&gt;Success!&lt;/h1&gt;
&lt;p&gt;Well, somewhat.  My site at &lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&#34;&gt;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&lt;/a&gt; is visible now, but the theme isn&amp;rsquo;t right.  I suspect that is because my &lt;code&gt;hugo.yml&lt;/code&gt; file still sets the &lt;code&gt;baseURL&lt;/code&gt; to &amp;ldquo;&lt;a href=&#34;https://blog.summittdweller.com&#34;&gt;https://blog.summittdweller.com&lt;/a&gt;&amp;rdquo; and we are not quite there yet.  Setting the &lt;code&gt;baseURL&lt;/code&gt; to &amp;ldquo;&lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/%22&#34;&gt;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&amp;quot;&lt;/a&gt; and let&amp;rsquo;s see what happens&amp;hellip;  &lt;strong&gt;Bingo!&lt;/strong&gt;   Now, I just need to add a search bar to expose the Pagefind results.   Done!&lt;/p&gt;
&lt;!-- hugo: themes/bootstrap-bp-hugo-theme/layouts/shortcodes/attention-box.html --&gt;
&lt;div style=&#34;border: 3px solid red; padding: 1em; margin: 1em; font-size: x-large; text-align: center;&#34;&gt;What follows is obsolete, it&amp;#39;s from `npm-rootstalk`, and does NOT apply to this blog!&lt;/div&gt;
&lt;!-- /hugo: themes/bootstrap-bp-hugo-theme/layouts/shortcodes/attention-box.html --&gt;

&lt;h1 id=&#34;a-new-production-branch&#34;&gt;A New Production Branch&lt;/h1&gt;
&lt;p&gt;Pushing to production is just as simple, I just have to push changes to the new &lt;code&gt;production&lt;/code&gt; branch of the code and my app spec at DigitalOcean (see below) takes care of building, indexing, and deploying to &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;https://rootstalk.grinnell.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That DO app spec reads like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alerts:
- rule: DEPLOYMENT_FAILED
- rule: DOMAIN_FAILED
domains:
- domain: rootstalk.grinnell.edu
  type: PRIMARY
- domain: prairiejournal.grinnell.edu
  type: ALIAS
envs:
- key: TZ
  scope: RUN_AND_BUILD_TIME
  value: America/Chicago
- key: HUGO_MATOMO_ID
  scope: RUN_AND_BUILD_TIME
  value: &amp;quot;15&amp;quot;
ingress:
  rules:
  - component:
      name: npm-rootstalk
    match:
      path:
        prefix: /
name: npm-rootstalk
region: nyc
static_sites:
- build_command: npm run build
  environment_slug: node-js
  github:
    branch: production
    deploy_on_push: true
    repo: Digital-Grinnell/npm-rootstalk
  name: npm-rootstalk
  source_dir: /
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s heavenly!  And that&amp;rsquo;s all for now.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>A New Pagefind Enabled Blog!</title>
        <link>https://blog.summittdweller.com/posts/2024/12/new-pagefind-enabled-blog/</link>
        <pubDate>Wed, 18 Dec 2024 08:31:49 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/12/new-pagefind-enabled-blog/</guid>
        <description>&lt;p&gt;So, &lt;code&gt;node&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt; are maybe not &amp;ldquo;all the rage&amp;rdquo; these days, but they do the job nicely for me.&lt;/p&gt;
&lt;p&gt;So, how might I &lt;strong&gt;ONCE AGAIN&lt;/strong&gt; approach combining Hugo with Pagefind in the cloud?  Well, &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt;* by Tom Hombergs looked like a promising place to start.  The process that Tom advocates leverages a neat little package called &lt;a href=&#34;https://www.npmjs.com/package/hugo-bin&#34;&gt;hugo-bin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;The links provided above and below are to a Wayback Machine capture of the original post.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;that-was-too-easy&#34;&gt;That Was Too Easy!&lt;/h1&gt;
&lt;p&gt;Wrapping this Hugo blog site in an NPM package was so easy that I forgot to document it&amp;hellip; and maybe I really didn&amp;rsquo;t need too.  Time to catch up, so here&amp;rsquo;s a brief sysnopsis of what I did&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;following-toms-excellent-advice&#34;&gt;Following Tom&amp;rsquo;s Excellent Advice&lt;/h2&gt;
&lt;p&gt;I started by studying &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt; and quickly found that I could easily follow it almost verbatim.  Since I already had &lt;code&gt;npm&lt;/code&gt; and &lt;code&gt;Hugo&lt;/code&gt; installed I skipped ahead to the section titled &amp;ldquo;Setting Up a Hugo Project&amp;rdquo; and then to the &lt;code&gt;npx&lt;/code&gt; and &lt;code&gt;git&lt;/code&gt; commands there.  My experience, mostly in commands, looked like this on my Mac Mini workstation.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/GitHub/
# Named the new project npm-blog-sd so it would not confilct with any of my existing `blog...` directories
mkdir npm-blog-sd
cd npm-blog-sd
npx hugo new site . --force
# Copied the contents of my old project into the new one and then removed whatever I no longer needed
cp -fr ~/GitHub/blog-sd/. .  
# Installed Pagefind...
npm install pagefind
git init
# I created a new empty repo in GitHub called npm-blog-sd, then...
git remote add origin https://github.com/SummittDweller/npm-blog-sd 
git add . 
git commit -m &amp;quot;Initial commit of new npm-wrapped Hugo project&amp;quot;
git push
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Having secured a new repo I moved to running Hugo locally, then polishing my &lt;code&gt;package.json&lt;/code&gt; scripts as Tom did.  I now have a &lt;code&gt;package.json&lt;/code&gt; that reads like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;npm-blog-sd&amp;#34;,
  &amp;#34;version&amp;#34;: &amp;#34;1.0.0&amp;#34;,
  &amp;#34;description&amp;#34;: &amp;#34;My personal (SummittDweller) blog built with Hugo inside an NPM package.  December 2024.&amp;#34;,
  &amp;#34;main&amp;#34;: &amp;#34;index.js&amp;#34;,
  &amp;#34;scripts&amp;#34;: {
    &amp;#34;test&amp;#34;: &amp;#34;echo \&amp;#34;Error: no test specified\&amp;#34; &amp;amp;&amp;amp; exit 1&amp;#34;,
    &amp;#34;build&amp;#34;: &amp;#34;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;do:build&amp;#34;: &amp;#34;hugo -d public &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;azure:build&amp;#34;: &amp;#34;hugo -d public --baseURL=\&amp;#34;https://azure-static-web-apps-ashy-rock-0f18efc0f\&amp;#34; &amp;amp;&amp;amp; npx pagefind --site public&amp;#34;,
    &amp;#34;clean&amp;#34;: &amp;#34;npm run hugo:clean&amp;#34;,
    &amp;#34;serve&amp;#34;: &amp;#34;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --site public --output-subdir ../static/_pagefind &amp;amp;&amp;amp; npm run hugo:serve&amp;#34;,
    &amp;#34;hugo:build&amp;#34;: &amp;#34;hugo -d public&amp;#34;,
    &amp;#34;hugo:serve&amp;#34;: &amp;#34;hugo server&amp;#34;,
    &amp;#34;hugo:clean&amp;#34;: &amp;#34;rm -rf build resources public&amp;#34;
  },
  &amp;#34;author&amp;#34;: &amp;#34;Mark A. McFate&amp;#34;,
  &amp;#34;license&amp;#34;: &amp;#34;ISC&amp;#34;,
  &amp;#34;dependencies&amp;#34;: {
    &amp;#34;hugo-bin&amp;#34;: &amp;#34;^0.137.0&amp;#34;,
    &amp;#34;pagefind&amp;#34;: &amp;#34;^1.2.0&amp;#34;
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;it-works&#34;&gt;It Works!&lt;/h1&gt;
&lt;p&gt;Now I just use &lt;code&gt;npm run serve&lt;/code&gt; to build the Hugo site, index it with Pagefind, and serve it locally at &lt;a href=&#34;http://localhost:1313&#34;&gt;http://localhost:1313&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;a-staging-site-in-azure&#34;&gt;A Staging Site in Azure&lt;/h1&gt;
&lt;p&gt;I can simply push changes to the &lt;code&gt;main&lt;/code&gt; branch of the &lt;code&gt;npm-blog-sd&lt;/code&gt; repo to trigger an Azure (aka GitHub Actions) rebuild, indexing and deployment of the site to &lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net&#34;&gt;this address&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;errors&#34;&gt;Errors?&lt;/h1&gt;
&lt;p&gt;So, it took lots of trial-and-error to get the Azure configuration straight.  First there were issues with deployment tokens, so I rewound the project and got that fixed.  Then, since this blog uses SASS I needed to run the &lt;code&gt;extended&lt;/code&gt; version of Hugo, or more specifically, &lt;code&gt;hugo-bin-extended&lt;/code&gt;.   I fixed that, apparently, with the addition of&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  &amp;#34;dependencies&amp;#34;: {
    &amp;#34;hugo-bin-extended&amp;#34;: &amp;#34;latest&amp;#34;,
    &amp;#34;pagefind&amp;#34;: &amp;#34;^1.2.0&amp;#34;
  }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;hellip;in &lt;code&gt;package.json&lt;/code&gt;.  That &lt;code&gt;hugo-bin-extended&lt;/code&gt; key replaced &lt;code&gt;hugo-bin&lt;/code&gt; and I set the version to &lt;code&gt;latest&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;last-of-the-errors&#34;&gt;Last of the Errors?&lt;/h2&gt;
&lt;p&gt;The changes mentioned above left me with two deprecation errors&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ERROR deprecated: site config key paginate was deprecated in Hugo v0.128.0 and will be removed in Hugo 0.141.0. Use pagination.pagerSize instead.
WARN  Raw HTML omitted while rendering &amp;#34;/github/workspace/content/about.md&amp;#34;; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe
You can suppress this warning by adding the following to your site configuration:
ignoreLogs = [&amp;#39;warning-goldmark-raw-html&amp;#39;]
ERROR deprecated: .Site.Social was deprecated in Hugo v0.124.0 and will be removed in Hugo 0.141.0. Implement taxonomy &amp;#39;social&amp;#39; or use .Site.Params.Social instead.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This &lt;a href=&#34;https://stackoverflow.com/a/5542964&#34;&gt;post&lt;/a&gt; was very helpful for working with my submodule theme!&lt;/p&gt;
&lt;h1 id=&#34;success&#34;&gt;Success!&lt;/h1&gt;
&lt;p&gt;Well, somewhat.  My site at &lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&#34;&gt;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&lt;/a&gt; is visible now, but the theme isn&amp;rsquo;t right.  I suspect that is because my &lt;code&gt;hugo.yml&lt;/code&gt; file still sets the &lt;code&gt;baseURL&lt;/code&gt; to &amp;ldquo;&lt;a href=&#34;https://blog.summittdweller.com&#34;&gt;https://blog.summittdweller.com&lt;/a&gt;&amp;rdquo; and we are not quite there yet.  Setting the &lt;code&gt;baseURL&lt;/code&gt; to &amp;ldquo;&lt;a href=&#34;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/%22&#34;&gt;https://ashy-rock-0f18efc0f.4.azurestaticapps.net/&amp;quot;&lt;/a&gt; and let&amp;rsquo;s see what happens&amp;hellip;  &lt;strong&gt;Bingo!&lt;/strong&gt;   Now, I just need to add a search bar to expose the Pagefind results.   Done!&lt;/p&gt;
&lt;!-- hugo: themes/bootstrap-bp-hugo-theme/layouts/shortcodes/attention-box.html --&gt;
&lt;div style=&#34;border: 3px solid red; padding: 1em; margin: 1em; font-size: x-large; text-align: center;&#34;&gt;What follows is obsolete, it&amp;#39;s from `npm-rootstalk`, and does NOT apply to this blog!&lt;/div&gt;
&lt;!-- /hugo: themes/bootstrap-bp-hugo-theme/layouts/shortcodes/attention-box.html --&gt;

&lt;h1 id=&#34;a-new-production-branch&#34;&gt;A New Production Branch&lt;/h1&gt;
&lt;p&gt;Pushing to production is just as simple, I just have to push changes to the new &lt;code&gt;production&lt;/code&gt; branch of the code and my app spec at DigitalOcean (see below) takes care of building, indexing, and deploying to &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;https://rootstalk.grinnell.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That DO app spec reads like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alerts:
- rule: DEPLOYMENT_FAILED
- rule: DOMAIN_FAILED
domains:
- domain: rootstalk.grinnell.edu
  type: PRIMARY
- domain: prairiejournal.grinnell.edu
  type: ALIAS
envs:
- key: TZ
  scope: RUN_AND_BUILD_TIME
  value: America/Chicago
- key: HUGO_MATOMO_ID
  scope: RUN_AND_BUILD_TIME
  value: &amp;quot;15&amp;quot;
ingress:
  rules:
  - component:
      name: npm-rootstalk
    match:
      path:
        prefix: /
name: npm-rootstalk
region: nyc
static_sites:
- build_command: npm run build
  environment_slug: node-js
  github:
    branch: production
    deploy_on_push: true
    repo: Digital-Grinnell/npm-rootstalk
  name: npm-rootstalk
  source_dir: /
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s heavenly!  And that&amp;rsquo;s all for now.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Microposts from iOS</title>
        <link>https://blog.summittdweller.com/posts/2024/11/2024-11-10-microposts-from-ios/</link>
        <pubDate>Sun, 10 Nov 2024 10:22:33 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/11/2024-11-10-microposts-from-ios/</guid>
        <description>&lt;p&gt;Wow, this post is long overdue.&lt;/p&gt;
&lt;p&gt;For as long as I can remember I&amp;rsquo;ve been looking for, or building and using, a workflow that would let me create quick and simple &lt;code&gt;microposts&lt;/code&gt; for this blog using my iPhone.  I want that workflow to automatically record my location (in the form of a city/town reference) and date/time.  With the help of my daughter, Mackenzie, I&amp;rsquo;ve had workflows that used &lt;code&gt;Working Copy&lt;/code&gt; and iOS &lt;code&gt;Shortcuts&lt;/code&gt; to get this done, but I never really understood the entire process and over time it broke down and I was unable to repair it.  It&amp;rsquo;s time to revisit those pieces and I&amp;rsquo;m going to follow, and document here, the steps and components presented in &lt;a href=&#34;https://florian.ec/blog/post-to-eleventy-ios-drafts-shortcuts-working-copy/&#34;&gt;Post to Eleventy from iOS with Drafts, Shortcuts and Working Copy&lt;/a&gt;. The only change I anticipate will be pointing the workflow at this &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; blog rather than an Eleventy one, and those differences should be minimal and manageable.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>NOT Like a Rolling Stone</title>
        <link>https://blog.summittdweller.com/posts/2024/10/2024-10-11-not-like-a-rolling-stone/</link>
        <pubDate>Fri, 11 Oct 2024 20:09:55 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/10/2024-10-11-not-like-a-rolling-stone/</guid>
        <description>&lt;p&gt;Where has the last year gone?  While life (metaphorically the stream in the hero image) rolls on, this blog (any of the moss covered rocks in the image) has not.&lt;/p&gt;
&lt;p&gt;This blog was born of good intentions, but frankly it&amp;rsquo;s too hard for an old fart like me to remember how to maintain it and make contributions.  Having not posted here in many months, I had to consult my &amp;ldquo;documentation&amp;rdquo;, and ultimately my retired password manager, to get back in and post this.  That&amp;rsquo;s unacceptable, and it won&amp;rsquo;t happen again.  &lt;/p&gt;
&lt;p&gt;So, I&amp;rsquo;m going to replace this Ghost-driven &amp;ldquo;semi-static&amp;rdquo; blog with something more familiar and less costly/complex to operate.  Probably a Hugo static site that is truly &amp;ldquo;static&amp;rdquo;, but not stagnant!   There will be no more blog-moss grown here!&lt;/p&gt;
&lt;p&gt;Famous last words?&lt;/p&gt;
&lt;p&gt;See you on the flip-side.  Soon.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Spinning Up StaticCMS</title>
        <link>https://blog.summittdweller.com/posts/2024/01/2024-01-13-spinning-up-staticcms/</link>
        <pubDate>Sat, 13 Jan 2024 15:40:23 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/01/2024-01-13-spinning-up-staticcms/</guid>
        <description>&lt;p&gt;Today is Saturday, January 13, 2024, and I won&amp;rsquo;t be able to watch the KC Chief&amp;rsquo;s wildcard playoff game vs. the Miami Dolphins tonight because it is streaming ONLY on Peacock, and I refuse to pay them for the &amp;ldquo;privilege&amp;rdquo; to watch it live.  So, I&amp;rsquo;m going to do something productive instead.  Let&amp;rsquo;s see if I can spin up an instance of &lt;a href=&#34;https://www.staticcms.org/&#34;&gt;StaticCMS&lt;/a&gt; to provide an OPEN CMS for the content editor(s) behind the &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;Wieting Theatre website&lt;/a&gt;.  &lt;/p&gt;
&lt;h2 id=&#34;the-plan&#34;&gt;The Plan&lt;/h2&gt;
&lt;p&gt;So, the plan here involves establishing a &amp;ldquo;local-only&amp;rdquo; CMS for the &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;Wieting Theatre website&lt;/a&gt; and running it on the new Ubuntu server in the Wieting&amp;rsquo;s projection booth.  Editors should will be given login credentials to that server where they can run a local copy of the website (it&amp;rsquo;s a Hugo static site) AND a local copy of the CMS editor, make changes, preview them, and commit the changes to the project&amp;rsquo;s GitHub repo.  The website, hosted with &lt;em&gt;AWS Amplify&lt;/em&gt; is then automatically updated based on the updated content.&lt;/p&gt;
&lt;h3 id=&#34;along-the-way&#34;&gt;Along the Way&lt;/h3&gt;
&lt;p&gt;It&amp;rsquo;s worth noting that while looking at &lt;a href=&#34;https://www.staticcms.org&#34;&gt;StaticCMS&lt;/a&gt; I also stumbled upon &lt;a href=&#34;https://mortenson.coffee/work/tabcms/&#34;&gt;tabcms - A CMS that runs in your browser tab&lt;/a&gt; which might be of interest if &amp;ldquo;The Plan&amp;rdquo; doesn&amp;rsquo;t work.&lt;/p&gt;
&lt;h2 id=&#34;first-steps---start-with-a-template&#34;&gt;First Steps - Start with a Template&lt;/h2&gt;
&lt;p&gt;I choose the guidance at &lt;a href=&#34;https://www.staticcms.org/docs/start-with-a-template&#34;&gt;Start with a Template&lt;/a&gt; to get started.  My aim is to clone that repo and build it locally &amp;ldquo;as-is&amp;rdquo;, then see if I can drop my existing &lt;a href=&#34;https://github.com/SummittServices/wieting-ss&#34;&gt;wieting-ss&lt;/a&gt; repo into the &lt;code&gt;site&lt;/code&gt; directory and continue to make it work locally.&lt;/p&gt;
&lt;p&gt;If that works, I&amp;rsquo;ll repeat the same on the Wieting&amp;rsquo;s Ubuntu server and keep pushing forward.  Wish me luck?&lt;/p&gt;
&lt;h3 id=&#34;getting-started&#34;&gt;Getting Started&lt;/h3&gt;
&lt;p&gt;Following the &lt;a href=&#34;https://github.com/StaticJsCMS/static-cms-hugo-netlify-template#local-development&#34;&gt;Local Development&lt;/a&gt; guidance found me cloning this &lt;a href=&#34;https://github.com/StaticJsCMS/static-cms-hugo-netlify-template&#34;&gt;template&lt;/a&gt; then&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-netlify-template ‹main› 
╰─$ npm install 
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.

added 1567 packages, and audited 1568 packages in 2m

426 packages are looking for funding
  run `npm fund` for details

2 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-netlify-template ‹main*› 
╰─$ npm start

&amp;gt; static-cms-hugo-netlify-template@1.0.0 start
&amp;gt; run-p start:**


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:webpack
&amp;gt; webpack-dev-server --config webpack.dev.js --hot --stats-error-details


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:hugo
&amp;gt; hugo -d ../dist -s site -vw

WARN  --verbose was deprecated in Hugo v0.114.0 and will be removed in a future release. use --logLevel info
Start building sites … 
hugo v0.120.1-16fb2cae88eb6add7d12e9fbfcf01d8670e60a35 darwin/amd64 BuildDate=2023-10-30T16:44:31Z VendorInfo=gohugoio

INFO  copy static: syncing static files to /
INFO  build: running step process duration 962.376µs
INFO  build: running step assemble duration 4.712758ms
INFO  build: running step render duration 16.982673ms
INFO  build: running step postProcess duration 8.3µs

                   | EN  
-------------------+-----
  Pages            | 10  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     | 43  
  Processed images |  0  
  Aliases          |  1  
  Sitemaps         |  1  
  Cleaned          |  0  

Built in 68 ms
Watching for changes in /Users/mark/GitHub/static-cms-hugo-netlify-template/site/{content,data,layouts,static}
Watching for config changes in /Users/mark/GitHub/static-cms-hugo-netlify-template/site/config.toml
Press Ctrl+C to stop
&amp;lt;i&amp;gt; [webpack-dev-server] Project is running at:
&amp;lt;i&amp;gt; [webpack-dev-server] Loopback: http://localhost:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv4): http://192.168.0.183:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv6): http://[fe80::1]:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] Content not from webpack is served from &#39;/Users/mark/GitHub/static-cms-hugo-netlify-template/dist&#39; directory
&amp;lt;i&amp;gt; [webpack-dev-server] 404s will fallback to &#39;/index.html&#39;
&amp;lt;i&amp;gt; [webpack-dev-middleware] wait until bundle finished: /
assets by path *.js 18.3 MiB
  asset cms.js 18 MiB [emitted] (name: cms)
  asset main.js 300 KiB [emitted] (name: main)
asset main.css 113 KiB [emitted] (name: main)
asset admin/index.html 521 bytes [emitted]
asset fonts/.keep 0 bytes [emitted] [from: src/fonts/.keep] [copied]
Entrypoint main 413 KiB = main.css 113 KiB main.js 300 KiB
Entrypoint cms 18 MiB = cms.js
runtime modules 72.3 KiB 38 modules
modules by path ./node_modules/ 16.9 MiB 82 modules
modules by path ./src/ 133 KiB (javascript) 113 KiB (css/mini-extract)
  modules by path ./src/js/ 15.2 KiB 9 modules
  modules by path ./src/css/*.scss 118 KiB (javascript) 113 KiB (css/mini-extract)
    ./src/css/main.scss 2.78 KiB [built] [code generated]
    ./node_modules/to-string-loader/src/to-string.js!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 429 bytes [built] [code generated]
    ./node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[2].use[1]!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 332 bytes [built] [code generated]
    + 2 modules
  ./src/index.js 124 bytes [built] [code generated]
asset modules 5.46 KiB
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.28 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.33 KiB [built] [code generated] [build time executed]
  data:image/jpeg;base64,/9j/4QAYRXhpZgAA.. 1.55 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.3 KiB [built] [code generated] [build time executed]
webpack 5.89.0 compiled successfully in 6191 ms
INFO  Received System Events: [CREATE        &amp;quot;/Users/mark/GitHub/static-cms-hugo-netlify-template/site/data/webpack.json&amp;quot; WRITE         &amp;quot;/Users/mark/GitHub/static-cms-hugo-netlify-template/site/data/webpack.json&amp;quot;]

Change detected, rebuilding site.
2024-01-13 10:55:38.259 -0600
Data changed WRITE         &amp;quot;/Users/mark/GitHub/static-cms-hugo-netlify-template/site/data/webpack.json&amp;quot;
Data changed WRITE         &amp;quot;/Users/mark/GitHub/static-cms-hugo-netlify-template/site/data/webpack.json&amp;quot;
INFO  build: running step process duration 114.033µs
INFO  build: running step assemble duration 277ns
INFO  build: running step render duration 6.244639ms
INFO  build: running step postProcess duration 1.831µs
Total in 6 ms
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The demo site is indeed working at &lt;code&gt;http://localhost:3000/&lt;/code&gt; and a vist to &lt;code&gt;http://localhost:3000/admin&lt;/code&gt; does indeed open a &lt;em&gt;StaticCMS&lt;/em&gt; login that&amp;rsquo;s prompting me with the following image.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;images/2024/01/Screenshot-2024-01-13-at-11.00.45.png&#34; alt=&#34;Screenshot-2024-01-13-at-11.00.45&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;lets-go-local&#34;&gt;Let&amp;rsquo;s Go Local!&lt;/h3&gt;
&lt;p&gt;Next, I&amp;rsquo;m going to try and switch what we have above to &amp;ldquo;go local&amp;rdquo; using &lt;a href=&#34;https://www.staticcms.org/docs/local-backend&#34;&gt;this guidance&lt;/a&gt; provided in the &lt;em&gt;StaticCMS&lt;/em&gt; documenation.  Fingers crossed for good luck&amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;eureka-it-works&#34;&gt;Eureka! It Works!&lt;/h3&gt;
&lt;p&gt;So, I made the &lt;code&gt;local_backend&lt;/code&gt; config changes as prescribed in &lt;code&gt;site/static/admin/config.yml&lt;/code&gt; and that file now looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;local_backend: 
  # when using a custom proxy server port
  url: http://localhost:8082/api/v1
  # when accessing the local site from a host other than &#39;localhost&#39; or &#39;127.0.0.1&#39;
  allowed_hosts: [&#39;192.168.0.1&#39;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also added a new &lt;code&gt;.env&lt;/code&gt; file in the project root directory with a single line reading &lt;code&gt;PORT=8082&lt;/code&gt;, matching the port number specified in the &lt;code&gt;url:&lt;/code&gt; value from &lt;code&gt;config.yml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, with &lt;code&gt;npx @staticcms/proxy-server&lt;/code&gt; running in a local terminal I&amp;rsquo;m able to run &lt;code&gt;npm start&lt;/code&gt; (in my &lt;em&gt;VSCode&lt;/em&gt; terminal) to launch the site at &lt;code&gt;localhost:3000&lt;/code&gt;.  Having done that I&amp;rsquo;m able to visit &lt;code&gt;http://localhost:3000/admin&lt;/code&gt; where I get a new &lt;em&gt;StaticCMS&lt;/em&gt; splash screen with a simple &lt;code&gt;Login&lt;/code&gt; button, not a &lt;em&gt;Netlify&lt;/em&gt; button.  Yay!&lt;/p&gt;
&lt;h3 id=&#34;even-better-news&#34;&gt;Even Better News?&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;StaticCMS&lt;/em&gt; was built from &lt;em&gt;NetlifyCMS&lt;/em&gt; so the &lt;code&gt;site/static/admin/config.yml&lt;/code&gt;.  I think I&amp;rsquo;ll be able to use the &lt;code&gt;collections:&lt;/code&gt; portion of my old &lt;code&gt;admin/config.yml&lt;/code&gt; file from &lt;a href=&#34;https://github.com/SummittDweller/wieting-one-click-hugo-cms&#34;&gt;wieting-one-click-hugo-cms&lt;/a&gt; to get a headstart on setting that up!&lt;/p&gt;
&lt;p&gt;Next step&amp;hellip; let&amp;rsquo;s see if I can drop the &lt;code&gt;site&lt;/code&gt; directory from &lt;a href=&#34;https://github.com/SummittServices/wieting-ss&#34;&gt;wieting-ss&lt;/a&gt; into this local project and still have a functioning local site.  Again, fingers crossed for luck.&lt;/p&gt;
&lt;h1 id=&#34;fresh-restart&#34;&gt;Fresh Restart&lt;/h1&gt;
&lt;p&gt;In order to start fresh I went back to the &lt;a href=&#34;https://github.com/StaticJsCMS/static-cms-hugo-netlify-template&#34;&gt;StaticJsCMS/static-cms-hugo-netlify-template&lt;/a&gt; repo and created a new fork (not a clone) in my &lt;code&gt;Summitt-Services&lt;/code&gt; team space at &lt;a href=&#34;https://github.com/Summitt-Services/static-cms-hugo-local-template&#34;&gt;https://github.com/Summitt-Services/static-cms-hugo-local-template&lt;/a&gt;.  In the new fork I changed the &lt;code&gt;-netlify-&lt;/code&gt; portion of the name to &lt;code&gt;-local-&lt;/code&gt; as this new project is intended to have no &lt;em&gt;Netlify&lt;/em&gt; association, only a &amp;ldquo;local&amp;rdquo; CMS will be supported.&lt;/p&gt;
&lt;p&gt;Next, I cloned the new fork to my workstation and got it working locally again using the same steps I had taken above.&lt;/p&gt;
&lt;h2 id=&#34;copying-wieting-ss-to-static-cms-hugo-local-template&#34;&gt;Copying &lt;code&gt;wieting-ss&lt;/code&gt; to &lt;code&gt;static-cms-hugo-local-template&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;For safe-keeping I created a new branch named &lt;code&gt;wieting&lt;/code&gt; in &lt;code&gt;~/GitHub/static-cms-hugo-local-template&lt;/code&gt; where I did this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹wieting*› 
╰─$ rsync -aruvi ../wieting-ss/. site/.
...
&amp;gt;f++++++++++ themes/vanilla-bootstrap-hugo-theme/static/js/checkTweetDate.js
&amp;gt;f++++++++++ themes/vanilla-bootstrap-hugo-theme/static/js/feather.min.js
&amp;gt;f++++++++++ themes/vanilla-bootstrap-hugo-theme/static/js/jquery-3.3.1.slim.min.js

sent 282,877,469 bytes  received 470,944 bytes  9,605,030.95 bytes/sec
total size is 470,527,158  speedup is 1.66
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Will it work?  Let&amp;rsquo;s see&amp;hellip; NOPE.  It does produce a site but the old &amp;ldquo;Kaldi&amp;rdquo; content is still all I see.  I even changed the &lt;code&gt;backend.branch:&lt;/code&gt; value from &lt;code&gt;main&lt;/code&gt; to &lt;code&gt;wieting&lt;/code&gt;, but that did nothing.  So, I&amp;rsquo;ve captured the output here so that I can have a look at what&amp;rsquo;s happening.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹wieting*› 
╰─$ npm start                               

&amp;gt; static-cms-hugo-netlify-template@1.0.0 start
&amp;gt; run-p start:**


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:webpack
&amp;gt; webpack-dev-server --config webpack.dev.js --hot --stats-error-details


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:hugo
&amp;gt; hugo -d ../dist -s site -vw

WARN  --verbose was deprecated in Hugo v0.114.0 and will be removed in a future release. use --logLevel info
Start building sites … 
hugo v0.120.1-16fb2cae88eb6add7d12e9fbfcf01d8670e60a35 darwin/amd64 BuildDate=2023-10-30T16:44:31Z VendorInfo=gohugoio

INFO  copy static: syncing static files to /
INFO  build: running step process duration 4.236952ms
INFO  build: running step assemble duration 13.684119ms
WARN  found no layout file for &amp;quot;json&amp;quot; for kind &amp;quot;section&amp;quot;: You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
INFO  build: running step render duration 58.753135ms
INFO  build: running step postProcess duration 8.744µs

                   | EN   
-------------------+------
  Pages            |  66  
  Paginator pages  |   7  
  Non-page files   |   0  
  Static files     | 541  
  Processed images |   0  
  Aliases          |   7  
  Sitemaps         |   1  
  Cleaned          |   0  

Built in 579 ms
Watching for changes in /Users/mark/GitHub/static-cms-hugo-local-template/site/{archetypes,content,data,layouts,package.json,static,themes}
Watching for config changes in /Users/mark/GitHub/static-cms-hugo-local-template/site/config.toml, /Users/mark/GitHub/static-cms-hugo-local-template/site/config/_default
Press Ctrl+C to stop
&amp;lt;i&amp;gt; [webpack-dev-server] Project is running at:
&amp;lt;i&amp;gt; [webpack-dev-server] Loopback: http://localhost:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv4): http://192.168.0.183:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv6): http://[fe80::1]:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] Content not from webpack is served from &#39;/Users/mark/GitHub/static-cms-hugo-local-template/dist&#39; directory
&amp;lt;i&amp;gt; [webpack-dev-server] 404s will fallback to &#39;/index.html&#39;
&amp;lt;i&amp;gt; [webpack-dev-middleware] wait until bundle finished: /
assets by path *.js 18.3 MiB
  asset cms.js 18 MiB [emitted] (name: cms)
  asset main.js 300 KiB [emitted] (name: main)
asset main.css 113 KiB [emitted] (name: main)
asset admin/index.html 521 bytes [emitted]
asset fonts/.keep 0 bytes [emitted] [from: src/fonts/.keep] [copied]
Entrypoint main 413 KiB = main.css 113 KiB main.js 300 KiB
Entrypoint cms 18 MiB = cms.js
runtime modules 72.3 KiB 38 modules
modules by path ./node_modules/ 16.9 MiB 82 modules
modules by path ./src/ 133 KiB (javascript) 113 KiB (css/mini-extract)
  modules by path ./src/js/ 15.2 KiB 9 modules
  modules by path ./src/css/*.scss 118 KiB (javascript) 113 KiB (css/mini-extract)
    ./src/css/main.scss 2.78 KiB [built] [code generated]
    ./node_modules/to-string-loader/src/to-string.js!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 429 bytes [built] [code generated]
    ./node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[2].use[1]!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 332 bytes [built] [code generated]
    + 2 modules
  ./src/index.js 124 bytes [built] [code generated]
asset modules 5.46 KiB
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.28 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.33 KiB [built] [code generated] [build time executed]
  data:image/jpeg;base64,/9j/4QAYRXhpZgAA.. 1.55 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.3 KiB [built] [code generated] [build time executed]
webpack 5.89.0 compiled successfully in 5563 ms
INFO  Received System Events: [CHMOD         &amp;quot;/Users/mark/GitHub/static-cms-hugo-local-template/site/data/webpack.json&amp;quot; WRITE         &amp;quot;/Users/mark/GitHub/static-cms-hugo-local-template/site/data/webpack.json&amp;quot;]

Change detected, rebuilding site.
2024-01-13 13:15:08.329 -0600
Data changed WRITE         &amp;quot;/Users/mark/GitHub/static-cms-hugo-local-template/site/data/webpack.json&amp;quot;
INFO  build: running step process duration 186.604µs
INFO  build: running step assemble duration 244ns
WARN  found no layout file for &amp;quot;json&amp;quot; for kind &amp;quot;section&amp;quot;: You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
INFO  build: running step render duration 31.514265ms
INFO  build: running step postProcess duration 7.661µs
Total in 31 ms
^C&amp;lt;i&amp;gt; [webpack-dev-server] Gracefully shutting down. To force exit, press ^C again. Please wait...
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;corrections-needed&#34;&gt;Corrections Needed&lt;/h2&gt;
&lt;p&gt;So, the first thing I see here is that the new &lt;code&gt;site&lt;/code&gt; directory contains the template&amp;rsquo;s &lt;code&gt;content/_index.md&lt;/code&gt; file which naturally becomes the site&amp;rsquo;s home page.  It contains only &amp;ldquo;Kaldi&amp;rdquo; content. So I tried removing that &lt;code&gt;_index.md&lt;/code&gt; file and that changed the home page &amp;ldquo;title&amp;rdquo;, but very little else.&lt;/p&gt;
&lt;p&gt;I think returing to the &lt;code&gt;main&lt;/code&gt; branch of this project and starting over again but using only the content of &lt;code&gt;wieting-ss&lt;/code&gt; in the new &lt;code&gt;site/&lt;/code&gt; directory might be wise.  I did it like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ rm -fr static-cms-hugo-local-template
╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ git clone https://github.com/Summitt-Services/static-cms-hugo-local-template.git
Cloning into &#39;static-cms-hugo-local-template&#39;...
remote: Enumerating objects: 574, done.
remote: Counting objects: 100% (155/155), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 574 (delta 122), reused 125 (delta 102), pack-reused 419
Receiving objects: 100% (574/574), 22.14 MiB | 23.94 MiB/s, done.
Resolving deltas: 100% (248/248), done.
╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ cd static-cms-hugo-local-template
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main›
╰─$ cp -fr site/static/admin ~
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main›
╰─$ rm -fr site
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*›
╰─$ mkdir site
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*›
╰─$ cp -fr ../wieting-ss/. site/.
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*›
╰─$ cp -f ~/admin/config.yml site/static/admin/.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next I launched the proxy server like so:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*›
╰─$ npx @staticcms/proxy-server
info: Static CMS File System Proxy Server configured with /Users/mark/GitHub/static-cms-hugo-local-template
info: Static CMS Proxy Server listening on port 8082
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then in my &lt;em&gt;VSCode&lt;/em&gt; terminal this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*› 
╰─$ npm start

&amp;gt; static-cms-hugo-netlify-template@1.0.0 start
&amp;gt; run-p start:**


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:webpack
&amp;gt; webpack-dev-server --config webpack.dev.js --hot --stats-error-details


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:hugo
&amp;gt; hugo -d ../dist -s site -vw

WARN  --verbose was deprecated in Hugo v0.114.0 and will be removed in a future release. use --logLevel info
Start building sites … 
hugo v0.120.1-16fb2cae88eb6add7d12e9fbfcf01d8670e60a35 darwin/amd64 BuildDate=2023-10-30T16:44:31Z VendorInfo=gohugoio

INFO  copy static: syncing static files to /
INFO  build: running step process duration 3.193622ms
INFO  build: running step assemble duration 25.748629ms
WARN  found no layout file for &amp;quot;json&amp;quot; for kind &amp;quot;section&amp;quot;: You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
INFO  build: running step render duration 70.992512ms
INFO  build: running step postProcess duration 9.94µs
&amp;lt;i&amp;gt; [webpack-dev-server] Project is running at:
&amp;lt;i&amp;gt; [webpack-dev-server] Loopback: http://localhost:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv4): http://192.168.0.183:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv6): http://[fe80::1]:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] Content not from webpack is served from &#39;/Users/mark/GitHub/static-cms-hugo-local-template/dist&#39; directory
&amp;lt;i&amp;gt; [webpack-dev-server] 404s will fallback to &#39;/index.html&#39;

                   | EN   
-------------------+------
  Pages            |  57  
  Paginator pages  |   0  
  Non-page files   |   0  
  Static files     | 499  
  Processed images |   0  
  Aliases          |   1  
  Sitemaps         |   1  
  Cleaned          |   0  

Built in 1034 ms
Watching for changes in /Users/mark/GitHub/static-cms-hugo-local-template/site/{archetypes,content,layouts,package.json,static,themes}
Watching for config changes in /Users/mark/GitHub/static-cms-hugo-local-template/site/config/_default
Press Ctrl+C to stop
&amp;lt;i&amp;gt; [webpack-dev-middleware] wait until bundle finished: /
assets by path *.js 18.3 MiB
  asset cms.js 18 MiB [emitted] (name: cms)
  asset main.js 300 KiB [emitted] (name: main)
asset main.css 113 KiB [emitted] (name: main)
asset admin/index.html 521 bytes [emitted]
asset fonts/.keep 0 bytes [emitted] [from: src/fonts/.keep] [copied]
Entrypoint main 413 KiB = main.css 113 KiB main.js 300 KiB
Entrypoint cms 18 MiB = cms.js
runtime modules 72.3 KiB 38 modules
modules by path ./node_modules/ 16.9 MiB 82 modules
modules by path ./src/ 133 KiB (javascript) 113 KiB (css/mini-extract)
  modules by path ./src/js/ 15.2 KiB 9 modules
  modules by path ./src/css/*.scss 118 KiB (javascript) 113 KiB (css/mini-extract)
    ./src/css/main.scss 2.78 KiB [built] [code generated]
    ./node_modules/to-string-loader/src/to-string.js!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 429 bytes [built] [code generated]
    ./node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[2].use[1]!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 332 bytes [built] [code generated]
    + 2 modules
  ./src/index.js 124 bytes [built] [code generated]
asset modules 5.46 KiB
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.28 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.33 KiB [built] [code generated] [build time executed]
  data:image/jpeg;base64,/9j/4QAYRXhpZgAA.. 1.55 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.3 KiB [built] [code generated] [build time executed]
webpack 5.89.0 compiled successfully in 6771 ms
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, it works.  Only this time the Wieting website appears at &lt;a href=&#34;http://localhost:3000&#34;&gt;http://localhost:3000&lt;/a&gt; and &lt;a href=&#34;http://localhost:3000/admin&#34;&gt;http://localhost:3000/admin&lt;/a&gt; works too, but with the wrong configuration.  Still, that&amp;rsquo;s a WIN!&lt;/p&gt;
&lt;h2 id=&#34;time-to-save-my-progress&#34;&gt;Time To Save My Progress&lt;/h2&gt;
&lt;p&gt;I really don&amp;rsquo;t want to dump 4000+ new files, many of them specific to the Wieting website, into my pristine (and working) &lt;a href=&#34;https://github.com/Summitt-Services/static-cms-hugo-local-template&#34;&gt;https://github.com/Summitt-Services/static-cms-hugo-local-template&lt;/a&gt; GitHub repository.  So, I&amp;rsquo;m going to clean up my local project by removing that which is no longer needed, and then I&amp;rsquo;m going to remove the &lt;code&gt;.git&lt;/code&gt; directory and create/populate a new &lt;a href=&#34;https://github.com/SummittDweller/wieting-staticCMS&#34;&gt;wieting-staticCMS&lt;/a&gt; private repository.  After creating that empty repository the process looked like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*› 
╰─$ rm -fr site/.git 
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template ‹main*› 
╰─$ rm -fr .git
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git init
Initialized empty Git repository in /Users/mark/GitHub/static-cms-hugo-local-template/.git/
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git add .
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git commit -m &amp;quot;first commit&amp;quot;
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git branch -M main
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git remote add origin https://github.com/SummittDweller/wieting-staticCMS.git
╭─mark@Marks-Mac-Mini ~/GitHub/static-cms-hugo-local-template 
╰─$ git push -u origin main
...
Enumerating objects: 2979, done.
Counting objects: 100% (2979/2979), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2855/2855), done.
Writing objects: 100% (2979/2979), 95.87 MiB | 2.65 MiB/s, done.
Total 2979 (delta 638), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (638/638), done.
To https://github.com/SummittDweller/wieting-staticCMS.git
 * [new branch]      main -&amp;gt; main
branch &#39;main&#39; set up to track &#39;origin/main&#39;.
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;wieting-staticcms&#34;&gt;wieting-staticCMS&lt;/h1&gt;
&lt;p&gt;With the new GitHub repo in place let&amp;rsquo;s take it for a local spin.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ git clone https://github.com/SummittDweller/wieting-staticCMS.git
Cloning into &#39;wieting-staticCMS&#39;...
remote: Enumerating objects: 2979, done.
remote: Total 2979 (delta 0), reused 0 (delta 0), pack-reused 2979
Receiving objects: 100% (2979/2979), 95.87 MiB | 26.77 MiB/s, done.
Resolving deltas: 100% (638/638), done.
Updating files: 100% (4834/4834), done.
╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ cd wieting-staticCMS
╭─mark@Marks-Mac-Mini ~/GitHub/wieting-staticCMS ‹main›
╰─$ npm install
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.

added 1567 packages, and audited 1568 packages in 1m

426 packages are looking for funding
  run `npm fund` for details

2 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
╭─mark@Marks-Mac-Mini ~/GitHub/wieting-staticCMS ‹main›
╰─$ npx @staticcms/proxy-server
info: Static CMS File System Proxy Server configured with /Users/mark/GitHub/wieting-staticCMS
info: Static CMS Proxy Server listening on port 8082
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, in a differnt terminal window&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/wieting-staticCMS ‹main›
╰─$ npm start

&amp;gt; static-cms-hugo-netlify-template@1.0.0 start
&amp;gt; run-p start:**


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:hugo
&amp;gt; hugo -d ../dist -s site -vw


&amp;gt; static-cms-hugo-netlify-template@1.0.0 start:webpack
&amp;gt; webpack-dev-server --config webpack.dev.js --hot --stats-error-details

WARN  --verbose was deprecated in Hugo v0.114.0 and will be removed in a future release. use --logLevel info
Start building sites …
hugo v0.120.1-16fb2cae88eb6add7d12e9fbfcf01d8670e60a35 darwin/amd64 BuildDate=2023-10-30T16:44:31Z VendorInfo=gohugoio

INFO  copy static: syncing static files to /
INFO  build: running step process duration 3.975463ms
INFO  build: running step assemble duration 19.211854ms
WARN  found no layout file for &amp;quot;json&amp;quot; for kind &amp;quot;section&amp;quot;: You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
INFO  build: running step render duration 54.091014ms
INFO  build: running step postProcess duration 8.597µs

                   | EN
-------------------+------
  Pages            |  57
  Paginator pages  |   0
  Non-page files   |   0
  Static files     | 499
  Processed images |   0
  Aliases          |   1
  Sitemaps         |   1
  Cleaned          |   0

Built in 717 ms
Watching for changes in /Users/mark/GitHub/wieting-staticCMS/site/{archetypes,content,layouts,package.json,static,themes}
Watching for config changes in /Users/mark/GitHub/wieting-staticCMS/site/config/_default
Press Ctrl+C to stop
&amp;lt;i&amp;gt; [webpack-dev-server] Project is running at:
&amp;lt;i&amp;gt; [webpack-dev-server] Loopback: http://localhost:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv4): http://192.168.0.183:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] On Your Network (IPv6): http://[fe80::1]:3000/
&amp;lt;i&amp;gt; [webpack-dev-server] Content not from webpack is served from &#39;/Users/mark/GitHub/wieting-staticCMS/dist&#39; directory
&amp;lt;i&amp;gt; [webpack-dev-server] 404s will fallback to &#39;/index.html&#39;
&amp;lt;i&amp;gt; [webpack-dev-middleware] wait until bundle finished: /
assets by path *.js 18.3 MiB
  asset cms.js 18 MiB [emitted] (name: cms)
  asset main.js 300 KiB [emitted] (name: main)
asset main.css 113 KiB [emitted] (name: main)
asset admin/index.html 521 bytes [emitted]
asset fonts/.keep 0 bytes [emitted] [from: src/fonts/.keep] [copied]
Entrypoint main 413 KiB = main.css 113 KiB main.js 300 KiB
Entrypoint cms 18 MiB = cms.js
runtime modules 72.3 KiB 38 modules
modules by path ./node_modules/ 16.9 MiB 82 modules
modules by path ./src/ 133 KiB (javascript) 113 KiB (css/mini-extract)
  modules by path ./src/js/ 15.2 KiB 9 modules
  modules by path ./src/css/*.scss 118 KiB (javascript) 113 KiB (css/mini-extract)
    ./src/css/main.scss 2.78 KiB [built] [code generated]
    ./node_modules/to-string-loader/src/to-string.js!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 429 bytes [built] [code generated]
    ./node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[2].use[1]!./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/css/main.scss 332 bytes [built] [code generated]
    + 2 modules
  ./src/index.js 124 bytes [built] [code generated]
asset modules 5.46 KiB
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.28 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.33 KiB [built] [code generated] [build time executed]
  data:image/jpeg;base64,/9j/4QAYRXhpZgAA.. 1.55 KiB [built] [code generated] [build time executed]
  data:image/png;base64,iVBORw0KGgoAAAAN.. 1.3 KiB [built] [code generated] [build time executed]
webpack 5.89.0 compiled successfully in 6051 ms
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And again, &lt;strong&gt;IT WORKS!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Time to merge the old CMS config from &lt;code&gt;site/static/.admin-netlify/config.yml&lt;/code&gt; into the new config at &lt;code&gt;site/static/admin/config.yml&lt;/code&gt;.   Then a few changes will be needed since the site&amp;rsquo;s content structure has changed somewhat from the old days.  &lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Snowpocalypse 2024 - Round 2</title>
        <link>https://blog.summittdweller.com/posts/2024/01/2024-01-13-snowpocalypse-2024-round-2/</link>
        <pubDate>Sat, 13 Jan 2024 15:28:12 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/01/2024-01-13-snowpocalypse-2024-round-2/</guid>
        <description>&lt;p&gt;Just thought I would post a couple more photos, with a probable update later today.  Took these photos yesterday (Friday, January 12) at about noon when I ventured outside to clear the driveway.  Didn&amp;rsquo;t quite get it all done because it was just too cold and windy, and the snow was still falling.  I didn&amp;rsquo;t even attempt to clear the front porch&amp;hellip; ain&amp;rsquo;t nobody coming to visit today anyway.  8^)&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2024/01/IMG_1552.png&#34; alt=&#34;&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;There are steps and a deck under there somewhere.&lt;br&gt;
I love my EGO snow thrower, but pushing through drifts that are taller than the intake (about 18&amp;quot;) is NO FUN.  &lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Snowpocalypse 2024?</title>
        <link>https://blog.summittdweller.com/posts/2024/01/2024-01-09-snowpocalypse-2024/</link>
        <pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2024/01/2024-01-09-snowpocalypse-2024/</guid>
        <description>&lt;p&gt;Maybe not as bad as predicted (at least per some predictions) but it was enough wet snow for me.  Took almost an hour to clear using my EGO cordless snow-thrower (love it) and there&amp;rsquo;s more to be done before Mackenzie and I can leave for work in the morning.  &lt;/p&gt;
&lt;p&gt;Fortunately both Grinnell College and South Tama County schools were closed today.  GC re-opens at noon tomorrow and STC just announced that they will be closed on Wednesday too.  &lt;/p&gt;
&lt;p&gt;The captioned photo above is where I left it this evening at about 5:30 PM.  The photo below shows the first 1-minute of my progress at about 4:30 PM.  I posted a track-log of the &amp;ldquo;walk&amp;rdquo; at &lt;a href=&#34;http://localhost:1313/hikes/2024/01/2024-01-09_0430pm/&#34;&gt;https://hikes.summittdweller.com/hikes/2024/01/2024-01-09_0430pm/&lt;/a&gt;.
&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;images/2024/01/IMG_2070.png&#34; alt=&#34;&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;Probably 6&amp;quot; - 7&amp;quot; of wet snow but near the house and street it was 14&amp;quot; - 16&amp;quot; deep.
Ultimately I burned through 4 large EGO batteries.  Clearing the drive in the past would typically take only 2 with some capacity to spare.  &lt;/p&gt;
&lt;p&gt;I still have more to do before going to work tomorrow.  Got another storm heading this way on Wednesday evening so I better get at it in the morning.  Wish me luck.&lt;/p&gt;
&lt;h2 id=&#34;update-10-01-2024--10-am&#34;&gt;Update: 10-01-2024 @ 10 AM&lt;/h2&gt;
&lt;p&gt;Managed to get the snow-thrower out again to finish up last evening&amp;rsquo;s work before heading back to Grinnell in a bit.   34 minutes of effort covering about 3/4 of a mile.  I&amp;rsquo;ll post another track log at &lt;a href=&#34;https://hikes.summittdweller.com&#34;&gt;https://hikes.summittdweller.com&lt;/a&gt; soon.  I did take one more photo to give some perspective to the front porch situation.  &lt;/p&gt;
&lt;p&gt;I really should have taken a photo before I started.  The snow shelf extending down off the roof was easily 2&amp;rsquo; deep/tall x 8&amp;rsquo; long x 16&amp;quot; thick&amp;hellip;before I knocked it down, an effort that took 12 pokes with my shovel.   Went through another two EGO batteries in the effort.  &lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2024/01/IMG_2072.png&#34; alt=&#34;&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Not quite done yet, but at least the drive is clear and the front door is reachable.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>On-prem Servers with StaticCMS and Remote Access for the Wieting</title>
        <link>https://blog.summittdweller.com/posts/2023/12/on-prem-servers-with-staticcms-and-remote-access-for-the-wieting/</link>
        <pubDate>Fri, 29 Dec 2023 16:41:14 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/12/on-prem-servers-with-staticcms-and-remote-access-for-the-wieting/</guid>
        <description>&lt;p&gt;It&amp;rsquo;s no secret that I love building ridiculously inexpensive but secure and reliable static web sites.  Unfortunately, adding and maintaining content can be a pain.  &lt;em&gt;I&amp;rsquo;d rather write code than content!&lt;/em&gt;  So, I also want to pawn that content responsibility off on others, but that means teaching them to use &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VSCode&lt;/a&gt; – my means of editing static content – or providing a &lt;a href=&#34;https://en.wikipedia.org/wiki/Content_management_system&#34;&gt;CMS (content management system)&lt;/a&gt; they can work with.  There&amp;rsquo;s no such thing as a static CMS so now I need some &amp;ldquo;dynamic&amp;rdquo; components.  Unfortunately my &amp;ldquo;dynamic&amp;rdquo; CMS requires user authentication because *we want SOMEONE editing our content, not EVERYONE! *That always seems to be pricey, at least by comparison to our $5/month static website.    &lt;/p&gt;
&lt;h1 id=&#34;currently&#34;&gt;Currently&amp;hellip;&lt;/h1&gt;
&lt;p&gt;The Wieting already has an inexpensive &lt;a href=&#34;gohugo.io&#34;&gt;Hugo&lt;/a&gt; static website at &lt;a href=&#34;https://wieting.TamaToledo.com&#34;&gt;https://Wieting.TamaToledo.com&lt;/a&gt;.   The site code and content both reside in &lt;a href=&#34;https://github.com&#34;&gt;GitHub&lt;/a&gt; free-of-charge.  The site is currently hosted on &lt;em&gt;Netlify&lt;/em&gt; and that costs very little, but also provides meager and dimishing features with virtually no support.  So all of that is good, but could be much better in the near future.  &lt;/p&gt;
&lt;p&gt;Right now the CMS portion of the puzzle uses &lt;em&gt;NetlifyCMS&lt;/em&gt; which demands either running on *Netlify, *as it does,or tediously implementing a relatively complex editor authentication scheme elsewhere.  I chose the simple approach of using the &lt;em&gt;Netlify&lt;/em&gt; host with it&amp;rsquo;s built-in &lt;em&gt;Netlify Identity&lt;/em&gt; features for authentication.  Again, not bad, but not optimal and certainly not sustainable.    &lt;/p&gt;
&lt;p&gt;The other problem with &lt;em&gt;NetlifyCMS&lt;/em&gt; is that every change/addition triggers a new automatic deployment of the site.  When the editors make more than one or two changes in rapid succession, which they like to do, the CMS queues up multiple concureent re-builds of the site and those almost always exceed API quota and crash.   So the changes get saved, but not deployed.  &lt;/p&gt;
&lt;h1 id=&#34;the-future&#34;&gt;The Future&amp;hellip;&lt;/h1&gt;
&lt;p&gt;So, what if I could give my &amp;ldquo;editors&amp;rdquo; access to a free, aka &amp;ldquo;open&amp;rdquo; CMS, one that doesn&amp;rsquo;t require &lt;em&gt;Netlify &lt;em&gt;or&lt;/em&gt; Netlify Identity&lt;/em&gt;?  Sounds promising.  I&amp;rsquo;ve been looking at &lt;a href=&#34;https://www.staticcms.org/&#34;&gt;StaticCMS&lt;/a&gt;, but if I run that CMS in the cloud we still have an &amp;ldquo;expensive&amp;rdquo; authentication requirement in some form.  Hmmmm, what if that CMS were running locally on my own server so that no cloud authentication is needed?  That could work, right?  Editors could sit down at the server, which is really just a workstation at the theatre, and edit content until the cows come home, with no cloud authentication needed.  Perfect!  &lt;/p&gt;
&lt;p&gt;Yes, but&amp;hellip;  I can&amp;rsquo;t imagine anyone wanting to sit at a workstation in the projection booth to enter content, that place is difficult to access (lots of stairs), way too noisy with the projector running, frequently either too hot or too cold, and it&amp;rsquo;s just not convenient in the least.  &lt;/p&gt;
&lt;h1 id=&#34;remote-access-to-the-rescue&#34;&gt;Remote Access to the Rescue&lt;/h1&gt;
&lt;p&gt;To avoid working in the projection booth, where the noisy projector and computer workstations are, we currently take advantage of remote desktop access using a program I purchased several years ago: &lt;a href=&#34;https://edovia.com/en/screens/&#34;&gt;Screens&lt;/a&gt;.  I have a &lt;em&gt;Screens 4&lt;/em&gt; license that I obtained with a one-time-fee and it works from any of my Macs (or iOS devices) to give me control of the Mac Mini in the booth.  But &lt;em&gt;Screens&lt;/em&gt; is Mac-only software.  It has a remote component called *Screens Connect *that runs on each remote device to make connections super-easy, but *Screens Connect *doesn&amp;rsquo;t work on Linux systems which require tedios manual configuration instead.  **I&amp;rsquo;ve spent many hours but have never been able to make the manual configuration work with the Wieting&amp;rsquo;s networking and &lt;a href=&#34;https://www.windstream.com/high-speed-internet&#34;&gt;Kinetic&lt;/a&gt; internet connection from &lt;em&gt;Windstream&lt;/em&gt;.  **&lt;/p&gt;
&lt;p&gt;In addition to &lt;em&gt;Screens,&lt;/em&gt; the Wieting has used &lt;em&gt;TeamViewer&lt;/em&gt; with our technical service provider, &lt;a href=&#34;https://www.sonicequipment.com/&#34;&gt;Sonic Equipment Company&lt;/a&gt;, for remote connections into the projection booth.  We&amp;rsquo;ve never owned a license and purchasing one is cost-prohibitive.  &lt;/p&gt;
&lt;h1 id=&#34;reasonable-remote-access&#34;&gt;Reasonable Remote Access?&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Screens&lt;/em&gt; just released a new version, &lt;em&gt;Screens 5&lt;/em&gt;, and the upgrade costs $$$ but it&amp;rsquo;s still Mac-only and there&amp;rsquo;s still no Linux version of their wonderful &lt;em&gt;Screens Connect&lt;/em&gt; app.  So, no thank you.  There must be a reasonable alternative, right?  &lt;/p&gt;
&lt;p&gt;Yup.  I&amp;rsquo;ve signed up for a 30-day trial (I love software that comes with a reasonable trial version and period) of &lt;a href=&#34;https://getscreen.me&#34;&gt;Getscreen.me&lt;/a&gt;.   So far it rocks!  Even with my Linux workstations!   Best of all, I believe the Wieting&amp;rsquo;s use case would cost between $60 to $150 per year.  Not too shabby.&lt;/p&gt;
&lt;h1 id=&#34;summary-the-plan&#34;&gt;Summary&amp;hellip; the Plan&lt;/h1&gt;
&lt;p&gt;So, my plan/proposal is to park a Linux workstation (a PC repurposed with the *Ubuntu *OS) in the projection booth to support an instance of &lt;a href=&#34;https://www.staticcms.org/&#34;&gt;StaticCMS&lt;/a&gt;.  That workstation will be remotely accessible using &lt;a href=&#34;https://getscreen.me&#34;&gt;Getscreen.me&lt;/a&gt; and it will be home to a local copy of the Wieting&amp;rsquo;s website.  It will be configured such that &lt;em&gt;StaticCMS&lt;/em&gt; can be used to update the local website content, with a link that can be used to push changes to &lt;em&gt;GitHub&lt;/em&gt; where changes are deployed to &lt;a href=&#34;https://wieting.TamaToledo.com&#34;&gt;https://wieting.TamaToledo.com&lt;/a&gt; hosted in either &lt;em&gt;DigitalOcean&lt;/em&gt; or &lt;em&gt;Azure&lt;/em&gt; static apps.  &lt;/p&gt;
&lt;h1 id=&#34;bonus&#34;&gt;Bonus!&lt;/h1&gt;
&lt;p&gt;Without too much extra effort, the Linux workstation with remote access should also be able to support playback of the Wieting&amp;rsquo;s pre-show content (currently running from an unreliable Raspberry Pi) as well as projector and audio rack controls (currently supplied by our Mac Mini).  &lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Building My First Steamlit App</title>
        <link>https://blog.summittdweller.com/posts/2023/07/building-my-first-steamlit-app/</link>
        <pubDate>Mon, 24 Jul 2023 18:44:51 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/07/building-my-first-steamlit-app/</guid>
        <description>&lt;p&gt;I&amp;rsquo;ve been wanting to give &lt;a href=&#34;https://streamlit.io/&#34;&gt;Streamlit&lt;/a&gt; a try for some time now.  Recently, I found &lt;a href=&#34;https://github.com/Jcharis/Streamlit_DataScience_Apps&#34;&gt;Streamlit DataScience Apps&lt;/a&gt;, a &lt;em&gt;GitHub&lt;/em&gt; repo full of &lt;em&gt;Streamlit&lt;/em&gt; apps, written by &lt;a href=&#34;https://github.com/Jcharis/Streamlit_DataScience_Apps/commits?author=Jcharis&#34;&gt;Jcharis&lt;/a&gt;.  In particular, I thought I would take the &lt;a href=&#34;https://github.com/Jcharis/Streamlit_DataScience_Apps/tree/master/Job_Search_App_with_Streamlit_Forms_n_GithubAPI&#34;&gt;Job_Search_App_with_Streamlit_Forms_n_GithubAPI&lt;/a&gt; code for a spin.&lt;/p&gt;
&lt;p&gt;First step, I created a new &lt;code&gt;~/GitHub/&lt;/code&gt; code directory on my Mac; I named my directory &lt;code&gt;~/GitHub/job-search-app-with-streamlit-forms&lt;/code&gt;.  The plan was to work in that directory inside &lt;em&gt;VSCode&lt;/em&gt; with all the project requirements housed in a Python virtual environment (&lt;code&gt;.venv&lt;/code&gt;) there.&lt;/p&gt;
&lt;p&gt;The command stream in my terminal looked like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~
╰─$ cd ~/GitHub
╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ mkdir job-search-app-with-streamlit-forms
╭─mark@Marks-Mac-Mini ~/GitHub
╰─$ cd job-search-app-with-streamlit-forms
╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms
╰─$ code .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That last command opened the new directory in &lt;em&gt;VSCode&lt;/em&gt; where I had all the tools I needed, including a new terminal window.  In that window I continued with&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ python3 -m venv .venv

╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ source .venv/bin/activate

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ pip3 install streamlit

Collecting streamlit
  Downloading streamlit-1.25.0-py2.py3-none-any.whl (8.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 26.6 MB/s eta 0:00:00
Collecting altair&amp;lt;6,&amp;gt;=4.0
  Downloading altair-5.0.1-py3-none-any.whl (471 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 471.5/471.5 kB 13.9 MB/s eta 0:00:00
Collecting blinker&amp;lt;2,&amp;gt;=1.0.0
  Downloading blinker-1.6.2-py3-none-any.whl (13 kB)
Collecting cachetools&amp;lt;6,&amp;gt;=4.0
  Downloading cachetools-5.3.1-py3-none-any.whl (9.3 kB)
Collecting click&amp;lt;9,&amp;gt;=7.0
  Downloading click-8.1.6-py3-none-any.whl (97 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 3.7 MB/s eta 0:00:00
Collecting importlib-metadata&amp;lt;7,&amp;gt;=1.4
  Downloading importlib_metadata-6.8.0-py3-none-any.whl (22 kB)
Collecting numpy&amp;lt;2,&amp;gt;=1.19.3
  Downloading numpy-1.25.1-cp311-cp311-macosx_10_9_x86_64.whl (20.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.0/20.0 MB 30.2 MB/s eta 0:00:00
Collecting packaging&amp;lt;24,&amp;gt;=16.8
  Downloading packaging-23.1-py3-none-any.whl (48 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.9/48.9 kB 1.6 MB/s eta 0:00:00
Collecting pandas&amp;lt;3,&amp;gt;=1.3.0
  Downloading pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 38.2 MB/s eta 0:00:00
Collecting pillow&amp;lt;10,&amp;gt;=7.1.0
  Downloading Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl (3.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 23.5 MB/s eta 0:00:00
Collecting protobuf&amp;lt;5,&amp;gt;=3.20
  Downloading protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl (400 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 400.3/400.3 kB 12.9 MB/s eta 0:00:00
Collecting pyarrow&amp;gt;=6.0
  Downloading pyarrow-12.0.1-cp311-cp311-macosx_10_14_x86_64.whl (24.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.7/24.7 MB 19.0 MB/s eta 0:00:00
Collecting pympler&amp;lt;2,&amp;gt;=0.9
  Downloading Pympler-1.0.1-py3-none-any.whl (164 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 164.8/164.8 kB 5.9 MB/s eta 0:00:00
Collecting python-dateutil&amp;lt;3,&amp;gt;=2.7.3
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 7.9 MB/s eta 0:00:00
Collecting requests&amp;lt;3,&amp;gt;=2.18
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 2.3 MB/s eta 0:00:00
Collecting rich&amp;lt;14,&amp;gt;=10.14.0
  Downloading rich-13.4.2-py3-none-any.whl (239 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 239.4/239.4 kB 8.8 MB/s eta 0:00:00
Collecting tenacity&amp;lt;9,&amp;gt;=8.1.0
  Downloading tenacity-8.2.2-py3-none-any.whl (24 kB)
Collecting toml&amp;lt;2,&amp;gt;=0.10.1
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting typing-extensions&amp;lt;5,&amp;gt;=4.1.0
  Downloading typing_extensions-4.7.1-py3-none-any.whl (33 kB)
Collecting tzlocal&amp;lt;5,&amp;gt;=1.1
  Downloading tzlocal-4.3.1-py3-none-any.whl (20 kB)
Collecting validators&amp;lt;1,&amp;gt;=0.2
  Downloading validators-0.20.0.tar.gz (30 kB)
  Preparing metadata (setup.py) ... done
Collecting gitpython!=3.1.19,&amp;lt;4,&amp;gt;=3.0.7
  Downloading GitPython-3.1.32-py3-none-any.whl (188 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.5/188.5 kB 6.9 MB/s eta 0:00:00
Collecting pydeck&amp;lt;1,&amp;gt;=0.8
  Downloading pydeck-0.8.0-py2.py3-none-any.whl (4.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7/4.7 MB 28.7 MB/s eta 0:00:00
Collecting tornado&amp;lt;7,&amp;gt;=6.0.3
  Downloading tornado-6.3.2-cp38-abi3-macosx_10_9_x86_64.whl (422 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 422.6/422.6 kB 12.7 MB/s eta 0:00:00
Collecting jinja2
  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 5.4 MB/s eta 0:00:00
Collecting jsonschema&amp;gt;=3.0
  Downloading jsonschema-4.18.4-py3-none-any.whl (80 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.0/81.0 kB 3.0 MB/s eta 0:00:00
Collecting toolz
  Downloading toolz-0.12.0-py3-none-any.whl (55 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.8/55.8 kB 2.1 MB/s eta 0:00:00
Collecting gitdb&amp;lt;5,&amp;gt;=4.0.1
  Downloading gitdb-4.0.10-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.7/62.7 kB 2.1 MB/s eta 0:00:00
Collecting zipp&amp;gt;=0.5
  Downloading zipp-3.16.2-py3-none-any.whl (7.2 kB)
Collecting pytz&amp;gt;=2020.1
  Using cached pytz-2023.3-py2.py3-none-any.whl (502 kB)
Collecting tzdata&amp;gt;=2022.1
  Downloading tzdata-2023.3-py2.py3-none-any.whl (341 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 341.8/341.8 kB 10.8 MB/s eta 0:00:00
Collecting six&amp;gt;=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting charset-normalizer&amp;lt;4,&amp;gt;=2
  Downloading charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl (125 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 125.1/125.1 kB 4.5 MB/s eta 0:00:00
Collecting idna&amp;lt;4,&amp;gt;=2.5
  Downloading idna-3.4-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB 2.1 MB/s eta 0:00:00
Collecting urllib3&amp;lt;3,&amp;gt;=1.21.1
  Downloading urllib3-2.0.4-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.9/123.9 kB 4.5 MB/s eta 0:00:00
Collecting certifi&amp;gt;=2017.4.17
  Downloading certifi-2023.7.22-py3-none-any.whl (158 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 158.3/158.3 kB 5.7 MB/s eta 0:00:00
Collecting markdown-it-py&amp;gt;=2.2.0
  Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 3.3 MB/s eta 0:00:00
Collecting pygments&amp;lt;3.0.0,&amp;gt;=2.13.0
  Downloading Pygments-2.15.1-py3-none-any.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 23.0 MB/s eta 0:00:00
Collecting pytz-deprecation-shim
  Downloading pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl (15 kB)
Collecting decorator&amp;gt;=3.4.0
  Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting smmap&amp;lt;6,&amp;gt;=3.0.1
  Downloading smmap-5.0.0-py3-none-any.whl (24 kB)
Collecting MarkupSafe&amp;gt;=2.0
  Downloading MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl (13 kB)
Collecting attrs&amp;gt;=22.2.0
  Downloading attrs-23.1.0-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.2/61.2 kB 2.1 MB/s eta 0:00:00
Collecting jsonschema-specifications&amp;gt;=2023.03.6
  Downloading jsonschema_specifications-2023.7.1-py3-none-any.whl (17 kB)
Collecting referencing&amp;gt;=0.28.4
  Downloading referencing-0.30.0-py3-none-any.whl (25 kB)
Collecting rpds-py&amp;gt;=0.7.1
  Downloading rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl (311 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 311.9/311.9 kB 9.3 MB/s eta 0:00:00
Collecting mdurl~=0.1
  Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: pytz, zipp, urllib3, tzdata, typing-extensions, tornado, toolz, toml, tenacity, smmap, six, rpds-py, pympler, pygments, protobuf, pillow, packaging, numpy, mdurl, MarkupSafe, idna, decorator, click, charset-normalizer, certifi, cachetools, blinker, attrs, validators, requests, referencing, pytz-deprecation-shim, python-dateutil, pyarrow, markdown-it-py, jinja2, importlib-metadata, gitdb, tzlocal, rich, pydeck, pandas, jsonschema-specifications, gitpython, jsonschema, altair, streamlit
  DEPRECATION: validators is being installed using the legacy &#39;setup.py install&#39; method, because it does not have a &#39;pyproject.toml&#39; and the &#39;wheel&#39; package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the &#39;--use-pep517&#39; option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for validators ... done
Successfully installed MarkupSafe-2.1.3 altair-5.0.1 attrs-23.1.0 blinker-1.6.2 cachetools-5.3.1 certifi-2023.7.22 charset-normalizer-3.2.0 click-8.1.6 decorator-5.1.1 gitdb-4.0.10 gitpython-3.1.32 idna-3.4 importlib-metadata-6.8.0 jinja2-3.1.2 jsonschema-4.18.4 jsonschema-specifications-2023.7.1 markdown-it-py-3.0.0 mdurl-0.1.2 numpy-1.25.1 packaging-23.1 pandas-2.0.3 pillow-9.5.0 protobuf-4.23.4 pyarrow-12.0.1 pydeck-0.8.0 pygments-2.15.1 pympler-1.0.1 python-dateutil-2.8.2 pytz-2023.3 pytz-deprecation-shim-0.1.0.post0 referencing-0.30.0 requests-2.31.0 rich-13.4.2 rpds-py-0.9.2 six-1.16.0 smmap-5.0.0 streamlit-1.25.0 tenacity-8.2.2 toml-0.10.2 toolz-0.12.0 tornado-6.3.2 typing-extensions-4.7.1 tzdata-2023.3 tzlocal-4.3.1 urllib3-2.0.4 validators-0.20.0 zipp-3.16.2

[notice] A new release of pip is available: 23.0.1 -&amp;gt; 23.2.1
[notice] To update, run: pip install --upgrade pip

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ pip install --upgrade pip

Requirement already satisfied: pip in ./.venv/lib/python3.11/site-packages (23.0.1)
Collecting pip
  Downloading pip-23.2.1-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 12.6 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.0.1
    Uninstalling pip-23.0.1:
      Successfully uninstalled pip-23.0.1
Successfully installed pip-23.2.1

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ pip3 install requests

Requirement already satisfied: requests in ./.venv/lib/python3.11/site-packages (2.31.0)
Requirement already satisfied: charset-normalizer&amp;lt;4,&amp;gt;=2 in ./.venv/lib/python3.11/site-packages (from requests) (3.2.0)
Requirement already satisfied: idna&amp;lt;4,&amp;gt;=2.5 in ./.venv/lib/python3.11/site-packages (from requests) (3.4)
Requirement already satisfied: urllib3&amp;lt;3,&amp;gt;=1.21.1 in ./.venv/lib/python3.11/site-packages (from requests) (2.0.4)
Requirement already satisfied: certifi&amp;gt;=2017.4.17 in ./.venv/lib/python3.11/site-packages (from requests) (2023.7.22)

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ streamlit app
Usage: streamlit [OPTIONS] COMMAND [ARGS]...
Try &#39;streamlit --help&#39; for help.

Error: No such command &#39;app&#39;.

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/job-search-app-with-streamlit-forms 
╰─$ streamlit run app.py

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.0.183:8501

  For better performance, install the Watchdog module:

  $ xcode-select --install
  $ pip install watchdog
            
2023-07-24 20:58:17.240 Uncaught app exception
Traceback (most recent call last):
  File &amp;quot;/Users/mark/GitHub/job-search-app-with-streamlit-forms/.venv/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py&amp;quot;, line 552, in _run_script
    exec(code, module.__dict__)
  File &amp;quot;/Users/mark/GitHub/job-search-app-with-streamlit-forms/app.py&amp;quot;, line 116, in &amp;lt;module&amp;gt;
    main()
  File &amp;quot;/Users/mark/GitHub/job-search-app-with-streamlit-forms/app.py&amp;quot;, line 43, in main
    nav1,nav2,nav3 = st.beta_columns([3,2,1])
                     ^^^^^^^^^^^^^^^
AttributeError: module &#39;streamlit&#39; has no attribute &#39;beta_columns&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mackenzie says I need to remove the &lt;code&gt;beta_&lt;/code&gt; in two places in the code&amp;hellip; Done.&lt;/p&gt;
&lt;p&gt;Launching the app again with &lt;code&gt;streamlit run app.py&lt;/code&gt; after a moment or two it works!&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Redefining an Azure Static Web App</title>
        <link>https://blog.summittdweller.com/posts/2023/07/redefining-an-azure-static-web-app/</link>
        <pubDate>Thu, 06 Jul 2023 19:11:12 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/07/redefining-an-azure-static-web-app/</guid>
        <description>&lt;p&gt;Today&amp;rsquo;s burning question&amp;hellip; Can I &lt;em&gt;easily&lt;/em&gt; &amp;ldquo;redefine&amp;rdquo; an Azure Static Web App?&lt;/p&gt;
&lt;p&gt;So, the source code for my password-protected &lt;a href=&#34;https://wieting-guild.tamatoledo.com/&#34;&gt;Wieting-Guild-Pages&lt;/a&gt; is broken and I can&amp;rsquo;t update the stale old content that&amp;rsquo;s currently there.  It&amp;rsquo;s a long story.  Fortunately, I&amp;rsquo;ve rebuilt that code in a new GitHub repo and have it working again.  Yay!&lt;/p&gt;
&lt;p&gt;Now, can I take the deployment parts of the old/broken repo and apply them to the new repo and make it all work again?&lt;/p&gt;
&lt;h2 id=&#34;worth-a-try&#34;&gt;Worth a Try&lt;/h2&gt;
&lt;p&gt;So, I started this experiment by visiting the old project, &lt;a href=&#34;https://github.com/SummittDweller/wieting-guild-pages&#34;&gt;https://github.com/SummittDweller/wieting-guild-pages&lt;/a&gt;, and copying the &lt;a href=&#34;https://github.com/SummittDweller/wieting-guild-pages/blob/main/.github/workflows/azure-static-web-apps-lemon-mushroom-087d78210.yml&#34;&gt;https://github.com/SummittDweller/wieting-guild-pages/blob/main/.github/workflows/azure-static-web-apps-lemon-mushroom-087d78210.yml&lt;/a&gt; file found there.  That GitHub workflow file contains nearly all the information required to deploy the old site, maybe it will work for the new site too?  Nope, at least not right out of the box.&lt;/p&gt;
&lt;p&gt;I attched the &lt;code&gt;.yml&lt;/code&gt; file to my new project by placing an unmodified copy of it in the new project&amp;rsquo;s &lt;code&gt;.github/workflows&lt;/code&gt; directory.  Then when I committed the change and pushed it to GitHub the workflow kicked in automatically.  Ultimately it looks like the &amp;ldquo;build&amp;rdquo; portion of the process worked as-expected, but the &amp;ldquo;deployment&amp;rdquo; failed with these messages:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DeploymentId: 86ab60d0-3abf-429c-9c17-405068c1ebcf

deployment_token was not provided.
The deployment_token is required for deploying content. If you&#39;d like to continue the run without deployment, add the configuration skip_deploy_on_missing_secrets set to true in your workflow file
An unknown exception has occurred

For further information, please visit the Azure Static Web Apps documentation at https://docs.microsoft.com/en-us/azure/static-web-apps/
If you believe this behavior is unexpected, please raise a GitHub issue at https://github.com/azure/static-web-apps/issues/
Exiting
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;something-is-missing&#34;&gt;Something is Missing&lt;/h2&gt;
&lt;p&gt;Since I&amp;rsquo;m not absolutely sure what&amp;rsquo;s missing, and I don&amp;rsquo;t know how to replace it even if I was sure of what it is, I&amp;rsquo;m going to just create a new instance of this web app following the guidance, yet again, in &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=vanilla-javascript&amp;amp;pivots=github&#34;&gt;Quickstart: Build your first static web app&lt;/a&gt;.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Upgrading Matomo PHP</title>
        <link>https://blog.summittdweller.com/posts/2023/06/upgrading-matomo-php/</link>
        <pubDate>Mon, 12 Jun 2023 19:30:18 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/06/upgrading-matomo-php/</guid>
        <description>&lt;p&gt;This afternoon I&amp;rsquo;m adding &lt;code&gt;https://digital.grinnell.edu&lt;/code&gt; (site ID is 17) to my own Matomo instance and I&amp;rsquo;m prompted to upgrade PHP on that Matomo droplet (DigitalOcean).  I did so quite easily following &lt;a href=&#34;https://www.digitalocean.com/community/questions/upgrade-php-from-7-2-to-7-4-on-centos-8-and-apache&#34;&gt;Upgrade PHP from 7.2 to 7.4 on CentOS 8 and Apache&lt;/a&gt;.  I&amp;rsquo;ve also updated my Drupal version, and some modules, in &lt;a href=&#34;https://digital.grinnell.edu&#34;&gt;https://digital.grinnell.edu&lt;/a&gt; along with adding the &lt;code&gt;matomo&lt;/code&gt; module, but that module is now reporting:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    The validation of &amp;quot;http://analytics.summittservices.com/matomo.php&amp;quot; failed with error &amp;quot;Error opening socket ssl://analytics.summittservices.com:443&amp;quot; (HTTP code 0).
    The validation of &amp;quot;https://analytics.summittservices.com/matomo.php&amp;quot; failed with error &amp;quot;Error opening socket ssl://analytics.summittservices.com:443&amp;quot; (HTTP code 0).
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hmmm&amp;hellip;wonder what&amp;rsquo;s up with that?&lt;/p&gt;
&lt;p&gt;So, I tried this&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Last login: Mon Jun 12 19:21:45 2023 from 162.243.190.66
[root@centos-s-1vcpu-1gb-nyc1-01 ~]# sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/summittservices.com-0001.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Renewing an existing certificate for summittservices.com and analytics.summittservices.com
Reloading nginx server after certificate renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/summittservices.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Renewing an existing certificate for summittservices.com and www.summittservices.com
Reloading nginx server after certificate renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all renewals succeeded: 
  /etc/letsencrypt/live/summittservices.com-0001/fullchain.pem (success)
  /etc/letsencrypt/live/summittservices.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;hellip;and&amp;hellip; NO more validation errors!  Yay!&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Planting Sempervivum tectorum (and More)</title>
        <link>https://blog.summittdweller.com/posts/2023/06/planting-hens-and-chicks-and-more/</link>
        <pubDate>Tue, 06 Jun 2023 17:14:02 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/06/planting-hens-and-chicks-and-more/</guid>
        <description>&lt;p&gt;This morning I started an experiment&amp;hellip; clipping leaves (&amp;ldquo;lobes&amp;rdquo; might be a better term for these things) from a healthy, indoor &lt;em&gt;Sempervivum tectorum&lt;/em&gt;.  What&amp;rsquo;s that, you ask? The common name is &lt;strong&gt;Hens and Chicks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A couple of weeks ago I bought an on-sale strawberry pot full of &lt;em&gt;Sempervivum tectorum&lt;/em&gt; and I have it growing on a little table on the front porch.  It&amp;rsquo;s doing QUITE WELL there!  A couple of days ago I uprooted a 3 foot square patch of &lt;em&gt;Snow on the Mountain&lt;/em&gt; from a spot in my front flower beds (outside out southeast bedroom window), and that left a big bare patch of soil to be dealt with.&lt;/p&gt;
&lt;p&gt;Today I clipped some vertical growth from the &lt;em&gt;Sempervivum tectorum&lt;/em&gt;, stripped about two dozen of the &amp;ldquo;lobes&amp;rdquo; from the bottoms, and transplanted the &amp;ldquo;stems&amp;rdquo; into an indoor pot where I&amp;rsquo;m also trying to root some Jade plants.  That left me with a handful of detached &amp;ldquo;lobes&amp;rdquo; so I got out my cultivator, chewed up the bare spot left from the &lt;em&gt;Snow on the Mountain&lt;/em&gt;, scattered the detached lobes there, and covered them gently with a little garden soil.  I have no idea if these might produce new plants&amp;hellip; we shall see.&lt;/p&gt;
&lt;p&gt;Since I had the cultivator out I also roughed up some spots where I&amp;rsquo;m having trougle getting grass to grow, and I&amp;rsquo;ll be watering those spots for the coming week just as I have been watering the &lt;em&gt;Snow on the Mountain&lt;/em&gt; which was transplated to an area near STC Elementary where there&amp;rsquo;s an Ian memorial rock and bench.  There&amp;rsquo;s no longer a tree at that memorial location, the previous one died so we had it cut down. Our hope is to plant a new tree this Fall.&lt;/p&gt;
&lt;p&gt;-/-/-/&lt;/p&gt;
&lt;p&gt;location: Toledo, IA&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Fixing Wieting Guild Pages</title>
        <link>https://blog.summittdweller.com/posts/2023/06/fixing-wieting-guild-pages/</link>
        <pubDate>Sat, 03 Jun 2023 23:20:26 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/06/fixing-wieting-guild-pages/</guid>
        <description>&lt;p&gt;Just the other day I got an updated copy of the Wieting Theatre&amp;rsquo;s volunteer roster and assignment schedule.  As I&amp;rsquo;m trying to post them to the &lt;a href=&#34;https://wieting-guild.tamatoledo.com&#34;&gt;theatre&amp;rsquo;s management website&lt;/a&gt; (it&amp;rsquo;s password protected) I keep having issues with &lt;code&gt;npm&lt;/code&gt; and dependencies that won&amp;rsquo;t compile.  The fix, thus far has included a local command stream like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd wieting-guild-pages
git pull
code .
npm run build
npm run start 
  --&amp;gt; failed
npm update
npm audit fix
npm run build
npm run start
  --&amp;gt; failed
npm audit fix --force
npm run build
  --&amp;gt; failed
npm install axios
npm run build
  --&amp;gt; failed
npm update
npm run build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The last errors had this in common:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[11ty] Unhandled rejection in promise: (more in DEBUG output)
[11ty] connect ETIMEDOUT 54.243.162.8:443 (via Error)
[11ty] 
[11ty] Original error stack trace: Error: connect ETIMEDOUT 54.243.162.8:443
[11ty]     at AxiosError.from (/Users/mark/GitHub/wieting-guild-pages/node_modules/axios/dist/node/axios.cjs:836:14)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One explanation I found:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;The ETIMEDOUT error is thrown by the Node.js runtime when a connection or HTTP request is not closed properly after some time. You might encounter this error from time to time if you configured a timeout on your outgoing HTTP requests. The general solution to this issue is to catch the error and repeat the request, preferably using an exponential backoff strategy so that a waiting period is added between subsequent retries until the request eventually succeeds, or the maximum amount of retries is reached. If you encounter this error frequently, try to investigate your request timeout settings and choose a more appropriate value for the endpoint if possible.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also found a GitHub issues/bug report related to Axios and this error at &lt;a href=&#34;https://github.com/SillyTavern/SillyTavern/issues/432&#34;&gt;https://github.com/SillyTavern/SillyTavern/issues/432&lt;/a&gt;.  So, maybe it&amp;rsquo;s not just me?&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Roadtrip: Geowoodstock 2023</title>
        <link>https://blog.summittdweller.com/posts/2023/05/roadtrip-geowoodstock-2023/</link>
        <pubDate>Mon, 29 May 2023 22:32:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/05/roadtrip-geowoodstock-2023/</guid>
        <description>&lt;p&gt;Geowoodstock 2023 (&lt;a href=&#34;https://coord.info/GC89GMX&#34;&gt;GC89GMX&lt;/a&gt;) and Kentucky&amp;rsquo;s oldest surviving geocache (&lt;a href=&#34;https://coord.info/GC39E&#34;&gt;GC39E&lt;/a&gt;) were the intended destinations of another epic roadtrip with &lt;em&gt;gossamar&lt;/em&gt; on May 25-28, 2023.&lt;/p&gt;
&lt;p&gt;The route and cache count looked something like this:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/images/2023/05/Geowoodstock-2023-Caches-Found.png&#34; alt=&#34;Geowoodstock-2023-Caches-Found&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;The green lines represent my &amp;ldquo;outbound&amp;rdquo; route while the red lines show my &amp;ldquo;return&amp;rdquo; route back from &lt;a href=&#34;https://coord.info/GC39E&#34;&gt;GC39E&lt;/a&gt;.  The ordered list of caches and events found is available for download below.&lt;/p&gt;
&lt;p&gt;The GPS Maze at the top of the list was not found first, but it&amp;rsquo;s listed that way.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://summittservices.blob.core.windows.net/summitt-dweller-blog/files/2023/05/Geowoodstock-Caches-Found.pdf&#34;&gt;Geowoodstock-Caches-Found.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By the numbers I show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;88 geocaches found + events attended&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;108 Adventure Lab stages logged&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;a few DNFs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;985 miles traveled in Tom&amp;rsquo;s car at 40+ mpg&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;21.4 gallons of gas totaling $72.30&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;520 miles traveled in my Honda Ridgeline at 24+ mpg&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Wrap EVERYTHING in NPM!</title>
        <link>https://blog.summittdweller.com/posts/2023/05/wrap-everything-in-npm/</link>
        <pubDate>Fri, 19 May 2023 22:27:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/05/wrap-everything-in-npm/</guid>
        <description>&lt;p&gt;So, &lt;code&gt;node&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt; seem to be all the rage these days, and perhaps for good reason.  I recently fell in love with &lt;a href=&#34;https://www.11ty.dev&#34;&gt;Eleventy/11ty&lt;/a&gt; over &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; because it&amp;rsquo;s Javascript, not Go, and it&amp;rsquo;s elegantly simple with tons of flexibility.  I recently tried to add &lt;em&gt;Pagefind&lt;/em&gt; search to a Hugo static web site (see &lt;a href=&#34;https://static.grinnell.edu/dlad-blog/posts/143-significant-rootstalk-retooling/&#34;&gt;https://static.grinnell.edu/dlad-blog/posts/143-significant-rootstalk-retooling/&lt;/a&gt;).  If &lt;em&gt;Rootstalk&lt;/em&gt;, an Azure Static Web App was framed in &lt;code&gt;node.js&lt;/code&gt;, as both &lt;em&gt;Eleventy&lt;/em&gt; and &lt;em&gt;Pagefind&lt;/em&gt; are, there would be no problem.  The Azure scripts used to deploy those frameworks are far more customizable than Hugo, and there&amp;rsquo;s documentation to prove it.&lt;/p&gt;
&lt;p&gt;So, how might I approach combining Hugo with Pagefind in the cloud?  Well, &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt;* by Tom Hombergs looked like a promising place to start.  The process that Tom advocates leverages a neat little package called &lt;a href=&#34;https://www.npmjs.com/package/hugo-bin&#34;&gt;hugo-bin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;The links provided above and below are to a Wayback Machine capture of the original post.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;that-was-too-easy&#34;&gt;That Was Too Easy!&lt;/h1&gt;
&lt;p&gt;Wrapping my Hugo site in an NPM package was so easy that I forgot to document it&amp;hellip; and maybe I really didn&amp;rsquo;t need too.  Time to catch up, so here&amp;rsquo;s a brief sysnopsis of what I did&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;following-toms-excellent-advice&#34;&gt;Following Tom&amp;rsquo;s Excellent Advice&lt;/h2&gt;
&lt;p&gt;I started by studying &lt;a href=&#34;https://web.archive.org/web/20220818082611/https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt; and quickly found that I could easily follow it almost verbatim.  Since I already had &lt;code&gt;npm&lt;/code&gt; and &lt;code&gt;Hugo&lt;/code&gt; installed I skipped ahead to the section titled &amp;ldquo;Setting Up a Hugo Project&amp;rdquo; and then to the &lt;code&gt;npx&lt;/code&gt; and &lt;code&gt;git&lt;/code&gt; commands there.  My experience, mostly in commands, looked like this on my Mac Mini workstation.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/GitHub/
# Named the new project npm-rootstalk so it would not confilct with any of my existing `rootstalk...` directories
mkdir npm-rootstalk      
cd npm-rootstalk
npx hugo new site . --force
# Copied the contents of my old project into the new one and then removed whatever I no longer needed
cp -fr ~/GitHub/rootstalk/. .  
# Installed Pagefind...
npm install pagefind
git init
# I created a new empty repo in GitHub called npm-rootstalk, then...
git remote add origin https://github.com/Digital-Grinnell/npm-rootstalk 
git add . 
git commit -m &amp;quot;Initial commit of new npm-wrapped Hugo project&amp;quot;
git push
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Having secured a new repo I moved to running Hugo locally, then polishing my &lt;code&gt;package.json&lt;/code&gt; scripts as Tom did.  I now have a &lt;code&gt;package.json&lt;/code&gt; that reads like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &amp;quot;name&amp;quot;: &amp;quot;npm-rootstalk&amp;quot;,
  &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,
  &amp;quot;description&amp;quot;: &amp;quot;Rootstalk website built with Hugo and the Lightbi theme inside an NPM package.  May 2023.&amp;quot;,
  &amp;quot;main&amp;quot;: &amp;quot;index.js&amp;quot;,
  &amp;quot;scripts&amp;quot;: {
    &amp;quot;test&amp;quot;: &amp;quot;echo \&amp;quot;Error: no test specified\&amp;quot; &amp;amp;&amp;amp; exit 1&amp;quot;,
    &amp;quot;build&amp;quot;: &amp;quot;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --source public&amp;quot;,
    &amp;quot;do:build&amp;quot;: &amp;quot;hugo -d public &amp;amp;&amp;amp; npx pagefind --source public&amp;quot;,
    &amp;quot;azure:build&amp;quot;: &amp;quot;hugo -d public --baseURL=\&amp;quot;https://yellow-wave-0e513e510.3.azurestaticapps.net/\&amp;quot; &amp;amp;&amp;amp; npx pagefind --source public&amp;quot;,
    &amp;quot;clean&amp;quot;: &amp;quot;npm run hugo:clean&amp;quot;,
    &amp;quot;serve&amp;quot;: &amp;quot;npm run hugo:build &amp;amp;&amp;amp; npx pagefind --source public --bundle-dir ../static/_pagefind &amp;amp;&amp;amp; npm run hugo:serve&amp;quot;,
    &amp;quot;hugo:build&amp;quot;: &amp;quot;hugo -d public&amp;quot;,
    &amp;quot;hugo:serve&amp;quot;: &amp;quot;hugo server&amp;quot;,
    &amp;quot;hugo:clean&amp;quot;: &amp;quot;rm -rf build resources public&amp;quot;
  },
  &amp;quot;author&amp;quot;: &amp;quot;Mark A. McFate&amp;quot;,
  &amp;quot;license&amp;quot;: &amp;quot;ISC&amp;quot;,
  &amp;quot;dependencies&amp;quot;: {
    &amp;quot;hugo-bin&amp;quot;: &amp;quot;^0.102.0&amp;quot;,
    &amp;quot;pagefind&amp;quot;: &amp;quot;^0.12.0&amp;quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;it-works&#34;&gt;It Works!&lt;/h1&gt;
&lt;p&gt;Now I just use &lt;code&gt;npm run serve&lt;/code&gt; to build the Hugo site, index it with Pagefind, and serve it locally at &lt;a href=&#34;http://localhost:1313&#34;&gt;http://localhost:1313&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;a-staging-site-in-azure&#34;&gt;A Staging Site in Azure&lt;/h1&gt;
&lt;p&gt;I can simply push changes to the &lt;code&gt;main&lt;/code&gt; branch of the &lt;code&gt;npm-rootstalk&lt;/code&gt; repo to trigger an Azure (aka GitHub Actions) rebuild, indexing and deployment of the site to &lt;a href=&#34;https://yellow-wave-0e513e510.3.azurestaticapps.net/&#34;&gt;this address&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;a-new-production-branch&#34;&gt;A New Production Branch&lt;/h1&gt;
&lt;p&gt;Pushing to production is just as simple, I just have to push changes to the new &lt;code&gt;production&lt;/code&gt; branch of the code and my app spec at DigitalOcean (see below) takes care of building, indexing, and deploying to &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;https://rootstalk.grinnell.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That DO app spec reads like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alerts:
- rule: DEPLOYMENT_FAILED
- rule: DOMAIN_FAILED
domains:
- domain: rootstalk.grinnell.edu
  type: PRIMARY
- domain: prairiejournal.grinnell.edu
  type: ALIAS
envs:
- key: TZ
  scope: RUN_AND_BUILD_TIME
  value: America/Chicago
- key: HUGO_MATOMO_ID
  scope: RUN_AND_BUILD_TIME
  value: &amp;quot;15&amp;quot;
ingress:
  rules:
  - component:
      name: npm-rootstalk
    match:
      path:
        prefix: /
name: npm-rootstalk
region: nyc
static_sites:
- build_command: npm run build
  environment_slug: node-js
  github:
    branch: production
    deploy_on_push: true
    repo: Digital-Grinnell/npm-rootstalk
  name: npm-rootstalk
  source_dir: /
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s heavenly!  And that&amp;rsquo;s all for now.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>A Pagefind Problem?</title>
        <link>https://blog.summittdweller.com/posts/2023/05/a-pagefind-problem/</link>
        <pubDate>Wed, 10 May 2023 14:33:09 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/05/a-pagefind-problem/</guid>
        <description>&lt;h1 id=&#34;not-just-a-hugo-issue&#34;&gt;Not Just a Hugo Issue&lt;/h1&gt;
&lt;p&gt;Take note of the question mark at the end of the title, otherwise it could be somewhat misleading.  This is not really a problem with Hugo, but one with cloud deployment of Hugo static apps, particularly as an Azure Static Web App.&lt;/p&gt;
&lt;h1 id=&#34;the-nutshell&#34;&gt;The Nutshell&lt;/h1&gt;
&lt;p&gt;As you may know from &lt;a href=&#34;https://static.grinnell.edu/dlad-blog/posts/143-significant-rootstalk-retooling/&#34;&gt;post 143&lt;/a&gt;, I have successfully installed and configured &lt;a href=&#34;https://pagefind.app/&#34;&gt;Pagefind&lt;/a&gt; in &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;Rootstalk&lt;/a&gt;, but thus far it only works locally.  When I try to deploy Pagefind to the cloud, specifically as an Azure Static Web App, I can&amp;rsquo;t make it work because there&amp;rsquo;s no apparent way to invoke the necessary &lt;code&gt;npx pagefind...&lt;/code&gt; command AFTER Hugo compiles the site, but BEFORE the site gets deployed.  Azure leverages GitHub Actions to build Hugo sites, but that process also involves some custom/proprietary Azure scripts.  Therein lies the problem.&lt;/p&gt;
&lt;p&gt;The Azure script auto-detects the presence of a Hugo project, or any one of many other platforms.  That makes the process super-easy to use, but nearly impossible to &amp;ldquo;customize&amp;rdquo;.  Azure does provide some configuration variables to influence the script behavior, most notably there&amp;rsquo;s an &lt;code&gt;app_build_command&lt;/code&gt; variable that looks promising, but it only works for &lt;code&gt;node&lt;/code&gt; builds, and not for Hugo.&lt;/p&gt;
&lt;h1 id=&#34;three-possible-solutions&#34;&gt;Three Possible Solutions&lt;/h1&gt;
&lt;p&gt;I can reasonably see three possible solutions to this dilema.  In order of simplicity they are:&lt;/p&gt;
&lt;h2 id=&#34;1-skip-azure-and-deploy-only-to-digitalocean&#34;&gt;1. Skip Azure and Deploy Only to DigitalOcean&lt;/h2&gt;
&lt;p&gt;Ultimately, Rootstalk&amp;rsquo;s production instance is a DigitalOcean (DO) static web app, Azure is only used for &amp;ldquo;staging&amp;rdquo; of a locally viable Rootstalk instance.  DO doesn&amp;rsquo;t use GitHub Actions, a drawback in my book, so its build script, called an &amp;ldquo;App Spec&amp;rdquo; in DO, is a little more &amp;ldquo;open&amp;rdquo;.  The critical portion of the App Spec I use to deploy Rootstalk in DO reads like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static_sites:
- build_command: hugo -d public
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;rsquo;s it, just a simple &lt;code&gt;hugo -d public&lt;/code&gt; command.  So, in theory I should be able to just change that to read:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static_sites:
- build_command: hugo -d public &amp;amp;&amp;amp; npm_config_yes=true npx pagefind --source &amp;quot;public&amp;quot; --bundle-dir ../static/_pagefind
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It&amp;rsquo;s basically just a &amp;ldquo;compound&amp;rdquo; command to run &lt;code&gt;npx&lt;/code&gt; immediately after &lt;code&gt;hugo&lt;/code&gt; is done compiling.&lt;/p&gt;
&lt;p&gt;The problem with this very simple solution, assuming it even works, is that it&amp;rsquo;s somewhat unique to Rootstalk which is already deployed to DigitalOcean.  Other Hugo projects, and I have many like &lt;a href=&#34;https://static.grinnell.edu/dlad-blog&#34;&gt;this blog&lt;/a&gt;, that need Azure or another cloud provider other than DO, would not benefit from this fix.&lt;/p&gt;
&lt;h3 id=&#34;update-12-may-2023-same-problem-exists-in-digitalocean&#34;&gt;Update 12-May-2023: Same Problem Exists in DigitalOcean&lt;/h3&gt;
&lt;p&gt;Well, I tried.  I attempted to push my Pagefind additions to Rootstalk forward directly into production on DigitalOcean.  Unfortunately, that failed in similar fashion to what I saw in Azure.  It all works locally, but DigitalOcean, like Azure, has no way of &amp;ldquo;detecting&amp;rdquo; that my Hugo project has an NPM component, and therefore takes no steps to build NPM or Pagefind into my solution.&lt;/p&gt;
&lt;p&gt;So, I&amp;rsquo;m moving on to option #2 below.  Wish me luck.&lt;/p&gt;
&lt;h2 id=&#34;2-wrap-hugo-in-npm&#34;&gt;2. Wrap Hugo in &lt;code&gt;npm&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;So, &lt;code&gt;node&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt; seem to be all the rage these days, and perhaps for good reason.  I recently fell in love with &lt;a href=&#34;https://www.11ty.dev&#34;&gt;Eleventy/11ty&lt;/a&gt; because it&amp;rsquo;s Javascript, not Go, and it&amp;rsquo;s elegantly simple with tons of flexibility.  If my Azure Static Web App was framed in &lt;code&gt;node.js&lt;/code&gt;, as both &lt;em&gt;Eleventy&lt;/em&gt; and &lt;em&gt;Pagefind&lt;/em&gt; are, there would be no problem.  The Azure scripts used to deploy those frameworks are far more customizable than Hugo, and there&amp;rsquo;s documentation to prove it.&lt;/p&gt;
&lt;p&gt;So, how might I approach something like this?  Well, &lt;a href=&#34;https://www.blogtrack.io/blog/powerful-blog-setup-with-hugo-and-npm/&#34;&gt;A Powerful Blog Setup with Hugo and NPM&lt;/a&gt; by Tom Hombergs looks like a promising place to start.  The process that Tom advocates leverages a neat little package called &lt;a href=&#34;https://www.npmjs.com/package/hugo-bin&#34;&gt;hugo-bin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If strategy #1 fails I&amp;rsquo;ll certainly give this #2 a try.  Even if #1 works, I might give this strategy a spin if/when I re-tool &lt;a href=&#34;https://static.grinnell.edu/dlad-blog&#34;&gt;this blog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;update-29-may-2023-npm-is-great&#34;&gt;Update 29-May-2023: NPM is GREAT!&lt;/h2&gt;
&lt;p&gt;Since my first option (above) failed very quickly, I moved on to this option and I honestly think I might transition every static site that I have to be wrapped inside NPM, it works wonderfully and is a really attractive solution for so many ills!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to document my experience with NPM wrapped around Hugo and will post that document here soon, probably as &lt;a href=&#34;https://blog.summittdweller.com/wrap-everything-in-npm/&#34;&gt;Wrap EVERYTHING in NPM!&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;3-transition-from-hugo-to-eleventy&#34;&gt;3. Transition from Hugo to Eleventy&lt;/h2&gt;
&lt;p&gt;Reasonable?  Yes.  A lot of work?  That&amp;rsquo;s relative.  The right thing to do?  Probably.&lt;/p&gt;
&lt;p&gt;So, it&amp;rsquo;s already been done, see &lt;a href=&#34;https://blog.summittdweller.com/this-blog-in-eleventy-ghost/&#34;&gt;This Blog in Eleventy + Ghost&lt;/a&gt; and &lt;a href=&#34;https://blog.summittdweller.com/glad-i-found-pagefind/&#34;&gt;Searching for a Search Solution&lt;/a&gt;.  That&amp;rsquo;s all I&amp;rsquo;m going to say about this option, a definite maybe.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s all folks&amp;hellip; for now.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Searching for a Search Solution</title>
        <link>https://blog.summittdweller.com/posts/2023/04/glad-i-found-pagefind/</link>
        <pubDate>Thu, 20 Apr 2023 17:02:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/04/glad-i-found-pagefind/</guid>
        <description>&lt;p&gt;A few months ago I sat in on a &lt;a href=&#34;https://cfe.dev/sessions/static-search-with-pagefind/&#34;&gt;CFE.dev webinar&lt;/a&gt; and I was really impressed with what I saw.  I made a note to come back and look closer at &lt;a href=&#34;https://pagefind.app/&#34;&gt;Pagefind&lt;/a&gt;, and my new blog &amp;ndash; this blog that you&amp;rsquo;re presumably reading right now &amp;ndash; really needed a search feature, so the &amp;ldquo;Search&amp;rdquo; box on this page (I hope it&amp;rsquo;s there) is the outcome.&lt;/p&gt;
&lt;h2 id=&#34;glad-i-found-pagefind&#34;&gt;Glad I Found Pagefind&lt;/h2&gt;
&lt;p&gt;So, I started looking closely at search options and considered things like &lt;a href=&#34;https://lunrjs.com/&#34;&gt;Lunr&lt;/a&gt;, which I&amp;rsquo;ve used before, and &lt;a href=&#34;https://solr.apache.org/&#34;&gt;Solr&lt;/a&gt;, which I both love and hate (because of its JAVA roots).  Pagefind was, of course, also on that short list and it quickly solidified its position at the top of the list when I found &lt;a href=&#34;https://mikefallows.com/posts/adding-search-to-eleventy-site/&#34;&gt;Adding search to an Eleventy site&lt;/a&gt; by &lt;a href=&#34;https://mikefallows.com/about/&#34;&gt;Mike&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mike doesn&amp;rsquo;t explain the setup in detail, but this comment really resonated with me so I decided to follow the same path:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Weirdly, I&amp;rsquo;ve found that I seem to read the posts on this site more than I write them. I say read, but I just mean referring to the stuff I&amp;rsquo;ve written because it has left my head.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Mike does provide a link to the reference he used, namely &lt;a href=&#34;https://rknight.me/using-pagefind-with-eleventy-for-search/&#34;&gt;Using PageFind with Eleventy for Search&lt;/a&gt; by &lt;a href=&#34;https://rknight.me/&#34;&gt;Robb Knight&lt;/a&gt;.  I found Robb&amp;rsquo;s guidance and experience to be VERY helpful.  Thank you, Robb!&lt;/p&gt;
&lt;h2 id=&#34;implementing-robbs-approach&#34;&gt;Implementing Robb&amp;rsquo;s Approach&lt;/h2&gt;
&lt;p&gt;I won&amp;rsquo;t bother duplicating what Robb explains quite well, but this wasn&amp;rsquo;t a 10-minute solution for me, probably because I&amp;rsquo;m really still learning &lt;em&gt;Javascript&lt;/em&gt; and &lt;em&gt;Eleventy&lt;/em&gt;, and also because I&amp;rsquo;m using a &lt;em&gt;Ghost&lt;/em&gt; back-end with packages managed via &lt;em&gt;Yarn&lt;/em&gt; rather than &lt;em&gt;npm&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So, in the few sections that follow I&amp;rsquo;ll try to briefly described what&amp;rsquo;s different about my approach versus Robb&amp;rsquo;s, along with what didn&amp;rsquo;t, and what ultimately did work.&lt;/p&gt;
&lt;h2 id=&#34;yarn-not-npm&#34;&gt;&lt;code&gt;yarn&lt;/code&gt;, Not &lt;code&gt;npm&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The first significant difference I encountered was the requirement that this blog project uses &lt;code&gt;yarn&lt;/code&gt;, not &lt;code&gt;npm&lt;/code&gt; for package management.  Eventually I found that I just needed to replace Robb&amp;rsquo;s &lt;code&gt;npm install pagefind&lt;/code&gt; command with a &lt;code&gt;yarn add pagefind&lt;/code&gt; equivalent.  I don&amp;rsquo;t really understand the details of that difference, but it worked.&lt;/p&gt;
&lt;h2 id=&#34;eleventyafter-never-fires&#34;&gt;eleventy.after Never Fires?&lt;/h2&gt;
&lt;p&gt;The biggest hurdle for me was trying to get this bit of Robb&amp;rsquo;s code to work.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const { execSync } = require(&#39;child_process&#39;)

module.exports = function(eleventyConfig) {
  eleventyConfig.on(&#39;eleventy.after&#39;, () =&amp;gt; {
    execSync(`npx pagefind --source _site --glob \&amp;quot;**/*.html\&amp;quot;`, { encoding: &#39;utf-8&#39; })
  })
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In my case the &lt;code&gt;--source&lt;/code&gt; parameter needed to be &lt;code&gt;dist&lt;/code&gt; since this blog is generated into a directory by that name, and my configuration object is simply &lt;code&gt;config&lt;/code&gt; rather than &lt;code&gt;eleventyConfig&lt;/code&gt;.  I made those simple changes and added my snippet to the &lt;code&gt;.eleventy.js&lt;/code&gt; file, but found that it never triggered.  I even replaced the &lt;code&gt;execSync&lt;/code&gt; function call with a simple &lt;code&gt;console.log&lt;/code&gt; statement and still got nothing.  And still to this day, I have no idea why that didn&amp;rsquo;t work.&lt;/p&gt;
&lt;p&gt;That snippet of code is supposed to be responsible for indexing all of the &lt;code&gt;.html&lt;/code&gt; files after &lt;em&gt;Eleventy&lt;/em&gt; has generated them.  Well, I found out that everything else was working properly, but the &lt;code&gt;_pagefind&lt;/code&gt; bundle generated by that indexing operation was just &amp;ldquo;missing&amp;rdquo;, since the index never was created.  That made me wonder what would happen if I &amp;ldquo;forced&amp;rdquo; the system to index my content in a different manner&amp;hellip;and that wonder ultimately worked.&lt;/p&gt;
&lt;h2 id=&#34;using-npx-pagefind-to-index-content&#34;&gt;Using &lt;code&gt;npx pagefind...&lt;/code&gt; to Index Content&lt;/h2&gt;
&lt;p&gt;Having studied some of the &lt;a href=&#34;https://pagefind.app/docs/&#34;&gt;Pagefind documentation&lt;/a&gt; I wondered what adding some post-processing to my build workflow might do, something like &lt;code&gt;npx pagefind --source dist&lt;/code&gt;?  That ultimately worked, but not in that original form.&lt;/p&gt;
&lt;p&gt;I found that when I ran &lt;code&gt;yarn start&lt;/code&gt; to locally rebuild the site, there was no generated &lt;code&gt;./dist/_pagefind&lt;/code&gt; bundle present, so I got no &amp;ldquo;Search&amp;rdquo; user interface elements, but there was an empty &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; where that belonged.  So, with my localhost instance still running I opened a new terminal and ran &lt;code&gt;npx pagefind --source dist&lt;/code&gt; in the project directory. Voila! The &lt;code&gt;./dist/_pagefind&lt;/code&gt; bundle magically appeared and the &amp;ldquo;Search&amp;rdquo; control was instantly visible in my localhost window!  It was working, and it was beautiful.&lt;/p&gt;
&lt;h2 id=&#34;added-a-pagefind-script-didnt-work&#34;&gt;Added a &lt;code&gt;pagefind&lt;/code&gt; Script&amp;hellip; Didn&amp;rsquo;t Work&lt;/h2&gt;
&lt;p&gt;Ok, with the above breakthrough in-hand I made this addition to the &lt;code&gt;scripts:&lt;/code&gt; key in my &lt;code&gt;package.json&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;quot;pagefind&amp;quot;: &amp;quot;npx pagefind --source dist&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I added the following to the end of my &lt;code&gt;steps:&lt;/code&gt; key in &lt;code&gt;.github/workflows/build-and-deploy.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  - run: yarn pagefind
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This worked to some extent, but wasn&amp;rsquo;t reliable and absolutely didn&amp;rsquo;t work when deployed to my &lt;em&gt;DigitalOcean&lt;/em&gt; app.  The inner-workings of &lt;code&gt;yarn&lt;/code&gt; and build caching in these environments is still a DEEP mystery to me!&lt;/p&gt;
&lt;h2 id=&#34;extending-my-encrypt-script&#34;&gt;Extending My &lt;code&gt;encrypt&lt;/code&gt; Script&lt;/h2&gt;
&lt;p&gt;What does work, both locally and on &lt;em&gt;DigitalOcean&lt;/em&gt;, is essentially an &amp;ldquo;extension&amp;rdquo; of my old &lt;code&gt;encrypt&lt;/code&gt; script.  My old build workflow included these two elements of &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;build-and-deploy.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;quot;encrypt&amp;quot;: &amp;quot;staticrypt ./dist/rebuild.html &#39;***hidden***&#39; --short -o ./dist/rebuild.html -f ./src/auth/login.html -t &#39;Summitt Dweller Blog - Rebuild&#39; -i &#39;Please enter the passphrase.&amp;lt;br/&amp;gt;Hint: gh0st&#39; --label-error &#39;Sorry, Ella says no. Try again.&#39;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;hellip;and&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  - run: yarn encrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I took note of the relative path spec for &lt;code&gt;./dist/rebuild.html&lt;/code&gt; in the &lt;code&gt;encrypt&lt;/code&gt; command, reasoned that I should run &lt;code&gt;pagefind&lt;/code&gt; in a similar fashion &amp;ndash; but just before encryption &amp;ndash; and came up with this change in &lt;code&gt;package.json&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;quot;encrypt&amp;quot;: &amp;quot;npx pagefind --source ./dist &amp;amp;&amp;amp; staticrypt ./dist/rebuild.html &#39;***hidden***&#39; --short -o ./dist/rebuild.html -f ./src/auth/login.html -t &#39;Summitt Dweller Blog - Rebuild&#39; -i &#39;Please enter the passphrase.&amp;lt;br/&amp;gt;Hint: gh0st&#39; --label-error &#39;Sorry, Ella says no. Try again.&#39;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;It works!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I&amp;rsquo;m running locally my &lt;code&gt;build-and-deploy.yml&lt;/code&gt; doesn&amp;rsquo;t apply so in that case I typically will do this IF I want my search index (and encryption) updated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yarn start
yarn encrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I rebuild in production on &lt;em&gt;DigitalOcean&lt;/em&gt; my &lt;code&gt;build-and-deploy.yml&lt;/code&gt; configuration IS run so including &lt;code&gt;npx pagefind...&lt;/code&gt; as part of the &lt;code&gt;yarn encrypt&lt;/code&gt; step does the trick.&lt;/p&gt;
&lt;h2 id=&#34;time-to-test&#34;&gt;Time to Test&amp;hellip;&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m going to save this post now and rebuild this blog on &lt;em&gt;DigitalOcean&lt;/em&gt;, where with any luck, a search for a term like &amp;ldquo;DEEP&amp;rdquo; should return this post, and maybe one or two others.  Drum roll please&amp;hellip;  &lt;strong&gt;Huzzah!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;man-do-i-feel-stupid&#34;&gt;Man, Do I Feel Stupid&lt;/h2&gt;
&lt;p&gt;Previously I mentioned that my additon of a &lt;code&gt;package.json&lt;/code&gt; script named &lt;code&gt;pagefind&lt;/code&gt; didn&amp;rsquo;t work, and that my &lt;em&gt;DigitalOcean&lt;/em&gt; builds kept trying to do &lt;code&gt;yarn encrypt&lt;/code&gt; after &lt;code&gt;yarn build&lt;/code&gt;.  Well, turns out that&amp;rsquo;s because &lt;code&gt;build-and-deploy.yml&lt;/code&gt;, where I had inserted the &lt;code&gt;yarn pagefind&lt;/code&gt; step IS NOT in control of building my &lt;em&gt;DigitalOcean&lt;/em&gt; app.  In fact, it&amp;rsquo;s a &lt;code&gt;.github&lt;/code&gt; workflow so I&amp;rsquo;m really not sure what role that file plays, if any?&lt;/p&gt;
&lt;p&gt;I went looking in my &lt;em&gt;DigitalOcean&lt;/em&gt; app configuration settings for &lt;code&gt;yarn encrypt&lt;/code&gt; and found it, in the app&amp;rsquo;s &amp;ldquo;App Settings&amp;rdquo; subsection titled &amp;ldquo;App Spec&amp;rdquo;.  When I view that &amp;ldquo;App Spec&amp;rdquo; I see this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alerts:
- rule: DEPLOYMENT_FAILED
- rule: DOMAIN_FAILED
domains:
- domain: blog.summittdweller.com
  type: PRIMARY
  zone: summittdweller.com
envs:
- key: TZ
  scope: RUN_AND_BUILD_TIME
  value: America/Chicago
name: blog-summittdweller-11ty-ghost
region: nyc
static_sites:
- build_command: |-
    yarn build
    yarn encrypt
  environment_slug: node-js
  github:
    branch: main
    deploy_on_push: true
    repo: SummittDweller/blog-eleventy-ghost
  name: blog-eleventy-ghost
  output_dir: dist
  routes:
  - path: /
  source_dir: /
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the two &lt;code&gt;build_command:&lt;/code&gt; elements.  Let&amp;rsquo;s change those two steps to three, like so:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- build_command: |-
    yarn build
    yarn pagefind
    yarn encrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that I captured the &amp;ldquo;App Spec&amp;rdquo; in a file named &lt;code&gt;blog-summittdweller-11ty-ghost.yaml&lt;/code&gt; and I&amp;rsquo;ve saved that file in the project directory (where I hope it will do no harm).  &lt;strong&gt;Attention: After making the aforementioned addition I almost forgot to upload this file back to &lt;em&gt;DigitalOcean&lt;/em&gt; to replace our existing App Spec!&lt;/strong&gt;  Don&amp;rsquo;t be stupid like me!&lt;/p&gt;
&lt;p&gt;Next, I needed a corresponding change in &lt;code&gt;package.json&lt;/code&gt;, specifically these two lines (like I had them before, duh):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;quot;pagefind&amp;quot;: &amp;quot;npx pagefind --source ./dist&amp;quot;,
  &amp;quot;encrypt&amp;quot;: &amp;quot;staticrypt ./dist/rebuild.html &#39;***hidden***&#39; --short -o ./dist/rebuild.html -f ./src/auth/login.html -t &#39;Summitt Dweller Blog - Rebuild&#39; -i &#39;Please enter the passphrase.&amp;lt;br/&amp;gt;Hint: gh0st&#39; --label-error &#39;Sorry, Ella says no. Try again.&#39;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;push-to-rebuild&#34;&gt;Push to Rebuild&lt;/h2&gt;
&lt;p&gt;Ok, having modified &lt;strong&gt;and UPLOADED&lt;/strong&gt;&lt;code&gt;blog-summittdweller-11ty-ghost.yaml&lt;/code&gt;, and having modified &lt;code&gt;package.json&lt;/code&gt;, it came time to commit and push all my changes to see what happens.  Another drum roll, please&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Engaging `s3cmd` to Download and Resize Images from DO Spaces</title>
        <link>https://blog.summittdweller.com/posts/2023/04/engaging-s3cmd-to-download-and-resize-images-from-do-spaces/</link>
        <pubDate>Sun, 16 Apr 2023 14:57:16 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/04/engaging-s3cmd-to-download-and-resize-images-from-do-spaces/</guid>
        <description>&lt;p&gt;Earlier in this blog there&amp;rsquo;s a &lt;code&gt;micropost&lt;/code&gt; that lays out the problem at hand.  In a nutshell, most of the photos I saved in &lt;em&gt;DigitalOcean Spaces&lt;/em&gt; are too big to be effective in this blog.  They suck up lots of time and bandwidth every time this blog gets rebuilt, and then they are rendered at a fraction of their original size. This is exceptionall wasteful and unnecessary.&lt;/p&gt;
&lt;p&gt;So, my task this morning is to install, configure, and engage the &lt;a href=&#34;https://s3tools.org/s3cmd&#34;&gt;s3cmd&lt;/a&gt; tools to help get this done.  There&amp;rsquo;s &lt;em&gt;DigitalOcean&lt;/em&gt;-specific guidance provided in &lt;a href=&#34;https://docs.digitalocean.com/products/spaces/reference/s3cmd/&#34;&gt;Setting Up s3cmd 2.x with DigitalOcean Spaces&lt;/a&gt; so that&amp;rsquo;s where I will begin.  Here goes&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;installing-s3cmd&#34;&gt;Installing &lt;code&gt;s3cmd&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;This looks to be very simple and straightforward, &lt;code&gt;brew install s3cmd&lt;/code&gt; should do the trick. In a substantially abridged form, that looked like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/blog-eleventy-ghost ‹main›
╰─$ brew install s3cmd
Running `brew update --auto-update`...
==&amp;gt; Auto-updated Homebrew!
==&amp;gt; Updated Homebrew from 4.0.10 (931327df1) to 4.0.13 (ac0663ae5).
Updated 4 taps (dart-lang/dart, sass/sass, homebrew/core and homebrew/cask).
...
You have 55 outdated formulae and 1 outdated cask installed.
...
==&amp;gt; Installing s3cmd
==&amp;gt; Pouring s3cmd--2.3.0.ventura.bottle.1.tar.gz
🍺  /usr/local/Cellar/s3cmd/2.3.0: 837 files, 11.4MB
==&amp;gt; Running `brew cleanup s3cmd`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That took about 10 minutes, but should be worth it.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Next, to begin configuration I need to fetch the access key:value pair for &lt;code&gt;images-summittdweller&lt;/code&gt; that I created 4 years ago. I have the credentials necessary to view that information at &lt;a href=&#34;https://cloud.digitalocean.com/account/api/spaces&#34;&gt;https://cloud.digitalocean.com/account/api/spaces&lt;/a&gt; so that&amp;rsquo;s what I&amp;rsquo;ve done.&lt;/p&gt;
&lt;p&gt;Whoa, that didn&amp;rsquo;t work! I tried to use old access keys but apparently they are in the wrong format?  So, I created a new key named &lt;code&gt;key-for-s3cmd&lt;/code&gt; and applied that (see below) and it works.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/blog-eleventy-ghost ‹main›
╰─$ s3cmd --configure

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key [images-summittdweller]: ***This is a secret***
Secret Key [4YPWYNXZZXFDIR6CRPHG]: ***An even bigger secret***
Default Region [US]:

Use &amp;quot;s3.amazonaws.com&amp;quot; for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [nyc3.digitaloceanspaces.com]:

Use &amp;quot;%(bucket)s.s3.amazonaws.com&amp;quot; to the target Amazon S3. &amp;quot;%(bucket)s&amp;quot; and &amp;quot;%(location)s&amp;quot; vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.nyc3.digitaloceanspaces.com]:

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password [SummittDweller]:
Path to GPG program [/usr/local/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]:

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can&#39;t connect to S3 directly
HTTP Proxy server name:

New settings:
  Access Key: ***This is a secret***
  Secret Key: ***An even bigger secret***
  Default Region: US
  S3 Endpoint: nyc3.digitaloceanspaces.com
  DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.nyc3.digitaloceanspaces.com
  Encryption password: SummittDweller
  Path to GPG program: /usr/local/bin/gpg
  Use HTTPS protocol: True
  HTTP Proxy server name:
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)

Save settings? [y/N] y
Configuration saved to &#39;/Users/mark/.s3cfg&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;using-s3cwd&#34;&gt;Using &lt;code&gt;s3cwd&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The &amp;ldquo;More Information&amp;rdquo; section at the end of the document I used above says that&amp;hellip; &amp;ldquo;You can use our &lt;a href=&#34;https://docs.digitalocean.com/products/spaces/reference/s3cmd-usage/&#34;&gt;quick reference on s3cmd usage&lt;/a&gt; to get started.&amp;rdquo;  Ok, let&amp;rsquo;s have a look&amp;hellip; very nice!  I&amp;rsquo;m moving immediately to the &lt;a href=&#34;https://docs.digitalocean.com/products/spaces/reference/s3cmd-usage/#save-files-to-your-local-computer&#34;&gt;Save files to your local computer&lt;/a&gt; bits.&lt;/p&gt;
&lt;h3 id=&#34;fetching-files-of-the-august-2020-derecho&#34;&gt;Fetching Files of the August 2020 Derecho&lt;/h3&gt;
&lt;p&gt;The photos I saved of damage from our August 2020 Derecho, in a &lt;code&gt;images-summittdweller/2020-Aug-10-Derecho&lt;/code&gt; bucket, are rather depressing and certainly don&amp;rsquo;t need to be super high-res for the web, so let&amp;rsquo;s retrieve those and practice this workflow there first.&lt;/p&gt;
&lt;p&gt;The quick reference linked above says to use a command of the form &lt;code&gt;s3cmd get s3://spacename/path/ --recursive&lt;/code&gt; to get all files from a particular folder.  In my case, that&amp;rsquo;s&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/Downloads/2020-derecho-photos
╰─$ s3cmd get s3://images-summittdweller/2020-Aug-10-Derecho/ --recursive

WARNING: Empty object name on S3 found, ignoring.
download: &#39;s3://images-summittdweller/2020-Aug-10-Derecho/Derecho - 1.png&#39; -&amp;gt; &#39;./Derecho - 1.png&#39;  [1 of 82]
 23486944 of 23486944   100% in    1s    21.04 MB/s  done
download: &#39;s3://images-summittdweller/2020-Aug-10-Derecho/Derecho - 10.png&#39; -&amp;gt; &#39;./Derecho - 10.png&#39;  [2 of 82]
 20861132 of 20861132   100% in    0s    23.45 MB/s  done
...
download: &#39;s3://images-summittdweller/2020-Aug-10-Derecho/Photo-2020-08-20-19-51.jpeg&#39; -&amp;gt; &#39;./Photo-2020-08-20-19-51.jpeg&#39;  [81 of 82]
 6277783 of 6277783   100% in    0s    16.86 MB/s  done
ERROR: Creation of file &#39;./for-the-web/&#39; failed (Reason: Is a directory)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ok, 81 images downloaded.  That was sooooooooo much better than the 1000-or-so clicks it would have taken to do that manually!  The only gottcha&amp;hellip; that last error message about not downloading the &lt;code&gt;for-the-web&lt;/code&gt; directory, which is currently empty anyway.  Before I go farther, I&amp;rsquo;m going to open that &lt;em&gt;DigitalOcean Spaces&lt;/em&gt; bucket and change the errant directory name to &lt;code&gt;web-ready&lt;/code&gt;; that&amp;rsquo;s where my &amp;ldquo;thumbnail&amp;rdquo; copies of all these images will be uploaded shortly.&lt;/p&gt;
&lt;h2 id=&#34;next-step-resize-those-images&#34;&gt;Next Step, Resize Those Images&lt;/h2&gt;
&lt;p&gt;I found some concise and timely advice in the first web post I Googled: &lt;a href=&#34;https://www.idownloadblog.com/2013/10/19/how-to-resize-multiple-images-mac/&#34;&gt;How to quickly resize multiple images at once on Mac&lt;/a&gt;. It uses exactly the tool I had in mind, the Mac-native &lt;code&gt;Preview&lt;/code&gt; app.&lt;/p&gt;
&lt;p&gt;Before begining that process I wanted to see just how much space my 81 images occupy, like so:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/Downloads/2020-derecho-photos
╰─$ du -sh
2.7G	.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.7G isn&amp;rsquo;t all that much, but it&amp;rsquo;s still much bigger than it needs to be.  I&amp;rsquo;m firing up &lt;code&gt;Preview&lt;/code&gt; now to see if I can reduce all images proportionally to a maximum width of 800 pixels.  Be back in a couple of minutes&amp;hellip;&lt;/p&gt;
&lt;p&gt;Drum roll please&amp;hellip;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/Downloads/2020-derecho-photos
╰─$ du -sh
163M	.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Not bad at all.  Only took a couple of minutes and it reduced the total image size from 2.7G down to 163M. Not too shabby.&lt;/p&gt;
&lt;h2 id=&#34;uploads-complete-next&#34;&gt;Uploads Complete&amp;hellip; Next?&lt;/h2&gt;
&lt;p&gt;In order to upload the resized images back to &lt;em&gt;DigitalOcean Spaces&lt;/em&gt;, I simply used the nice graphical interface available to me at &lt;a href=&#34;https://cloud.digitalocean.com/spaces/images-summittdweller?path=2020-Aug-10-Derecho%2Fweb-ready&#34;&gt;https://cloud.digitalocean.com/spaces/images-summittdweller?path=2020-Aug-10-Derecho%2Fweb-ready&lt;/a&gt; and the &lt;code&gt;Upload&lt;/code&gt; option there.  It worked nicely, but for whatever reason two of the images failed to upload: &lt;code&gt;Derecho - 38.png&lt;/code&gt; and &lt;code&gt;Derecho - 39.png&lt;/code&gt;.  After a little review, and retries, I could not figure out why these wouldn&amp;rsquo;t upload but that&amp;rsquo;s OK because they are both largely redundant with &lt;code&gt;Derecho - 40.png&lt;/code&gt;, so we&amp;rsquo;ll just stick with that one.&lt;/p&gt;
&lt;p&gt;So, in the original folder image &lt;code&gt;Derecho - 1.png&lt;/code&gt; has an endpoint of &lt;code&gt;https://images.summittdweller.com/2020-Aug-10-Derecho/Derecho%20-%201.png&lt;/code&gt;.  Makes sense.  In my new &lt;code&gt;web-ready&lt;/code&gt; directory the reduced-size copy of the same image naturally has an endpoint of &lt;code&gt;https://images.summittdweller.com/2020-Aug-10-Derecho/web-ready/Derecho%20-%201.png&lt;/code&gt;.  Fortunately, that&amp;rsquo;s a &amp;ldquo;match&amp;rdquo; except for the addition of the &lt;code&gt;web-ready&lt;/code&gt; subdirectory in the path.  Exactly what I hoped would happen.&lt;/p&gt;
&lt;p&gt;This means the next step is to&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;alter-content-to-include-the-web-ready-path&#34;&gt;Alter Content to Include the &lt;code&gt;web-ready&lt;/code&gt; Path&lt;/h2&gt;
&lt;p&gt;I used the admin search (magnifying glass) feature of the &lt;em&gt;Ghost&lt;/em&gt; instance behind &lt;a href=&#34;__GHOST_URL__/ghost/#/dashboard&#34;&gt;this blog&lt;/a&gt; to find all references to &lt;code&gt;https://images.summittdweller.com/2020-Aug-10-Derecho&lt;/code&gt; and it found: NOTHING.  Yikes.  Turns out all of the references were in one post, and it was draft.  So I edited the draft &amp;ldquo;manually&amp;rdquo; and published it.  Now let&amp;rsquo;s try that search again&amp;hellip; NOPE.  So, the text inside those &lt;code&gt;figure&lt;/code&gt; tags evidently isn&amp;rsquo;t discoverable.  ☹️  Just as well since I think a different approach is needed.&lt;/p&gt;
&lt;h2 id=&#34;not-web-ready-originals&#34;&gt;Not &lt;code&gt;web-ready&lt;/code&gt;, &lt;code&gt;originals&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Since editing the content (posts) to pick up the new &lt;code&gt;web-ready&lt;/code&gt; directory is a royal pain, what I&amp;rsquo;m going to do now is create a new &lt;code&gt;originals&lt;/code&gt; sub-directory in each bucket, download all the images, resize them locally as I did above, but replace the existing high-resolution images with the smaller copies AFTER I make a backup the original images in a new &lt;code&gt;originals&lt;/code&gt; directory.  That way I don&amp;rsquo;t have to edit any of my posts in order to get the smaller web-ready images, but I won&amp;rsquo;t lose the originals either.  &lt;strong&gt;Beautimous&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;belay-that-order&#34;&gt;Belay That Order!&lt;/h2&gt;
&lt;p&gt;While I&amp;rsquo;m confident this approach (above) will work, it may not be necessary.  I looked, for example, in &lt;code&gt;images-summittdweller/Norway-Photos-2019/Bergen - Hordaland, June 19, 2019&lt;/code&gt; expecting to find some large images, but there were none over 800px in width.  In fact, I believe they are all under 640px wide, so nothing to do there, and that&amp;rsquo;s a good thing.&lt;/p&gt;
&lt;h2 id=&#34;thats-all-folks&#34;&gt;That&amp;rsquo;s All Folks&lt;/h2&gt;
&lt;p&gt;A detailed search of &lt;code&gt;images-summittdweller&lt;/code&gt; didn&amp;rsquo;t turn up any more enromous images that might get pushed to the web, so&amp;hellip; &amp;ldquo;That&amp;rsquo;s All Folks&amp;rdquo;, for now at least.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Debugging This Blog with VSCode</title>
        <link>https://blog.summittdweller.com/posts/2023/04/debugging-this-blog-with-_vscode_/</link>
        <pubDate>Tue, 04 Apr 2023 16:31:07 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/04/debugging-this-blog-with-_vscode_/</guid>
        <description>&lt;p&gt;I&amp;rsquo;m making some significant changes to the code behind this blog today.  Specifically, I&amp;rsquo;m going to move my micropost &amp;ldquo;front matter&amp;rdquo; from the &lt;code&gt;post.excerpt&lt;/code&gt; or &lt;code&gt;post.custom_excerpt&lt;/code&gt; field to the &amp;ldquo;body&amp;rdquo; of the post where it might look like this example (taken from this very post):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-+-+-+
location: Toledo, IA
price: $50.00
note: This is just some sample &amp;quot;front matter&amp;quot;. My parser removed the &amp;quot;split&amp;quot; characters from the delimiter you see here.
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;i-need-vscode-debugging&#34;&gt;I Need VSCode Debugging!&lt;/h1&gt;
&lt;p&gt;To do this effectively I really need live dev debugging in &lt;em&gt;VSCode&lt;/em&gt;, but how can I do that?&lt;/p&gt;
&lt;p&gt;Well, I turned first to &lt;a href=&#34;https://griffadev.medium.com/tips-for-debugging-in-11ty-aca887d2c66e&#34;&gt;Tips for debugging in 11ty&lt;/a&gt; by &lt;a href=&#34;https://griffadev.medium.com&#34;&gt;George Griffiths&lt;/a&gt; because it looked very promising.  In the second half of that post under the heading of &lt;strong&gt;Debugging with VS Code&lt;/strong&gt; there are instructions for creating a &lt;code&gt;.vscode/lanuch.json&lt;/code&gt; to do this, and I did.  But how does one &amp;ldquo;attach&amp;rdquo; their debugger to the script I use to launch/test this blog locally?  That command by the way is &lt;code&gt;yarn start&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;my-debugger-configuration&#34;&gt;My Debugger Configuration&lt;/h2&gt;
&lt;p&gt;So, I found that the stock &lt;code&gt;launch.json&lt;/code&gt; prescribed by George didn&amp;rsquo;t quite work in my situation, I had to add a configuration AND with a small change, and turn off &lt;code&gt;Auto Attach&lt;/code&gt; debugging.&lt;/p&gt;
&lt;p&gt;I clicked on the debugger icon in the left-hand pane of my &lt;em&gt;VSCode&lt;/em&gt; window and there I had the option to add a configuration.  I clicked that and was presented with several choices.  After incorrectly trying a few options I settled on one labeled &lt;code&gt;Run Script&amp;amp;colon; start&lt;/code&gt; and it almost worked.&lt;/p&gt;
&lt;p&gt;The configuration added to my &lt;code&gt;launch.json&lt;/code&gt; file included &lt;code&gt;&amp;quot;command&amp;quot;&amp;amp;colon; &amp;quot;yarn run start&amp;quot;&lt;/code&gt;, but that&amp;rsquo;s not quite right for me.  I simply use &lt;code&gt;yarn start&lt;/code&gt; to launch my local dev instance of this blog, so I made that change to &lt;code&gt;lanuch.json&lt;/code&gt; so that file now reads:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &amp;quot;name&amp;quot;: &amp;quot;11ty&amp;quot;,
  &amp;quot;type&amp;quot;: &amp;quot;node&amp;quot;,
  &amp;quot;request&amp;quot;: &amp;quot;launch&amp;quot;,
  &amp;quot;program&amp;quot;: &amp;quot;${workspaceRoot}/node_modules/.bin/eleventy&amp;quot;,
  &amp;quot;stopOnEntry&amp;quot;: false,
  &amp;quot;args&amp;quot;: [],
  &amp;quot;cwd&amp;quot;: &amp;quot;${workspaceRoot}&amp;quot;,
  &amp;quot;console&amp;quot;: &amp;quot;internalConsole&amp;quot;,
  &amp;quot;configurations&amp;quot;: [
    {
      &amp;quot;type&amp;quot;: &amp;quot;node-terminal&amp;quot;,
      &amp;quot;name&amp;quot;: &amp;quot;Run Script: start&amp;quot;,
      &amp;quot;request&amp;quot;: &amp;quot;launch&amp;quot;,
      &amp;quot;command&amp;quot;: &amp;quot;yarn start&amp;quot;,
      &amp;quot;cwd&amp;quot;: &amp;quot;${workspaceFolder}&amp;quot;
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;it-works&#34;&gt;It Works!&lt;/h1&gt;
&lt;p&gt;Now when I open the debugger and click the green start arrow beside &lt;code&gt;Run Script: start&lt;/code&gt; I can see &lt;code&gt;.eleventy.js&lt;/code&gt; begin running and it stops at any breakpoints I have set.  It even works when stepping into my &lt;code&gt;custom.js&lt;/code&gt; script, all the while showing me the call stack and variables that are in-scope at the time.  Yay!&lt;/p&gt;
&lt;p&gt;Thank You &lt;a href=&#34;https://griffadev.medium.com&#34;&gt;George&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&#34;wait-theres-more&#34;&gt;Wait, There&amp;rsquo;s More&lt;/h2&gt;
&lt;p&gt;Even better news is that I can still run &lt;code&gt;yarn start&lt;/code&gt; locally without involving the debugger.  Nice.&lt;/p&gt;
&lt;p&gt;-/-/-/&lt;/p&gt;
&lt;p&gt;location: Toledo, IA&lt;/p&gt;
&lt;p&gt;price: $50.00&lt;/p&gt;
&lt;p&gt;note: This is just some sample &amp;ldquo;front matter&amp;rdquo;.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Finale Workflow Documentation</title>
        <link>https://blog.summittdweller.com/posts/2023/02/finale-workflow-documentation/</link>
        <pubDate>Wed, 08 Feb 2023 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/02/finale-workflow-documentation/</guid>
        <description>&lt;p&gt;Mackenzie, my daughter, and I created this post documenting my wife&amp;rsquo;s &lt;a href=&#34;https://www.finalemusic.com/&#34;&gt;Finale&lt;/a&gt; workflow for scanning and editing music on her Mac.  We did this for my wife to &lt;strike&gt;celebrate her birthday&lt;/strike&gt; preserve her sanity.  Well, it was worth a shot.  The birthday idea seemed more romantic, but mental health comes first.&lt;/p&gt;
&lt;p&gt;The document was created using a process we recently built and documented in &lt;a href=&#34;https://static.grinnell.edu/dlad-blog/posts/138-creating-better-documentation/&#34;&gt;Creating Better Documentation&lt;/a&gt;.  In this instance of the process we tried to annotate in yellow screen capture elements that need attention, and used red annotation to indicate things that require input or action of some kind.  In some of the later images we failed and things that should be red were left highlighted in yellow.  Sorry.&lt;/p&gt;
&lt;h1 id=&#34;begin-by-scanning&#34;&gt;Begin by Scanning&lt;/h1&gt;
&lt;p&gt;The first step involved launching the &lt;em&gt;Canon MF Scan Utility&lt;/em&gt; as you see below.  This is the software she uses to scan music pages on the multi-function scanner attached to her Mac.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0010.png&#34; alt=&#34;Launch the Canon MF Scan Utility&#34;&gt;
  &lt;figcaption&gt;Launch the Canon MF Scan Utility&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;We verified that the correct scanner is selected, loaded the score into the scanner*, and clicked &lt;code&gt;Custom&lt;/code&gt; to begin the scan.  Then, wait for the scanner to warm up, if necessary.&lt;/p&gt;
&lt;p&gt;*Note that the sheet music can be placed on the scanner glass one-sheet-at-a-time, or if the pages are 8.5x11, one-sided, and in good condition, they may be loaded in the document feeder to scan continuously.  In this particular case we were able to use the document feeder.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0015.png&#34; alt=&#34;Select Custom scanning&#34;&gt;
  &lt;figcaption&gt;Select Custom scanning&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0020.png&#34; alt=&#34;Waiting for the scanner to warm up&#34;&gt;
  &lt;figcaption&gt;Waiting for the scanner to warm up&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Once the scanner is ready the mechanical process of scanning should begin.  When scanning one-page-at-a-time some user intervention will be required.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0028.png&#34; alt=&#34;Scanning in progress&#34;&gt;
  &lt;figcaption&gt;Scanning in progress&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;When the scan is complete a &lt;code&gt;Save Settings&lt;/code&gt; window should pop-up.  We reviewed the information and made appropriate selections where noted below, then clicked &lt;code&gt;OK&lt;/code&gt; to continue.  &lt;strong&gt;Be sure to set and take note of the &lt;code&gt;File Name:&lt;/code&gt; and &lt;code&gt;Save in:&lt;/code&gt; fields!  Also, it&amp;rsquo;s probably wise to ensure that the &lt;code&gt;Data Format:&lt;/code&gt; is &amp;ldquo;TIFF&amp;rdquo; and the &lt;code&gt;Save to a subfolder with current date&lt;/code&gt; control is checked.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0046.png&#34; alt=&#34;Save scan settings&#34;&gt;
  &lt;figcaption&gt;Save scan settings&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h1 id=&#34;smartscore-64-pro&#34;&gt;SmartScore 64 Pro&lt;/h1&gt;
&lt;p&gt;A &lt;em&gt;SmartScore 64 Pro&lt;/em&gt; window will automatically open, &lt;strong&gt;but don&amp;rsquo;t be confused, we don&amp;rsquo;t want to run this application yet!  Click the &lt;code&gt;Cancel&lt;/code&gt; button to close &lt;em&gt;SmartScore 64 Pro&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0064.png&#34; alt=&#34;SmartScore Pro launches automatically&#34;&gt;
  &lt;figcaption&gt;SmartScore Pro launches automatically but needs to be closed&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Once &lt;em&gt;SmartScore 64 Pro&lt;/em&gt; is closed, we need to open it properly by clicking its icon in the dock.  &amp;#x1f626;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0078.png&#34; alt=&#34;Properly launching SmartScore&#34;&gt;
  &lt;figcaption&gt;Properly launching SmartScore&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Now &lt;em&gt;SmartScore&lt;/em&gt; is open to the &lt;code&gt;Task Window&lt;/code&gt; where we selected &lt;code&gt;Recognition&lt;/code&gt; to convert the scanned images to music XML.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0089.png&#34; alt=&#34;Starting the SmartScore recognition process&#34;&gt;
  &lt;figcaption&gt;Starting the SmartScore recognition process&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Next, we add the files of our scanned pages to the recognition processing list.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0094.png&#34; alt=&#34;Add scans to SmartScore recognition&#34;&gt;
  &lt;figcaption&gt;Add scans to SmartScore recognition&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;In the file dialog we navigate to the scanned page TIFFs and select them all.  The order of files in the selection is NOT critical.  With all files selected click &lt;code&gt;Open&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0105.png&#34; alt=&#34;Navigate to the scan files and select them&#34;&gt;
  &lt;figcaption&gt;Navigate to the scan files and select them&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;The next &lt;code&gt;Begin Recognition&lt;/code&gt; screen offers controls to change the file order if necessary.  Once the files are in the proper order click &lt;code&gt;Begin Recognition&lt;/code&gt; button to proceed.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0134.png&#34; alt=&#34;Order the TIFFs and begin recognition&#34;&gt;
  &lt;figcaption&gt;Order the TIFFs and begin recognition&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Be patient, the recognition process may take a few minutes.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0151.png&#34; alt=&#34;Recognition in progress&#34;&gt;
  &lt;figcaption&gt;Recognition in progress&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;When the recognition is complete a &lt;code&gt;System Report&lt;/code&gt; appeared prompting us to &lt;code&gt;Open SmartScore file&lt;/code&gt;.  We did.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0155.png&#34; alt=&#34;SmartScore system report&#34;&gt;
  &lt;figcaption&gt;SmartScore system report&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Next, the &lt;code&gt;Unify Score&lt;/code&gt; window popped up and we verified the default selections shown below before clicking &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0157.png&#34; alt=&#34;Unify score pop-up&#34;&gt;
  &lt;figcaption&gt;Unify score pop-up&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;When prompted to save the score be sure to select &lt;code&gt;Music XML (*.xml)&lt;/code&gt; and take note of where the file will be saved.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0168.png&#34; alt=&#34;Saving as XML&#34;&gt;
  &lt;figcaption&gt;Saving as XML&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;You may be prompted to save each scan/file individually.  Once the file save is confirmed you can close &lt;em&gt;SmartScore 64 Pro&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0189.png&#34; alt=&#34;Confirm save and close SmartScore&#34;&gt;
  &lt;figcaption&gt;Confirm save and close SmartScore&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h1 id=&#34;finale&#34;&gt;Finale&lt;/h1&gt;
&lt;p&gt;Next, open &lt;em&gt;Finale&lt;/em&gt; from the dock as shown below.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0199.png&#34; alt=&#34;Open Finale&#34;&gt;
  &lt;figcaption&gt;Open Finale&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;After a minute or more the &lt;em&gt;Finale&lt;/em&gt; &lt;code&gt;Launch Window&lt;/code&gt; should appear, and we selected &lt;code&gt;IMPORT MUSICXML&lt;/code&gt; as shown below.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0209.png&#34; alt=&#34;Selecting IMPORT MUSICXML&#34;&gt;
  &lt;figcaption&gt;Selecting IMPORT MUSICXML&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;We navigated to the XML file that was saved in &lt;em&gt;SmartScore&lt;/em&gt; and clicked &lt;code&gt;Open&lt;/code&gt; to load it in &lt;em&gt;Finale&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0224.png&#34; alt=&#34;Opening the saved MusicXML file&#34;&gt;
  &lt;figcaption&gt;Opening the saved MusicXML file&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it, the scanned score is now loaded in &lt;em&gt;Finale&lt;/em&gt; where it is ready to be edited!  It&amp;rsquo;s a good idea to click &lt;code&gt;Save As...&lt;/code&gt; routinely to save your changes as you proceed.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://sddocs.blob.core.windows.net/documentation/Finale-Workflow-Documentation/0237.png&#34; alt=&#34;Save your Finale work&#34;&gt;
  &lt;figcaption&gt;Save your Finale work&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Gating My Content</title>
        <link>https://blog.summittdweller.com/posts/2023/01/gating-content/</link>
        <pubDate>Mon, 30 Jan 2023 14:45:01 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/01/gating-content/</guid>
        <description>&lt;h1 id=&#34;gating-content-in-jamstack-sites&#34;&gt;Gating Content in JAMstack Sites&lt;/h1&gt;
&lt;p&gt;This section&amp;rsquo;s title was borrowed from a &lt;a href=&#34;https://www.stackbit.com/&#34;&gt;Stackbit&lt;/a&gt; article with the same title, &lt;a href=&#34;https://www.stackbit.com/blog/gating-content-jamstack&#34;&gt;Gating Content in JAMstack Sites&lt;/a&gt;.  Working through that article to password protect some of the content at &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;https://Wieting.TamaToledo.com&lt;/a&gt; is my tech pursit today.&lt;/p&gt;
&lt;h1 id=&#34;nope-not-on-netlify&#34;&gt;Nope, Not on Netlify&lt;/h1&gt;
&lt;p&gt;&amp;#x1f626;
Last evening I took a shot at implementing the &lt;em&gt;Netlify Identity&lt;/em&gt; tricks from the aforementioned article, but could not easily get it to work.  The problem, I think, is that the &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;https://Wieting.TamaToledo.com&lt;/a&gt; on &lt;em&gt;Netlify&lt;/em&gt; already uses &lt;em&gt;Netlify Identity&lt;/em&gt; for authentication of my &lt;em&gt;Netlify CMS&lt;/em&gt; forms, and adding a second, separate instance of that service isn&amp;rsquo;t trivial and perhaps isn&amp;rsquo;t even feasible.  I also tried implementing some quick &lt;a href=&#34;https://www.npmjs.com/package/staticrypt&#34;&gt;Staticrypt&lt;/a&gt; CLI protection but that also failed.  &lt;em&gt;Netlify&lt;/em&gt; does provide a really quick and painless solution, but it costs $20/month, at a minimum, to enable it.&lt;/p&gt;
&lt;h1 id=&#34;new-staticrypt-strategy&#34;&gt;New Staticrypt Strategy?&lt;/h1&gt;
&lt;p&gt;So, my next shot at this will involve creating a new &lt;a href=&#34;https://www.11ty.dev/&#34;&gt;Eleventy&lt;/a&gt; site just for the Wieting&amp;rsquo;s protected content.  Wish me luck and follow along here if you like.&lt;/p&gt;
&lt;h1 id=&#34;trying-azure-devops&#34;&gt;Trying Azure DevOps&lt;/h1&gt;
&lt;p&gt;I recently created a personal Azure account, registered to &lt;em&gt;summitt.dweller@gmail.com&lt;/em&gt;, and last evening (January 31, 2023) I took a dive into &lt;a href=&#34;&#34;&gt;Azure DevOps&lt;/a&gt; under that account.  The &amp;ldquo;welcome&amp;rdquo; email that I received says I now have an &amp;ldquo;organization&amp;rdquo; URL at &lt;a href=&#34;https://dev.azure.com/summittdweller&#34;&gt;https://dev.azure.com/summittdweller&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I jumped into Azure DevOps because it looks like within that environment I can establish a Content Management System (CMS) not unlike the &lt;em&gt;NetlifyCMS&lt;/em&gt; (or perhaps it IS NCMS) that I run for the Wieting Theatre, hosted with Netlify.com.  I really like &lt;em&gt;NetlifyCMS&lt;/em&gt;, but thus far I&amp;rsquo;ve had limited success with it, and ONLY at Netlify.com where the user authentication process is nicely streamlined.  I hope that Azure DevOps has user authentication that&amp;rsquo;s just as easy to manage, and at less cost.&lt;/p&gt;
&lt;p&gt;So, I guess the strategy now is to see what Azure DevOps has to offer, rather than venturing further with &lt;a href=&#34;https://www.npmjs.com/package/staticrypt&#34;&gt;Staticrypt&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s a TEMPORAY wrap, this post isn&amp;rsquo;t finished just yet.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Fixing a Broken GitHub Repo</title>
        <link>https://blog.summittdweller.com/posts/2023/01/fixing-a-broken-repo/</link>
        <pubDate>Thu, 19 Jan 2023 13:30:13 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2023/01/fixing-a-broken-repo/</guid>
        <description>&lt;h1 id=&#34;dont-push-enormous-files-to-github&#34;&gt;Don&amp;rsquo;t Push Enormous Files to GitHub!&lt;/h1&gt;
&lt;p&gt;Pay close attention to the subtitle above!  A couple of days ago I was working on content for &lt;a href=&#34;https://cv.tamatoledo.org&#34;&gt;Tama-Toledo Community Visioning&lt;/a&gt; and I added a large &lt;code&gt;socialmedia.zip&lt;/code&gt; file to the source repo, and then very stupidly pushed it to GitHub and the repo&amp;rsquo;s &lt;code&gt;main&lt;/code&gt; branch.  Naturally, the push didn&amp;rsquo;t finish so I removed the file and pushed a new commit to &amp;ldquo;remove it permanently&amp;rdquo;.  Well, that ain&amp;rsquo;t how &lt;code&gt;git&lt;/code&gt; works!&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;remove&amp;rdquo; commit appeared to have worked, but now the TTCV site wouldn&amp;rsquo;t deploy since the build time had gone from less than 2 minutes, to more than 10 minutes.  I immediately became suspicious of that pesky, large, &lt;code&gt;socialmedia.zip&lt;/code&gt; file, but how could I properly get rid of it?&lt;/p&gt;
&lt;h1 id=&#34;using-git-filter-repo&#34;&gt;Using &lt;code&gt;git filter-repo&lt;/code&gt;&lt;/h1&gt;
&lt;p&gt;Fortunately, I found and followed the GitHub docs guidance in &lt;a href=&#34;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository#using-git-filter-repo&#34;&gt;Using git filter-repo&lt;/a&gt; to remove the troublesome large file, namely &lt;code&gt;socialmedia.zip&lt;/code&gt;, from the repo.  My commands, and somewhat abridged output, to do this looked something like this&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main*›  
╰─$ git status  
On branch main  
Your branch is up to date with &#39;origin/main&#39;.  
&lt;p&gt;Untracked files:&lt;br&gt;
(use &amp;ldquo;git add &lt;file&gt;&amp;hellip;&amp;rdquo; to include in what will be committed)&lt;br&gt;
static/images/Business-30-Broadway-Crosswalk-Sign.png&lt;/p&gt;
&lt;p&gt;nothing added to commit but untracked files present (use &amp;ldquo;git add&amp;rdquo; to track)&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main*›&lt;br&gt;
╰─$ code .&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main*›&lt;br&gt;
╰─$ brew install git-filter-repo&lt;br&gt;
Running &lt;code&gt;brew update --auto-update&lt;/code&gt;&amp;hellip;&lt;br&gt;
==&amp;gt; Auto-updated Homebrew!&lt;br&gt;
==&amp;gt; Updated Homebrew from 3.6.19 (260ee0ee6) to 3.6.20 (344d32bf7).&lt;br&gt;
Updated 3 taps (homebrew/core, homebrew/cask and dart-lang/dart).&lt;br&gt;
==&amp;gt; New Formulae&lt;br&gt;
dstack&lt;br&gt;
==&amp;gt; New Casks&lt;br&gt;
codux&lt;/p&gt;
&lt;p&gt;The 3.6.20 changelog can be found at:&lt;br&gt;
&lt;a href=&#34;https://github.com/Homebrew/brew/releases/tag/3.6.20&#34;&gt;https://github.com/Homebrew/brew/releases/tag/3.6.20&lt;/a&gt;&lt;br&gt;
==&amp;gt; Fetching git-filter-repo&lt;br&gt;
==&amp;gt; Downloading &lt;a href=&#34;https://ghcr.io/v2/homebrew/core/git-filter-repo/manifests/2.38.0-1&#34;&gt;https://ghcr.io/v2/homebrew/core/git-filter-repo/manifests/2.38.0-1&lt;/a&gt;
######################################################################## 100.0%&lt;br&gt;
==&amp;gt; Downloading &lt;a href=&#34;https://ghcr.io/v2/homebrew/core/git-filter-repo/blobs/sha256:a309651d195fca608c9268b7075f58e018e83fc285e4f43d85546adea28e1d83&#34;&gt;https://ghcr.io/v2/homebrew/core/git-filter-repo/blobs/sha256:a309651d195fca608c9268b7075f58e018e83fc285e4f43d85546adea28e1d83&lt;/a&gt;&lt;br&gt;
==&amp;gt; Downloading from &lt;a href=&#34;https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:a309651d195fca608c9268b7075f58e018e83fc285e4f43d85546adea28e1d83?se=2023-01&#34;&gt;https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:a309651d195fca608c9268b7075f58e018e83fc285e4f43d85546adea28e1d83?se=2023-01&lt;/a&gt;
######################################################################## 100.0%&lt;br&gt;
==&amp;gt; Pouring git-filter-repo&amp;ndash;2.38.0.all.bottle.1.tar.gz&lt;br&gt;
🍺  /usr/local/Cellar/git-filter-repo/2.38.0: 8 files, 281.4KB&lt;br&gt;
==&amp;gt; Running &lt;code&gt;brew cleanup git-filter-repo&lt;/code&gt;&amp;hellip;&lt;br&gt;
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.&lt;br&gt;
Hide these hints with HOMEBREW_NO_ENV_HINTS (see &lt;code&gt;man brew&lt;/code&gt;).&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main›&lt;br&gt;
╰─$ git pull&lt;br&gt;
remote: Enumerating objects: 7, done.&lt;br&gt;
remote: Counting objects: 100% (7/7), done.&lt;br&gt;
remote: Compressing objects: 100% (2/2), done.&lt;br&gt;
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0&lt;br&gt;
Unpacking objects: 100% (4/4), 78.90 KiB | 1022.00 KiB/s, done.&lt;br&gt;
From &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning&#34;&gt;https://github.com/Tama-Toledo/community-visioning&lt;/a&gt;&lt;br&gt;
978a2cd..23b4276  gh-pages   -&amp;gt; origin/gh-pages&lt;br&gt;
Already up to date.&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main›&lt;br&gt;
╰─$ code .&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/cv ‹main›&lt;br&gt;
╰─$ cd ..&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub&lt;br&gt;
╰─$ mv -f cv .out-of-the-way&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub&lt;br&gt;
╰─$ git clone &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning&#34;&gt;https://github.com/Tama-Toledo/community-visioning&lt;/a&gt;&lt;br&gt;
Cloning into &amp;lsquo;community-visioning&amp;rsquo;&amp;hellip;&lt;br&gt;
remote: Enumerating objects: 3738, done.&lt;br&gt;
remote: Counting objects: 100% (882/882), done.&lt;br&gt;
remote: Compressing objects: 100% (307/307), done.&lt;br&gt;
remote: Total 3738 (delta 488), reused 776 (delta 388), pack-reused 2856&lt;br&gt;
Receiving objects: 100% (3738/3738), 119.72 MiB | 29.18 MiB/s, done.&lt;br&gt;
Resolving deltas: 100% (1932/1932), done.&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub&lt;br&gt;
╰─$ cd community-visioning            &lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ ll&lt;br&gt;
total 16&lt;br&gt;
-rw-r&amp;ndash;r&amp;ndash;  1 mark  staff    36B Jan 19 16:24 README.md&lt;br&gt;
drwxr-xr-x  4 mark  staff   128B Jan 19 16:24 archetypes&lt;br&gt;
drwxr-xr-x  3 mark  staff    96B Jan 19 16:24 assets&lt;br&gt;
-rw-r&amp;ndash;r&amp;ndash;  1 mark  staff   3.5K Jan 19 16:24 config.toml&lt;br&gt;
drwxr-xr-x  9 mark  staff   288B Jan 19 16:24 content&lt;br&gt;
drwxr-xr-x  3 mark  staff    96B Jan 19 16:24 i18n&lt;br&gt;
drwxr-xr-x  8 mark  staff   256B Jan 19 16:24 layouts&lt;br&gt;
drwxr-xr-x  3 mark  staff    96B Jan 19 16:24 resources&lt;br&gt;
drwxr-xr-x  6 mark  staff   192B Jan 19 16:24 static&lt;br&gt;
drwxr-xr-x  3 mark  staff    96B Jan 19 16:24 themes&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ code .&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git filter-repo &amp;ndash;invert-paths &amp;ndash;path socialmedia.zip                  &lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git remote add origin &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning&#34;&gt;https://github.com/Tama-Toledo/community-visioning&lt;/a&gt;&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git push origin &amp;ndash;force &amp;ndash;all    &lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git status&lt;br&gt;
On branch main&lt;br&gt;
Your branch is up to date with &amp;lsquo;origin/main&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;nothing to commit, working tree clean&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git pull&lt;br&gt;
╭─mark@Marks-Mac-Mini ~/GitHub/community-visioning ‹main›&lt;br&gt;
╰─$ git branch &amp;ndash;set-upstream-to=origin/main  main&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;  
&lt;p&gt;The key commands in that sequence are&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;brew install git-filter-repo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git clone&lt;/strong&gt; &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning&#34;&gt;https://github.com/Tama-Toledo/community-visioning&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;The above command was necessary because the next command expects a &amp;ldquo;clean&amp;rdquo;, recently compressed local repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git filter-repo&lt;/strong&gt; &amp;ndash;invert-paths &amp;ndash;path socialmedia.zip&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git remote add origin&lt;/strong&gt; &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning&#34;&gt;https://github.com/Tama-Toledo/community-visioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git push origin &amp;ndash;force &amp;ndash;all&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git branch &amp;ndash;set-upstream-to=origin/main&lt;/strong&gt; main&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;it-worked&#34;&gt;It Worked!&lt;/h1&gt;
&lt;p&gt;The good news, this worked, and I now have my repo back in shape such that I can successfully deploy it again.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s a wrap.  Oh, in case you want to know what happened to &lt;code&gt;socialmedia.zip&lt;/code&gt;, check out that project&amp;rsquo;s &lt;a href=&#34;https://github.com/Tama-Toledo/community-visioning/blob/main/README.md&#34;&gt;README.md&lt;/a&gt; file.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>My Hugo Timeline, A New Hugo Module</title>
        <link>https://blog.summittdweller.com/posts/2022/12/my-hugo-timeline/</link>
        <pubDate>Tue, 06 Dec 2022 13:30:13 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/12/my-hugo-timeline/</guid>
        <description>&lt;p&gt;What follows is an excerpt from this blog&amp;rsquo;s &lt;code&gt;README.md&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve successfully added the code to drive a new &lt;code&gt;/timeline&lt;/code&gt; page as part of this blog, but I did so &amp;ldquo;locally&amp;rdquo;, and now I&amp;rsquo;d like to repeat the process but using the aforementioned &lt;a href=&#34;https://github.com/SummittDweller/hugo-timeline&#34;&gt;SummittDweller/hugo-timeline&lt;/a&gt; &lt;a href=&#34;https://gohugo.io/hugo-modules/&#34;&gt;module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I used guidance found in &lt;a href=&#34;https://scripter.co/hugo-modules-getting-started/&#34;&gt;Hugo Modules: Getting Started&lt;/a&gt; to make this happen, like so:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main› 
╰─$ brew install go
╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main› 
╰─$ brew upgrade   # This is not &amp;#34;required&amp;#34;, but probably overdue.

╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ mkdir content/timeline/.out-of-the-way      # vvv Moving existing local stuff out of the way vvv
╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ mv -f layouts/partials/hugo-timeline* content/timeline/.out-of-the-way/.   
╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ mv -f layouts/shortcodes/hugo-timeline* content/timeline/.out-of-the-way/.
╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ mv -f static/css/hugo-timeline* content/timeline/.out-of-the-way/.        

╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ hugo mod init github.com/SummittDweller/blogs-SummittDweller        
go: creating new go.mod: module github.com/SummittDweller/blogs-SummittDweller
go: to add module requirements and sums:
        go mod tidy
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, to pull in &lt;a href=&#34;https://github.com/SummittDweller/hugo-timeline&#34;&gt;SummittDweller/hugo-timeline&lt;/a&gt; as a module I turned to the &lt;code&gt;config.yml&lt;/code&gt; file and guidance found in &lt;a href=&#34;https://www.thenewdynamic.com/article/hugo-modules-everything-from-imports-to-create/&#34;&gt;Hugo Modules: everything you need to know!&lt;/a&gt;.  Additions to &lt;code&gt;config.yml&lt;/code&gt; are:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;module&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;imports&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;path&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;github.com/SummittDweller/hugo-timeline&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;mounts&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;source&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;layouts&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;target&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;layouts&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;source&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;static&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bbb&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;target&lt;/span&gt;:&lt;span style=&#34;color:#bbb&#34;&gt; &lt;/span&gt;static&lt;span style=&#34;color:#bbb&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;updating-the-module&#34;&gt;Updating the Module&lt;/h3&gt;
&lt;p&gt;So, all of the above moves appeared to work correctly, at least locally, but I wanted to be sure I can successfully update the &lt;code&gt;hugo-timeline&lt;/code&gt; module and get updated behavior in this project.  The command required to make that happen per &lt;a href=&#34;https://www.thenewdynamic.com/article/hugo-modules-everything-from-imports-to-create/#upgrading&#34;&gt;Hugo Modules: everything you need to know!&lt;/a&gt; is:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ hugo mod get -u github.com/SummittDweller/hugo-timeline
go: downloading github.com/SummittDweller/hugo-timeline v0.0.0-20221206191252-cd7178e7e43b
go: upgraded github.com/SummittDweller/hugo-timeline v0.0.0-20221206043330-5f1ecbad913f =&amp;gt; v0.0.0-20221206191252-cd7178e7e43b

╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*› 
╰─$ hugo server
port 1313 already in use, attempting to use an available port
Start building sites … 
hugo v0.107.0+extended darwin/amd64 BuildDate=unknown

                   | EN   
-------------------+------
  Pages            | 288  
  Paginator pages  |   9  
  Non-page files   |   0  
  Static files     |  38  
  Processed images |   0  
  Aliases          |  79  
  Sitemaps         |   1  
  Cleaned          |   0  

Built in 90 ms
Watching for changes in /Users/mark/GitHub/blogs-SummittDweller/{archetypes,content,layouts,static,themes}
Watching for config changes in /Users/mark/GitHub/blogs-SummittDweller/config.yaml, /Users/mark/GitHub/blogs-SummittDweller/go.mod
Environment: &amp;#34;development&amp;#34;
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at //localhost:62846/ (bind address 127.0.0.1)
Press Ctrl+C to stop
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eureka!  The page rendered at &lt;code&gt;http://localhost:1313/timeline/&lt;/code&gt; after the above &lt;code&gt;hugo mod get -u...&lt;/code&gt; command is displaying the latest changes I made to &lt;code&gt;hugo-timeline&lt;/code&gt;!  Perfect!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My work here is done, well, for now anyway.&lt;/strong&gt;   &amp;#x1f601;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>How MY Web Works</title>
        <link>https://blog.summittdweller.com/posts/2022/11/how-my-web-works/</link>
        <pubDate>Wed, 30 Nov 2022 17:45:11 -0600</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/11/how-my-web-works/</guid>
        <description>&lt;p&gt;I&amp;rsquo;ve been building websites and apps for a lot of years now, and over time I&amp;rsquo;ve used a plethora of different frameworks and tools to do so.  I&amp;rsquo;ve also involved a number of registrars, DNS strategies, source code repositories, and web hosts&amp;hellip; frankly too many to remember or even count.&lt;/p&gt;
&lt;p&gt;In my old age I&amp;rsquo;d love to have a dynamic document, or two, where I can track things like this:&lt;/p&gt;
&lt;h3 id=&#34;for-websites&#34;&gt;For Websites:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the site&amp;rsquo;s purpose&lt;/li&gt;
&lt;li&gt;the site&amp;rsquo;s address and aliases&lt;/li&gt;
&lt;li&gt;the domain registrar&lt;/li&gt;
&lt;li&gt;the DNS host and site&amp;rsquo;s record structure&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;for-apps&#34;&gt;For Apps:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the application&amp;rsquo;s purpose&lt;/li&gt;
&lt;li&gt;the application&amp;rsquo;s web address (if deployed to the web)&lt;/li&gt;
&lt;li&gt;a link to the application&amp;rsquo;s user guide or instruction&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;for-both-sites-and-apps&#34;&gt;For Both Sites and Apps:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the programming language(s) used&lt;/li&gt;
&lt;li&gt;the location of the code repository&lt;/li&gt;
&lt;li&gt;a link to development and deployment guidance&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;mackenzies-project&#34;&gt;Mackenzie&amp;rsquo;s Project&lt;/h1&gt;
&lt;p&gt;I feel like I&amp;rsquo;m a little too close to this material and perhaps my memory is clouded by too much outdated documentation to accurately determine where things stand today.  So, I&amp;rsquo;m asking my daughter, Mackenzie, to look at the artifacts I can provide and piece together this document for me.&lt;/p&gt;
&lt;h2 id=&#34;some-background-research&#34;&gt;Some Background Research&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ll start by asking Mackenzie to find, share, and document some resources to help her understand how to identify and document the working parts of my sites and apps&amp;hellip; discovering how the web works, and more.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s begin with a short list of documents/pages to help in that regard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works&#34;&gt;How the web works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.freecodecamp.org/news/how-the-web-works-a-primer-for-newcomers-to-web-development-or-anyone-really-b4584e63585c/&#34;&gt;How the Web Works: A Primer for Newcomers to Web Development (or anyone, really)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.paperstreet.com/blog/domains-registrars-name-servers-and-dns-oh-my/&#34;&gt;Understanding Basics of Domains, Registrars, Name Servers and DNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.paperstreet.com/blog/how-domains-name-servers-dns-and-websites-work/&#34;&gt;How Domains, Name Servers, DNS and Websites Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some &amp;ldquo;formal&amp;rdquo; educational materials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.codecademy.com/learn/deploy-a-website&#34;&gt;How to Deploy a Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      </item>
      
    
      
      <item>
        <title>The Derecho: Consolidated Posts and Microposts: August 10 thru September 6, 2020</title>
        <link>https://blog.summittdweller.com/posts/2020/09/consolidated-20200810-thru-20200906/</link>
        <pubDate>Sun, 25 Sep 2022 20:12:49 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/09/consolidated-20200810-thru-20200906/</guid>
        <description>&lt;p&gt;The following is a chronological consolidation of posts and microposts from August 10, commonly known in east and central Iowa as &amp;ldquo;The Day of the Derecho&amp;rdquo;, through September 6, 2020.&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
The derecho hit my home in Toledo, Iowa, at about 11:30 AM on Monday, August 10, 2020.  Straight-line winds were clocked at nearly 140 miles per hour, and sustained for more than 20 minutes across a path almost 40 miles wide.  
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  The power is still out here, almost 10 days after the derecho knocked it out. So many power restoration predictions have come and gone, I&amp;rsquo;ve lost count. Still I&amp;rsquo;m told that what we need is a one-man, 15-minute fix. Perhaps in the morning I&amp;rsquo;ll stretch our broken power line across the street and pitch a tent next door until an Alliant truck stops and gets this done. I know they are busy, but 15 minutes of one lineman&amp;rsquo;s time a week ago, when it was first &amp;ldquo;promised&amp;rdquo;, would have been so nice. I fixed my own Mediacom connection more than a week ago, and there&amp;rsquo;s evidence tonight that their service has been restored.  So, if I had power, I think we would also have TV and internet.  IF.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2020/08/19 11:45 PM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  It&amp;rsquo;s the start of day number eleven, and still no power. Checked the forecast and it&amp;rsquo;s getting hot&amp;hellip;so am I!
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2020/08/20 8:21 AM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Eleven days and seven hours without, but the power is now back on at 104 W. Summit Street in Toledo. I&amp;rsquo;d estimate that for the duration we burned about 105 gallons of gas just to keep the fridge, my CPAP, one lamp, and two fans running.  Glad to be back in the 21st century. Now, what&amp;rsquo;s all this I hear about a deadly virus and some political scuffles?
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2020/08/20 7:48 PM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2020/08/iowahurricane2020/&#34; rel=&#34;full-article&#34;&gt;Iowa&amp;#39;s 2020 Hurricane&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2020/08/20 10:18 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, Iowa
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2020/08/2020-derecho-follow-up-august-23/&#34; rel=&#34;full-article&#34;&gt;Derecho Follow-Up - Saturday, August 22&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2020/08/22 9:45 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, Iowa
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  And so begins day number 11 without power. I think I have watched at least a dozen Alliant energy trucks Drive by the house already this morning. I honestly don&amp;rsquo;t think they know where we are.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2021/08/21 9:28 AM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Today, Sunday, August 23, 2020, marked the start of what looks like another schorching heat-wave here. So I pitched in during the morning at the home of my &amp;ldquo;scurry&amp;rdquo; partners Jeff and Mary Fasse-Shaw, to help with cutting up some of the deadfall along the creek on the west side of their property.  We got a good start, but there&amp;rsquo;s a lot of fallen timber to be cleared there!
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2020/08/23 5:33 PM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, Iowa
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2020/08/tama-toledo-parks-2020-derecho-follow-up-august-24/&#34; rel=&#34;full-article&#34;&gt;Tama-Toledo Parks - Derecho Follow-Up for August 24&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2020/08/24 11:20 AM
&lt;pre&gt;&lt;code&gt;  from Toledo, Iowa
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2020/09/last-of-the-derecho-damage-september-6/&#34; rel=&#34;full-article&#34;&gt;Last of the Clean-up? - Derecho Follow-Up for September 6&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2020/09/06 7:52 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, Iowa
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
</description>
      </item>
      
    
      
      <item>
        <title>August 2022 - Geocaching&#39;s 20th Anniversary Celebration Event</title>
        <link>https://blog.summittdweller.com/posts/2022/08/consolidated-20220806-thru-20220825/</link>
        <pubDate>Sun, 25 Sep 2022 19:55:13 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/consolidated-20220806-thru-20220825/</guid>
        <description>&lt;p&gt;The following is a chronological consolidation of posts and microposts from August 6 through August 25, 2022.&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-1/&#34; rel=&#34;full-article&#34;&gt;Westbound to Seattle - Day 1&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/07 4:57 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-2/&#34; rel=&#34;full-article&#34;&gt;Westbound to Seattle - Day 2&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/07 4:58 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-3/&#34; rel=&#34;full-article&#34;&gt;Westbound to Seattle - Day 3&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/07 4:58 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-1/&#34; rel=&#34;full-article&#34;&gt;Eastbound from Seattle - Day 1&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/07 9:13 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-2/&#34; rel=&#34;full-article&#34;&gt;Eastbound from Seattle - Day 2&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/08 1:39 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/post.html --&gt;
&lt;article class=&#34;common post&#34;&gt;
  &lt;h2&gt;&lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-3/&#34; rel=&#34;full-article&#34;&gt;Eastbound from Seattle - Day 3&lt;/a&gt;&lt;/h2&gt;
  &lt;div class=&#34;postmeta&#34;&gt;
    Posted on 2022/08/08 2:44 PM
&lt;pre&gt;&lt;code&gt;  from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/post.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Waiting for my ride to Johnston.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/12 7:37 AM
&lt;pre&gt;&lt;code&gt;  posted from Toledo, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Departed for Seattle a few minutes  after 6 AM.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 6:14 AM
&lt;pre&gt;&lt;code&gt;  posted from Montour, IA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Lunch at Culver&amp;rsquo;s in Brookings, SD.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 11:52 AM
&lt;pre&gt;&lt;code&gt;  posted from Brookings, SD
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Got my first North Dakota geocache find a few miles back down the road.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 2:18 PM
&lt;pre&gt;&lt;code&gt;  posted from Wahpeton, ND
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Passing through the outskirts of metropolitan Fargo.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 3:10 PM
&lt;pre&gt;&lt;code&gt;  posted from West Fargo, ND
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Headed west across North Dakota for GC 551, the state&amp;rsquo;s oldest active geocache.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 5:24 PM
&lt;pre&gt;&lt;code&gt;  posted from Steele, ND
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Arrived for the night around 9:25 pm in Miles City, Montana, about 70 miles past our intended stop.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/16 9:52 PM
&lt;pre&gt;&lt;code&gt;  posted from Miles City, MT
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  First cache of the day:  Headed to GCHGZZ in a rest area in Montana.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/17 6:43 AM
&lt;pre&gt;&lt;code&gt;  posted from Rosebud, MT
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  GCKHRJ:  Was not on our original list but a really quick stop and well worth the time out.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/17 9:46 AM
&lt;pre&gt;&lt;code&gt;  posted from Big Timber, MT
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Just departed from the headwaters of the Missouri river state park in Montana and the state&amp;rsquo;s oldest pair of geocaches.  Check my track logs on &lt;a href=&#34;https://hikes.summittdweller.com&#34;&gt;https://hikes.summittdweller.com&lt;/a&gt; for more details.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/17 1:21 PM
&lt;pre&gt;&lt;code&gt;  posted from Headwaters of the Missouri River, Montana
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Stopped for dinner in Coeur d&amp;rsquo;Alene at Rogers Ice Cream and Burgers.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/17 6:13 PM
&lt;pre&gt;&lt;code&gt;  posted from Coeur d&amp;amp;#39;Alene, ID
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Excellent company for the reviewers lunch after the APE geocache at Snoqualmie Pass, Washington.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/18 2:32 PM
&lt;pre&gt;&lt;code&gt;  posted from Snoqualmie Pass, WA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Relaxing and catching up in the hotel (the Maxwell near the Space Needle) after a great day of geocaching, hiking (10 miles or more) and lite travel.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/18 9:46 PM
&lt;pre&gt;&lt;code&gt;  posted from Seattle, WA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  No time to blog!  Attending the Geocaching 20th Celebration.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/20 10:38 AM
&lt;pre&gt;&lt;code&gt;  posted from Seattle, WA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Southbound on I5 to the Original Stash SE of Portland.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/21 5:55 AM
&lt;pre&gt;&lt;code&gt;  posted from Tukwila, WA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Grabbing a quick lunch at McDonald&amp;rsquo;s.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/21 1:59 PM
&lt;pre&gt;&lt;code&gt;  posted from Madras, OR
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  The apex of an epic road-trip!
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/21 7:11 PM
&lt;pre&gt;&lt;code&gt;  posted from Davis Creek, CA
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Winnemucca ETA is 11:35pm.  Never have I seen so many stars.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/21 10:09 PM
&lt;pre&gt;&lt;code&gt;  posted from Denico Junction, NV
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Tom&amp;rsquo;s reaction when we popped over the hill to see the Bonneville salt flats was &amp;ldquo;holy shit&amp;rdquo;.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/22 11:22 AM
&lt;pre&gt;&lt;code&gt;  posted from West Wendover, NV
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Posting an &lt;a href=&#34;https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-3/&#34;&gt;updated itinerary&lt;/a&gt; for eastbound day 3.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/22 7:22 PM
&lt;pre&gt;&lt;code&gt;  posted from Rawlins, WY
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
&lt;!-- hugo: layouts/shortcodes/micropost.html --&gt;
&lt;article class=&#34;micropost&#34;&gt;&lt;p&gt;
  Planning a lunch stop in Grand Island with Heartland Cacher and then on home to Iowa so Reviewer Smith can get back to Illinois this evening.
  &lt;aside class=&#34;postmeta&#34;&gt;→ 2022/08/23 8:42 AM
&lt;pre&gt;&lt;code&gt;  posted from North Platte, NE
&lt;/code&gt;&lt;/pre&gt;
  &lt;/aside&gt;
&lt;/p&gt;&lt;/article&gt;
&lt;!-- /hugo: layouts/shortcodes/micropost.html --&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Proper Python</title>
        <link>https://blog.summittdweller.com/posts/2022/09/proper-python/</link>
        <pubDate>Sat, 24 Sep 2022 14:26:44 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/09/proper-python/</guid>
        <description>&lt;p&gt;What follows is the &lt;code&gt;README.md&lt;/code&gt; file from my &lt;em&gt;GitHub&lt;/em&gt; repo where &lt;a href=&#34;https://blog.summittdweller.com&#34;&gt;https://blog.summittdweller.com&lt;/a&gt; is built.  It outlines how to &amp;ldquo;properly&amp;rdquo; add Python to a project such that we can create an easily reproducible &amp;ldquo;virtual environment&amp;rdquo; without storing the necessary Python libraries in &lt;em&gt;GitHub&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;From the &lt;code&gt;README.md&lt;/code&gt;&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
# blogs-SummittDweller
&lt;p&gt;The Python portions of this repo were gleaned from &lt;a href=&#34;https://github.com/SummittDweller/hikes&#34;&gt;https://github.com/SummittDweller/hikes&lt;/a&gt;.
This is the repo for my &lt;a href=&#34;https://blog.SummittDweller.com/&#34;&gt;https://blog.SummittDweller.com/&lt;/a&gt; static website.&lt;/p&gt;
&lt;h2 id=&#34;latest-python-improvements&#34;&gt;Latest Python Improvements&lt;/h2&gt;
&lt;p&gt;Using guidance at &lt;a href=&#34;https://predictivehacks.com/how-to-work-with-vs-code-and-virtual-environments-in-python/&#34;&gt;https://predictivehacks.com/how-to-work-with-vs-code-and-virtual-environments-in-python/&lt;/a&gt; I successfully created a new &lt;code&gt;.venv&lt;/code&gt; virtual environment.  The commands I used to do this were&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*›
╰─$ python3 -m venv .venv

╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*›
╰─$ source .venv/bin/activate

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main› 
╰─$ pip3 freeze &amp;gt; python-requirements.txt

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummittDweller ‹main*›
╰─$ pip3 install -r python-requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then I used &lt;code&gt;COMMAND-SHIFT-P&lt;/code&gt; to select and &lt;code&gt;Python: Select interpreter&lt;/code&gt; to choose the new &lt;code&gt;.venv&lt;/code&gt; Python.  After that&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummitDweller ‹main*›
╰─$ python3 consolidate.py --start 20220806 --end 20220825

(.venv) ╭─mark@Marks-Mac-Mini ~/GitHub/blogs-SummitDweller ‹main*›
╰─$ hugo server
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;rebuilding-a-local-environment&#34;&gt;Rebuilding a Local Environment&lt;/h2&gt;
&lt;p&gt;Based on guideance from &lt;a href=&#34;https://stackoverflow.com/questions/6590688/is-it-bad-to-have-my-virtualenv-directory-inside-my-git-repository&#34;&gt;https://stackoverflow.com/questions/6590688/is-it-bad-to-have-my-virtualenv-directory-inside-my-git-repository&lt;/a&gt; I&amp;rsquo;ve reconstructed this project such that Python artifacts do NOT propogate into Github.&lt;/p&gt;
&lt;p&gt;The project should automatically &amp;ldquo;rebuild&amp;rdquo; as necessary when opened in VSCode, but if the Python virtual environment needs to be recreated use&amp;hellip;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;source .venv/bin/activate &amp;amp;&amp;amp; pip3 install -r python-requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;deployment-via-digitalocean&#34;&gt;Deployment via DigitalOcean&lt;/h2&gt;
&lt;p&gt;In order to deploy this &lt;code&gt;starter&lt;/code&gt; static app on &lt;em&gt;DigitalOcean&lt;/em&gt; I had to PERMANENTLY move all of my Python components (&lt;code&gt;.py&lt;/code&gt; scripts and &lt;code&gt;requirements.txt&lt;/code&gt;) to a &lt;code&gt;.python&lt;/code&gt; directory to hide it from view during app creation.  Before moving these elements &lt;em&gt;DigitalOcean&lt;/em&gt; would consistently try to deploy my app as Python, and that&amp;rsquo;s not right.&lt;/p&gt;
&lt;p&gt;See &lt;em&gt;DigitalOcean&lt;/em&gt; ticket [#06849069] &lt;code&gt;Hugo static site with Python components builds fail&lt;/code&gt; for details.&lt;/p&gt;
&lt;p&gt;The response I received from &lt;em&gt;DigitalOcean&lt;/em&gt;&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Thanks for contacting DigitalOcean.&lt;/p&gt;
&lt;p&gt;We appreciate you reaching out to us about your Hugo static site. From what you mentioned it does sound like your app is getting detected as a python webservice rather then a static site due to the requirements.txt file you had in the root of your repo.&lt;/p&gt;
&lt;p&gt;Unfortunately this is currently what App platform uses to detect applications as python apps. Either having a requirements.txt file or a setup.py file will cause that detection. Our engineers are looking into options to specify the build pack used rather then relying upon the auto detection, which would address this issue in your case, but don&amp;rsquo;t have a timeline yet for implementing it.&lt;/p&gt;
&lt;p&gt;In the mean time the work around that you have specified here should work fine for this. It should cause the app to be detected as a static site rather then python. Hopefully it isn&amp;rsquo;t impacting anything else in your app&amp;rsquo;s build process.&lt;/p&gt;
&lt;p&gt;If you have any questions, please let us know.&lt;/p&gt;
&lt;p&gt;Regards,
Nate
Senior Cloud Support Engineer
Check out our community for great tutorials, articles and FAQs!
digitalocean.com/community&lt;/p&gt;
&lt;p&gt;ref:_00Df218t5m._5004P21l4JM:ref&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
&lt;h3 id=&#34;remedy&#34;&gt;Remedy&lt;/h3&gt;
&lt;p&gt;Based on the response above I&amp;rsquo;m making final changes to eliminate the &lt;code&gt;.python&lt;/code&gt; folder, renaming &lt;code&gt;.python/requirements.txt&lt;/code&gt; as &lt;code&gt;python-requirements.txt&lt;/code&gt;, and pulling all other contents of &lt;code&gt;.python&lt;/code&gt; into the root of the project.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Eastbound from Seattle - Day 3</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-3/</link>
        <pubDate>Mon, 08 Aug 2022 14:44:03 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-3/</guid>
        <description>&lt;h1 id=&#34;day-3---laramie-wy-to-grinnell-ia&#34;&gt;Day 3 - Laramie, WY to Grinnell, IA&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 3 (eastbound) using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Eastbound-Day-3.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Eastbound Day 3&#34;&gt;&lt;/iframe&gt;</description>
      </item>
      
    
      
      <item>
        <title>Eastbound from Seattle - Day 2</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-2/</link>
        <pubDate>Mon, 08 Aug 2022 13:39:47 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-2/</guid>
        <description>&lt;h1 id=&#34;day-3---lakeview-or-to-laramie-wy&#34;&gt;Day 3 - Lakeview, OR to Laramie, WY&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 2 (eastbound) using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Eastbound-Day-2.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Eastbound Day 2&#34;&gt;&lt;/iframe&gt;</description>
      </item>
      
    
      
      <item>
        <title>Eastbound from Seattle - Day 1</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-1/</link>
        <pubDate>Sun, 07 Aug 2022 21:13:11 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-eastbound-day-1/</guid>
        <description>&lt;h1 id=&#34;day-1---seattle-wa-to-lakeview-or&#34;&gt;Day 1 - Seattle, WA to Lakeview, OR&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 1 (eastbound) using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Eastbound-Day-1.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Eastbound Day 1&#34;&gt;&lt;/iframe&gt;</description>
      </item>
      
    
      
      <item>
        <title>Westbound to Seattle - Day 3</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-3/</link>
        <pubDate>Sun, 07 Aug 2022 16:58:07 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-3/</guid>
        <description>&lt;h1 id=&#34;day-3---moses-lake-wa-to-seattle&#34;&gt;Day 3 - Moses Lake, WA to Seattle&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 3 using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Westbound-Day-3.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Westbound Day 3&#34;&gt;&lt;/iframe&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Westbound to Seattle - Day 2</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-2/</link>
        <pubDate>Sun, 07 Aug 2022 16:57:53 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-2/</guid>
        <description>&lt;h1 id=&#34;day-2---glendive-mt-to-moses-lake-wa&#34;&gt;Day 2 - Glendive, MT to Moses Lake, WA&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 2 using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Westbound-Day-2.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Westbound Day 2&#34;&gt;&lt;/iframe&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Westbound to Seattle - Day 1</title>
        <link>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-1/</link>
        <pubDate>Sun, 07 Aug 2022 16:57:10 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/08/geocaching-westbound-day-1/</guid>
        <description>&lt;h1 id=&#34;day-1---toledo-ia-to-glendive-mt&#34;&gt;Day 1 - Toledo, IA to Glendive, MT&lt;/h1&gt;
&lt;p&gt;This is our planned route for Day 1 using a &lt;code&gt;speed factor of 1.0&lt;/code&gt; (traveling at the speed limit).  Fuel cost is based on &lt;code&gt;40 mpg&lt;/code&gt; and &lt;code&gt;$4.00 per gallon&lt;/code&gt; averages.  Fuel stops typically have a 15-minute duration and rest areas allow 5-minutes each.&lt;/p&gt;
&lt;p&gt;A list of possible geocache targets for the entire route can be found at &lt;a href=&#34;https://www.geocaching.com/play/map/lists/BMBBMD6&#34;&gt;https://www.geocaching.com/play/map/lists/BMBBMD6&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://blog.summittdweller.com/html/Westbound-Day-1.html&#34; style=&#34;width: 100%; height: 400px; border:1;&#34; title=&#34;Westbound Day 1&#34;&gt;&lt;/iframe&gt;</description>
      </item>
      
    
      
      <item>
        <title>Atom No More?</title>
        <link>https://blog.summittdweller.com/posts/2022/06/atom-no-more/</link>
        <pubDate>Thu, 09 Jun 2022 09:14:39 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2022/06/atom-no-more/</guid>
        <description>&lt;p&gt;Yesterday one of my library colleagues at Grinnell College posted an &lt;a href=&#34;https://github.blog/2022-06-08-sunsetting-atom/&#34;&gt;announcement&lt;/a&gt; that &lt;a href=&#34;https://atom.io&#34;&gt;Atom&lt;/a&gt; would be retired (sunset) in December 2022.  Ouch, I have a lot of workflows that depend on &lt;em&gt;Atom&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;So, today part of my mission is to begin the process of migrating workflows, both work-related and personal/at-home, from &lt;em&gt;Atom&lt;/em&gt; to its most logical replacement, &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;Visual Studio Code&lt;/a&gt; or &lt;em&gt;VS Code&lt;/em&gt; as it&amp;rsquo;s largely known in the development community.  The other part of today&amp;rsquo;s mission was to update &lt;a href=&#34;https://blog.summittdweller.com/&#34;&gt;this blog&lt;/a&gt;, something I&amp;rsquo;ve not done in far too long!&lt;/p&gt;
&lt;p&gt;What better time to begin using &lt;em&gt;VS Code&lt;/em&gt; than right now, to edit &lt;a href=&#34;posts/2022/06/atom-no-more/&#34;&gt;this blog post&lt;/a&gt;?  So, that&amp;rsquo;s what I did, er, am doing.&lt;/p&gt;
&lt;p&gt;This could be a long story, but I&amp;rsquo;ll keep it short and just share the links, mostly.  I&amp;rsquo;ll begin on my personal Mac Mini, where I&amp;rsquo;m editing now, so I can test the entire process before repeating it on my other Mac workstations.&lt;/p&gt;
&lt;h2 id=&#34;install-using-homebrew&#34;&gt;Install Using Homebrew&lt;/h2&gt;
&lt;p&gt;I like to use &lt;code&gt;homebrew&lt;/code&gt; whenever possible to manage installations on my Mac. On this Mac Mini I found &lt;a href=&#34;https://formulae.brew.sh/cask/visual-studio-code&#34;&gt;this Homebrew Formulae&lt;/a&gt; and put it to use&amp;hellip;  All done.  Nice!&lt;/p&gt;
&lt;h2 id=&#34;adding-a-command-line--terminal-shortcut&#34;&gt;Adding a Command Line / Terminal Shortcut&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve gotten quite used to launching &lt;em&gt;Atom&lt;/em&gt; in my working directory with a simple command of the form &lt;code&gt;atom .&lt;/code&gt;.  Can I do the same with &lt;em&gt;VS Code&lt;/em&gt;?  Sure!  I used the guidance found in &lt;a href=&#34;https://www.freecodecamp.org/news/how-to-open-visual-studio-code-from-your-terminal/&#34;&gt;How to Open Visual Studio Code From Your Terminal&lt;/a&gt; to set that up.  Piece of cake.  I love finding timely, not stale, advice that just works!&lt;/p&gt;
&lt;p&gt;Now I can simply navigate to a project folder on my Mac and type &lt;code&gt;code .&lt;/code&gt; to open it all in &lt;em&gt;VS Code&lt;/em&gt;.  Sweet!&lt;/p&gt;
&lt;h2 id=&#34;replacing-my-atom-packages&#34;&gt;Replacing My Atom Packages&lt;/h2&gt;
&lt;p&gt;There are quite a few, nothing that I&amp;rsquo;ve written personally, but lots of published packages/extensions borrowed from others.  That&amp;rsquo;s one of the things I love(d) about &lt;em&gt;Atom&lt;/em&gt;. On my Mac Mini, and most other Macs, that list looks something like this:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://blog.summittdweller.com/img/my-atom-packages.png&#34; alt=&#34;My Installed Atom Packages&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;I told you there were quite a few.  I&amp;rsquo;m posting this image of my list just so I have a document as I begin to build the same into &lt;em&gt;VS Code&lt;/em&gt;.  Oh, when I added the above image to this post, I did so by dragging my screen-capture from my desktop directly into the &lt;em&gt;VS Code&lt;/em&gt; &lt;code&gt;EXPLORER&lt;/code&gt; panel (left side of my window), just like I used to do with &lt;em&gt;Atom&lt;/em&gt;.  Nice!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll take my time and start replacing these as-needed.  First up&amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;replacing-iso-8601-timestamp&#34;&gt;Replacing &lt;code&gt;ISO 8601 timestamp&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;This &lt;em&gt;Atom&lt;/em&gt; package allows me to add the current date and time, in ISO 8601 format, to the frontmatter of a blog post like the one you are reading now.  I found and followed &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=jsynowiec.vscode-insertdatestring&#34;&gt;this documentation&lt;/a&gt; to set it up in &lt;em&gt;VS Code&lt;/em&gt;.  In &lt;em&gt;Atom&lt;/em&gt; I put my cursor at the point where my timestamp was needed, and went to the &lt;code&gt;Packages&lt;/code&gt; menu to insert it.  In &lt;em&gt;VS Code&lt;/em&gt; there doesn&amp;rsquo;t appear to be such a menu, but the documentation says I can use &lt;code&gt;command-shift-P&lt;/code&gt; to open the &amp;ldquo;command pallette&amp;rdquo;, where I can scroll to or search for the command I want to engage.  Another piece of cake!&lt;/p&gt;
&lt;p&gt;The result of inserting the current timestamp should be reflected in the frontmatter of this blog post.  &amp;#x1f600;&lt;/p&gt;
&lt;h2 id=&#34;more-goodies&#34;&gt;More Goodies&lt;/h2&gt;
&lt;p&gt;This morning I updated this entry after adding a &lt;code&gt;Duplicate file or directory&lt;/code&gt; command using the &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-duplicate&#34;&gt;Duplicate Action&lt;/a&gt; extension from the marketplace.  It works very nicely!&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s could be better?  Well, finding a list of &lt;a href=&#34;https://dev.to/gsdev/10-vscode-extensions-i-can-t-live-without-1i5c&#34;&gt;10 &amp;ldquo;must-have&amp;rdquo; &lt;em&gt;VSCode&lt;/em&gt; extensions&lt;/a&gt; and working my way through them!&lt;/p&gt;
&lt;h2 id=&#34;luna-paint&#34;&gt;Luna Paint&lt;/h2&gt;
&lt;p&gt;I just stumbled across another handy &lt;em&gt;VSCode&lt;/em&gt; extension, &lt;code&gt;Luna Paint&lt;/code&gt;.  I&amp;rsquo;ve installed it, took all of 2 minutes to update TWO Macs, using the guidance provided in &lt;a href=&#34;https://www.youtube.com/watch?v=I_6bZQZheC0&#34;&gt;this YouTube video&lt;/a&gt;.  It rocks!   2022-07-19T10:07:39-05:00&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;With any luck I&amp;rsquo;ll be able to use this post to perform much the same configuration on my other Macs, soon.  I promised I&amp;rsquo;d keep this long story short, so, until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Moving to Netlify CMS</title>
        <link>https://blog.summittdweller.com/posts/2021/04/moving-to-netlify-cms/</link>
        <pubDate>Sun, 04 Apr 2021 20:14:08 -0500</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/04/moving-to-netlify-cms/</guid>
        <description>&lt;p&gt;In my last post, &lt;a href=&#34;posts/2021/03/adding-netlify-to-this-blog/&#34;&gt;Adding &lt;em&gt;Netlify CMS&lt;/em&gt; for Editing This Blog&lt;/a&gt;, I was able to successfully engage the &lt;a href=&#34;https://www.netlifycms.org/&#34;&gt;&lt;em&gt;Netlify CMS&lt;/em&gt;&lt;/a&gt; with a &amp;ldquo;local&amp;rdquo; copy of this blog.  But I never got the CMS to work in production with this blog&amp;rsquo;s App on &lt;a href=&#34;https://www.digitalocean.com/&#34;&gt;&lt;em&gt;DigitalOcean&lt;/em&gt;&lt;/a&gt; (&lt;em&gt;DO&lt;/em&gt;). I should note that &lt;em&gt;DO&lt;/em&gt;&amp;rsquo;s support folks were very helpful, but in the end I think all of the client-side stuff that &lt;em&gt;Netlify CMS&lt;/em&gt; is doing was more than they were willing (capable?) of helping me overcome. That&amp;rsquo;s probably my fault more than their&amp;rsquo;s; client-side isn&amp;rsquo;t my strong suit.&lt;/p&gt;
&lt;p&gt;In the week since then I have, however, been able to stand up a new working copy of the &lt;a href=&#34;https://wieting.Tama-Toledo.com&#34;&gt;&lt;em&gt;Wieting Theatre&lt;/em&gt; website&lt;/a&gt; on &lt;a href=&#34;https://www.netlify.com/&#34;&gt;&lt;em&gt;Netlify.com&lt;/em&gt;&lt;/a&gt;, where it enjoys the same kind of automated builds and automatic deployment that I previously found at &lt;em&gt;DO&lt;/em&gt;.  The big difference, at Netlify.com my &lt;em&gt;Netlify CMS&lt;/em&gt; depoloyment works locally AND in production, giving me the ability to allow content editors, even those who don&amp;rsquo;t have a &lt;em&gt;Netlify.com&lt;/em&gt; or &lt;em&gt;GitHub&lt;/em&gt; account, to do what they do best, edit their content.&lt;/p&gt;
&lt;h2 id=&#34;the-wieting-theatres-new-site-and-the-crb&#34;&gt;The &lt;em&gt;Wieting Theatre&lt;/em&gt;&amp;rsquo;s New Site, and the &lt;em&gt;CRB&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;So this post started as a brain dump, chronicling how I got &lt;a href=&#34;https://Wieting.Tama-Toledo.com&#34;&gt;https://Wieting.Tama-Toledo.com&lt;/a&gt; to work.  But, instead of hashing out how I &amp;ldquo;did&amp;rdquo; it, I&amp;rsquo;m going to show you how I&amp;rsquo;m doing something similar, for a site that features the &lt;em&gt;Compass Rose Band&lt;/em&gt;, or &lt;em&gt;CRB&lt;/em&gt;, my brother-in-law&amp;rsquo;s band out of Cedar Rapids, Iowa.&lt;/p&gt;
&lt;h2 id=&#34;netlify-identity&#34;&gt;Netlify Identity&lt;/h2&gt;
&lt;p&gt;I think the real key to all of this is a &lt;em&gt;Netlify.com&lt;/em&gt; agent called &lt;a href=&#34;https://docs.netlify.com/visitor-access/identity/&#34;&gt;&lt;em&gt;Netlify Identity&lt;/em&gt;&lt;/a&gt;. From the &lt;em&gt;Netlify.com&lt;/em&gt; site and documentation&amp;hellip;&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
_Netlify Identity_ service brings a full suite of authentication functionality, backed by the _GoTrue_ API. This allows you to manage and authenticate users on your site or app, without requiring them to be users of _Netlify_ or any other service. You can use this for gated content, site administration, and more.
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
&lt;p&gt;In theory, &lt;em&gt;Netlify Identity&lt;/em&gt; can be deployed anywhere, but in practice, setting it up can be quite tricky (at least it was for me).  That&amp;rsquo;s where &lt;em&gt;Netlify.com&lt;/em&gt; shines, and that&amp;rsquo;s understandable since they created both &lt;em&gt;Netlify CMS&lt;/em&gt; and &lt;em&gt;Netlify Identity&lt;/em&gt;. The two creations play well together, and make life easier for a devops like me. Well played indeed.&lt;/p&gt;
&lt;p&gt;If you read my previous post you know that in a &lt;a href=&#34;https://gohugo.io&#34;&gt;&lt;em&gt;Hugo&lt;/em&gt;&lt;/a&gt; site, like this one, the &lt;code&gt;./static/admin/config.yml&lt;/code&gt; file holds all of your CMS info.  If you host content on &lt;em&gt;Netlify.com&lt;/em&gt; with &lt;em&gt;Netlify CMS&lt;/em&gt; and &lt;em&gt;Netlify Identity&lt;/em&gt; engaged, all you really need in that config file is something like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;backend:
  name: git-gateway
  branch: main
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The rest of the CMS &amp;ldquo;magic&amp;rdquo; takes place in a server-side access manager that you can find at your &lt;em&gt;Netlify.com&lt;/em&gt; site folder at &lt;code&gt;https://app.netlify.com/sites/[site-name]/identity&lt;/code&gt;.  The client-side of the access/identity equation can be handled with an app template, and you can choose from many starter templates found at &lt;a href=&#34;https://www.netlifycms.org/docs/start-with-a-template&#34;&gt;Start with a Template&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;external-oauth-without-netlifycom&#34;&gt;External OAuth without &lt;em&gt;Netlify.com&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;If you wish to proceed without using &lt;em&gt;Netlify.com&lt;/em&gt; as your host, you&amp;rsquo;ll find a number of options at &lt;a href=&#34;https://www.netlifycms.org/docs/external-oauth-clients/&#34;&gt;External OAuth Client&lt;/a&gt;. Beware, this option isn&amp;rsquo;t for a server-side guy like me, and the &lt;em&gt;Netlify.com&lt;/em&gt; option is quick, easy, and cheap&amp;hellip; at least I think so.&lt;/p&gt;
&lt;h2 id=&#34;building-a-new-compass-rose-band-site-on-netlifycom&#34;&gt;Building a New &lt;em&gt;Compass Rose Band&lt;/em&gt; Site on &lt;em&gt;Netlify.com&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Rather than rehashing the story of my &lt;em&gt;Wieting Theatre&lt;/em&gt; migration to &lt;em&gt;Netlify.com&lt;/em&gt;, I&amp;rsquo;m going to repeat that process and capture the journey while migrating our existing &lt;em&gt;Compass Rose Band&lt;/em&gt; site from &lt;em&gt;DO&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;using-netlifycom-and-one-click-hugo-cms&#34;&gt;Using &lt;em&gt;Netlify.com&lt;/em&gt; and &lt;code&gt;one-click-hugo-cms&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;From the &lt;a href=&#34;https://www.netlifycms.org/docs/start-with-a-template&#34;&gt;Start with a Template&lt;/a&gt; I clicked the &lt;code&gt;Deploy to Netlify&lt;/code&gt; button under the &amp;lsquo;Hugo Site Starter&amp;rsquo; option. This was super easy since &lt;em&gt;Netlify.com&lt;/em&gt; already knows me&amp;hellip; because I created a free account about a week ago. That selection took me to a screen where I was asked to identify a new &lt;em&gt;Github&lt;/em&gt; repostory. Again, super easy because I had already logged in to &lt;em&gt;Github&lt;/em&gt; earlier.&lt;/p&gt;
&lt;p&gt;The default name for this new repository is &lt;code&gt;one-click-hugo-cms&lt;/code&gt;, same as the template repository it will be built from. I choose to name my new repo &lt;code&gt;compass-rose-band-one-click&lt;/code&gt;, for obvious reasons. That repository can be found at &lt;a href=&#34;https://github.com/SummittDweller/compass-rose-band-one-click&#34;&gt;https://github.com/SummittDweller/compass-rose-band-one-click&lt;/a&gt; where the &lt;code&gt;README.md&lt;/code&gt; file is titled &amp;ldquo;Hugo template for Netlify CMS with Netlify Identity&amp;rdquo;. The initial repository contents looked like this:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://blog.summittdweller.com/img/one-click-hugo-cms.png&#34; alt=&#34;one-click-hugo-cms&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;replacing-the-site&#34;&gt;Replacing the &lt;code&gt;/site&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;A default &lt;em&gt;Hugo&lt;/em&gt; site is automatically built and deployed for you as part of the one-click process, and &lt;em&gt;Netlify.com&lt;/em&gt; will supply an address so you can see your creation. But that&amp;rsquo;s not the &lt;em&gt;Compass Rose Band&lt;/em&gt;! No problem, I found it quick and easy to replace the default template site by first cloning my new repo to my workstation, and replacing the &lt;code&gt;/site&lt;/code&gt; directory with my own contents.  It went like this&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd ~/GitHub&lt;/code&gt;  :left_arrow: This is where I keep local copies of all my GitHub projects.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/SummittDweller/compass-rose-band-one-click&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd compass-rose-band-one-click&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git branch -m master main&lt;/code&gt;  :left_arrow: Optional step, changes my local branch name to &amp;lsquo;main&amp;rsquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rm -fr site/*&lt;/code&gt;  :left_arrow: Remove the template site, the contents of &lt;code&gt;/site&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cp -fr ~/GitHub/compass-rose-band/* site/.&lt;/code&gt;  :left_arrow: Copy my local CRB site&lt;sup&gt;*&lt;/sup&gt; to &lt;code&gt;/site&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;sup&gt;*&lt;/sup&gt;Note that copying in the manner excludes all . files and directories, so the &lt;code&gt;.git&lt;/code&gt; folder is NOT copied. This is IMPORTANT!&lt;/p&gt;
&lt;p&gt;At this point, your old site has a new home in &lt;code&gt;./site&lt;/code&gt; so if you navigate there and do &lt;code&gt;hugo server&lt;/code&gt; you should see a local instance of the site.  Like so&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd site&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo server&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Visit &lt;code&gt;localhost:1313&lt;/code&gt;, or whatever localhost site is indicated, to see your site.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pushing-the-site-to-github&#34;&gt;Pushing the Site to &lt;em&gt;Github&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;So, now your &lt;em&gt;Netlify.com&lt;/em&gt; project lives in a directory like my &lt;code&gt;~/GitHub/compass-rose-band-one-click&lt;/code&gt;, and the corresponding &lt;em&gt;Hugo&lt;/em&gt; site contents are in the &lt;code&gt;./site&lt;/code&gt; folder there. To deploy this new copy of your site to &lt;em&gt;Netlify.com&lt;/em&gt; simply do like this&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd ~/GitHub/compass-rose-band-one-click&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -m &amp;quot;Now with CRB site contents in ./site&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;deploying-the-site-on-netlifycom&#34;&gt;Deploying the Site on &lt;em&gt;Netlify.com&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;By default, pushing your changes to &lt;em&gt;Github&lt;/em&gt; will automatically deploy them to your &lt;em&gt;Netlify.com&lt;/em&gt; site, but you pushed to &lt;code&gt;main&lt;/code&gt;, not &lt;code&gt;master&lt;/code&gt;, so no synchornization is likely. But that&amp;rsquo;s easy to fix.&lt;/p&gt;
&lt;p&gt;Navigate your browser to your &lt;em&gt;Netlify.com&lt;/em&gt; &amp;ldquo;team&amp;rdquo; page, find your new project there, and click on &lt;code&gt;Site Settings&lt;/code&gt;. Next you&amp;rsquo;ll see options for things like changing the name of your project and site.  I changed mine to &lt;code&gt;compass-rose-band-one-click&lt;/code&gt; to match my &lt;em&gt;Github&lt;/em&gt; repo name.&lt;/p&gt;
&lt;p&gt;Visit the &lt;code&gt;Build &amp;amp; Deploy&lt;/code&gt; link in the menu on the left side of the page, find the &lt;code&gt;Deploy contexts&lt;/code&gt; info and click &lt;code&gt;Edit settings&lt;/code&gt; there so you can change the production branch setting from &lt;code&gt;master&lt;/code&gt; to &lt;code&gt;main&lt;/code&gt;.  Leave the default setting of &amp;ldquo;Any pull request against your production branch / branch deploy branches&amp;rdquo; selected.&lt;/p&gt;
&lt;p&gt;Next, visit the &amp;ldquo;Deploys&amp;rdquo; page in your &lt;em&gt;Netlify.com&lt;/em&gt; project page at &lt;code&gt;https://app.netlify.com/sites/[project-name]/deploys&lt;/code&gt;, mine is &lt;a href=&#34;https://app.netlify.com/sites/compass-rose-band-one-click/deploys&#34;&gt;https://app.netlify.com/sites/compass-rose-band-one-click/deploys&lt;/a&gt;, and click the &lt;code&gt;Trigger deploy&lt;/code&gt; button there.  You should then see a log of the deployment as it runs, and this time it should target your new &lt;code&gt;main&lt;/code&gt; branch with your updated &lt;code&gt;./site&lt;/code&gt; contents.&lt;/p&gt;
&lt;p&gt;If successful you should see a screen featuring a block like this one:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://blog.summittdweller.com/img/netlify-preview-deploy.png&#34; alt=&#34;Successfuly deployed on Netlify.com&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Click on the &lt;code&gt;Preview deploy ⬈&lt;/code&gt; link and voilà, your site!&lt;/p&gt;
&lt;h2 id=&#34;nownetlify-cms&#34;&gt;Now&amp;hellip;&lt;em&gt;Netlify CMS&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s getting late on this Sunday night so I&amp;rsquo;ll share the first few lines from the latest copy of my new project&amp;rsquo;s &lt;code&gt;./site/static/admin/config.yml&lt;/code&gt; file for &lt;em&gt;Netlify CMS&lt;/em&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;backend:
  name: git-gateway
  branch: main

## To make local_backend mode work you must run &amp;#39;npx netlify-cms-proxy-server&amp;#39; in its own terminal window
##   from the project root.  See https://www.netlifycms.org/docs/beta-features/ for details.
local_backend: true

media_folder: site/static/img    
public_folder: /img
...
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;whats-all-that&#34;&gt;What&amp;rsquo;s All That?&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m back, as promised, and you&amp;rsquo;re probably asking what all that stuff in the &lt;code&gt;config.yml&lt;/code&gt; file is doing? Well, as mentioned earlier, the simple &lt;code&gt;backend:&lt;/code&gt; section (first three lines) links the CMS to the &lt;code&gt;main&lt;/code&gt; branch of our new &lt;em&gt;Github&lt;/em&gt; project.  The rest isn&amp;rsquo;t required, unless you also want to use the CMS on a local clone of the project, like when making mass edits locally.&lt;/p&gt;
&lt;p&gt;Let me try to explain.&lt;/p&gt;
&lt;h3 id=&#34;local_backend-a-netlify-cms-beta-feature&#34;&gt;&lt;code&gt;local_backend:&lt;/code&gt; A &lt;em&gt;Netlify CMS&lt;/em&gt; Beta Feature&lt;/h3&gt;
&lt;p&gt;If you visit the &lt;em&gt;Netlify CMS&lt;/em&gt;&amp;rsquo; &lt;a href=&#34;https://www.netlifycms.org/docs/beta-features/&#34;&gt;Beta Features!&lt;/a&gt; pages you&amp;rsquo;ll see &lt;code&gt;local_backend&lt;/code&gt; mentioned near the very top. [&lt;em&gt;Note that as a beta feature this information is bound to move at some point.&lt;/em&gt;] That feature enables configuration of an option to make the CMS avaialble when working locally on a cloned, presumably, copy of the &lt;em&gt;Github&lt;/em&gt; repository.  The beta documentation mentions running &lt;code&gt;npx netlify-cms-proxy-server&lt;/code&gt; as part of the process.&lt;/p&gt;
&lt;h3 id=&#34;a-local-problem-with-site--no-not-really&#34;&gt;A Local Problem with &lt;code&gt;./site&lt;/code&gt;?  No, Not Really&lt;/h3&gt;
&lt;p&gt;So, in the local clone of my new &lt;em&gt;Compass Rose Band&lt;/em&gt; one-click &lt;em&gt;Hugo&lt;/em&gt; website, the &amp;ldquo;one-click&amp;rdquo; &lt;em&gt;Netlify CMS&lt;/em&gt; parts live in the project&amp;rsquo;s root directory, and the &lt;em&gt;Hugo&lt;/em&gt; site lives just &amp;ldquo;below&amp;rdquo; it in &lt;code&gt;./site&lt;/code&gt;.  Accordingly my &lt;code&gt;media_folder:&lt;/code&gt; setting shown above includes the &lt;code&gt;site/&lt;/code&gt; prefix, and the same is true of all the &lt;code&gt;config.yml&lt;/code&gt; keys that end in &lt;code&gt;folder:&lt;/code&gt;.  This is correct for production, and it also works with a local clone IF I launch things correctly!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hugo&lt;/em&gt; and the &lt;code&gt;hugo server&lt;/code&gt; command that I need to preview local changes demands that I either &lt;code&gt;cd site&lt;/code&gt; before I run it, or override the command&amp;rsquo;s path by specifying &lt;code&gt;hugo server -s site&lt;/code&gt;.  Only this 2nd approach works!&lt;/p&gt;
&lt;p&gt;So the process that&amp;rsquo;s needed for local development and testing, including &lt;em&gt;Netlify CMS&lt;/em&gt; looks like this for me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If I don&amp;rsquo;t yet have the project locally I will begin with&amp;hellip;
&lt;code&gt;cd ~/GitHub; git clone --recursive https://github.com/SummittDweller/compass-rose-band-one-click; cd compass-rose-band-one-click&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If I already have a local clone I&amp;rsquo;ll do this&amp;hellip;
&lt;code&gt;cd ~/GitHub/compass-rose-band-one-click; git pull&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From here on out there&amp;rsquo;s just one process, like so&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npx netlify-cms-proxy-server&lt;/code&gt;   :left_arrow: In a new terminal window. See next section of this post.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;atom .&lt;/code&gt;  :left_arrow: Launch &lt;em&gt;Atom&lt;/em&gt; in the working directory.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo server -s site&lt;/code&gt;  :left_arrow: &lt;strong&gt;Important:&lt;/strong&gt; Don&amp;rsquo;t forget the &lt;code&gt;-s site&lt;/code&gt; option!&lt;/li&gt;
&lt;li&gt;Create and edit files as needed. Changes should be immediately visible in &lt;code&gt;http://localhost:1313&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To edit or create content using &lt;em&gt;Netlify CMS&lt;/em&gt;, just visit &lt;code&gt;http://localhost:1313/admin/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;When all changes are complete&amp;hellip;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -m &amp;quot;a brief message here&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;requires-npx-part-of-nodejs&#34;&gt;Requires &lt;em&gt;npx&lt;/em&gt;, Part of &lt;em&gt;Node.js&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;npx&lt;/code&gt; command mentioned above requires that &lt;em&gt;npx&lt;/em&gt; be installed, and it&amp;rsquo;s part of &lt;em&gt;Node.js&lt;/em&gt;.  To make it run properly I followed guidance from &lt;a href=&#34;https://treehouse.github.io/installation-guides/mac/node-mac.html&#34;&gt;https://treehouse.github.io/installation-guides/mac/node-mac.html&lt;/a&gt; to ensure both were installed.  In at least one instance I also had to run &lt;code&gt;brew upgrade node&lt;/code&gt; and &lt;code&gt;npm i -g npx&lt;/code&gt; to ensure that &lt;em&gt;Node.js&lt;/em&gt; was up-to-date, and that &lt;em&gt;npx&lt;/em&gt; was available as needed.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;npx netlify-cms-proxy-server&lt;/code&gt;, loads and runs the &lt;em&gt;netlify-cms-proxy-server&lt;/em&gt; script, and in doing so it will tie up your terminal window.  So, it&amp;rsquo;s best to &lt;strong&gt;do this in a separate terminal window!&lt;/strong&gt;  Don&amp;rsquo;t put the command in the background (using a &lt;code&gt;&amp;amp;&lt;/code&gt; flag at the end) as this won&amp;rsquo;t allow you to see if the command is working properly. When you run this command you should see some feedback from the script indicating what it is doing. The script binds to your working directory then effectively routes all &lt;em&gt;Netlify CMS&lt;/em&gt; actions, performed in this instance via &lt;code&gt;http://localhost:1313/admin/&lt;/code&gt;, to the local &lt;em&gt;git&lt;/em&gt; repo there.&lt;/p&gt;
&lt;h2 id=&#34;ok-now-we-need-a-proper-domain&#34;&gt;Ok, Now We Need a Proper Domain&lt;/h2&gt;
&lt;p&gt;So, in its original form the &lt;em&gt;Compass Rose Band&lt;/em&gt; site is aliased to three different domains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://compassroseband.net&#34;&gt;https://compassroseband.net&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thecompassroseband.com&#34;&gt;https://thecompassroseband.com&lt;/a&gt;, and&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thecompassroseband.net&#34;&gt;https://thecompassroseband.net&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I choose to try migrating these domains to the new &lt;em&gt;Netlify.com&lt;/em&gt; site one-at-a-time, starting with the least-used domain, &lt;em&gt;thecompassroseband.net&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;To do this I started by visiting my &lt;em&gt;Netlify.com&lt;/em&gt; account/team and the &lt;code&gt;Domains&lt;/code&gt; menu, then my project-specific domain settings at &lt;a href=&#34;https://app.netlify.com/teams/summittdweller/dns/thecompassroseband.net&#34;&gt;https://app.netlify.com/teams/summittdweller/dns/thecompassroseband.net&lt;/a&gt;.  In this page I&amp;rsquo;m given a list of 4 &lt;em&gt;Netlify.com&lt;/em&gt; name servers that I can use for this particular project.  I made note of the four before moving on.&lt;/p&gt;
&lt;p&gt;Next step was to visit my registrar, &lt;em&gt;enom.com&lt;/em&gt;, where I have a control screen for editing DNS records and name servers.  I set the name server values for &lt;em&gt;thecompassroseband.net&lt;/em&gt; there to the values that &lt;em&gt;Netlify.com&lt;/em&gt; provided. And then, we wait&amp;hellip; for the changes to propogate.&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;em&gt;Netlify.com&lt;/em&gt; is on the ball&amp;hellip; when I visit my new site&amp;rsquo;s domain controls page, &lt;a href=&#34;https://app.netlify.com/sites/compass-rose-band-one-click/settings/domain&#34;&gt;https://app.netlify.com/sites/compass-rose-band-one-click/settings/domain&lt;/a&gt;, I find a widget that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://blog.summittdweller.com/img/netlify-dns-propogation.png&#34; alt=&#34;DNS Propogation&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;The cog behind &amp;ldquo;Waiting on DNS propagation&amp;rdquo; is spinning while &lt;em&gt;Netlify.com&lt;/em&gt; waits for the transfer to happen.  So, I&amp;rsquo;m going to go for a walk and see what that cog looks like in an hour or two.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Clear as mud?  Give it a try, and hopefully it will begin to make sense.  Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Adding Netlify CMS for Editing This Blog</title>
        <link>https://blog.summittdweller.com/posts/2021/03/adding-netlify-to-this-blog/</link>
        <pubDate>Sat, 27 Mar 2021 02:40:11 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/03/adding-netlify-to-this-blog/</guid>
        <description>&lt;p&gt;OK, I&amp;rsquo;m using the &amp;ldquo;&lt;em&gt;Rich Text&lt;/em&gt;&amp;rdquo; editor option in the body field here in my &amp;ldquo;posts&amp;rdquo; &lt;strong&gt;Netlify CMS&lt;/strong&gt; form for &lt;a href=&#34;https://blog.SummittDweller.com&#34;&gt;this blog&lt;/a&gt;.  Will it work?  We shall see!&lt;/p&gt;
&lt;h2 id=&#34;yup&#34;&gt;Yup!&lt;/h2&gt;
&lt;p&gt;I have to confess, this is pretty cool.  I&amp;rsquo;m even able to switch dynamically between the &lt;em&gt;Rich Text&lt;/em&gt; and &lt;em&gt;Markdown&lt;/em&gt; editors here!&lt;/p&gt;
&lt;h1 id=&#34;how-was-this-done&#34;&gt;How Was This Done?&lt;/h1&gt;
&lt;p&gt;Let me elaborate just a bit&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;using-hugo&#34;&gt;Using Hugo&lt;/h2&gt;
&lt;p&gt;Since this blog is published using &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; I looked to the Netlify CMS guidance provided at &lt;a href=&#34;https://www.netlifycms.org/docs/hugo/&#34;&gt;https://www.netlifycms.org/docs/hugo/&lt;/a&gt; for help.&lt;/p&gt;
&lt;p&gt;First I added the requested &lt;code&gt;./static/admin&lt;/code&gt; directory, and the two files required there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt;, and&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config.yml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;indexhtml&#34;&gt;index.html&lt;/h3&gt;
&lt;p&gt;The contents of my &lt;code&gt;index.html&lt;/code&gt; file is identical to what&amp;rsquo;s called for in the documentation.  Easy.  I like.&lt;/p&gt;
&lt;h3 id=&#34;configyml&#34;&gt;config.yml&lt;/h3&gt;
&lt;p&gt;This file demands considerable customization, so I turned to more &lt;em&gt;Netlify CMS&lt;/em&gt; documentation regarding &lt;a href=&#34;https://www.netlifycms.org/docs/widgets&#34;&gt;Widgets&lt;/a&gt; and the &lt;a href=&#34;https://www.netlifycms.org/docs/github-backend/&#34;&gt;Github Backend&lt;/a&gt; that I already use.&lt;/p&gt;
&lt;p&gt;As a result, my &lt;code&gt;config.yml&lt;/code&gt; file looks like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;backend:
  name: github
  repo: SummittDweller/blogs-SummittDweller
  branch: main 

media_folder: &amp;#39;static/img&amp;#39;
public_folder: /img

collections:
  - name: &amp;#39;posts&amp;#39;
    label: &amp;#39;Post&amp;#39;
    folder: &amp;#39;content/posts&amp;#39;
    create: true
    slug: &amp;#39;{{slug}}&amp;#39;
    path: &amp;#39;{{year}}/{{month}}/{{slug}}&amp;#39;
    preview_path: &amp;#39;{{year}}/{{month}}/{{slug}}&amp;#39;
    preview_path_date_field: publishDate
    sortable_fields: [ &amp;#39;publishDate&amp;#39;, &amp;#39;lastmod&amp;#39; ]
    sort: &amp;#39;publishDate:desc&amp;#39;
    view_groups:
      - label: Year
        field: publishDate
        # groups items based on the value matched by the pattern
        pattern: \d{4}
      - label: Drafts
        field: draft
    editor:
      preview: true
    fields:
      - label: Title
        name: title
      - label: Body
        name: body
        widget: markdown 
      - label: Publish Date
        name: publishDate
        widget: date      
      - label: Last Mod
        name: lastmod
        widget: datetime
      - label: Location
        name: location
        default: &amp;#39;Toledo, IA&amp;#39;
        required: false
      - label: Weight
        name: weight
        height: &amp;#34;Enter today&amp;#39;s date with a leading dash, like -YYYYMMDD.&amp;#34;
        required: true
        # default: -{{year}}{{month}}{{day}}
      - label: Draft Status
        name: draft
        widget: boolean
        default: false 
      - label: Description
        name: description
        required: false
      - label: Tags
        name: tags
        widget: list
        hint: &amp;#39;Enter comma separated values.&amp;#39;
        required: false
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;simple--elegant&#34;&gt;Simple = Elegant&lt;/h2&gt;
&lt;p&gt;At this moment I&amp;rsquo;m running &lt;code&gt;hugo server&lt;/code&gt; on my Mac and I&amp;rsquo;m editing this post in &lt;code&gt;https://localhost:1313/admin&lt;/code&gt;, basically in the &lt;em&gt;admin&lt;/em&gt; page of my blog on my localhost.  Beautimous!&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Time for a Test Page</title>
        <link>https://blog.summittdweller.com/posts/2021/03/time-for-a-test-page/</link>
        <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/03/time-for-a-test-page/</guid>
        <description>&lt;p&gt;My daughter, Mackenzie, and I have been using this blog for testing new features lately. If you&amp;rsquo;ve been following me here you&amp;rsquo;ve seen some of them pop-up on the home page. Now that we have a host of them working, I need to move some out&amp;ndash;of-the-way so they don&amp;rsquo;t clutter things up too much.  However, I don&amp;rsquo;t want to discard them, in some cases we didn&amp;rsquo;t implement them anywhere else so this is the only &lt;em&gt;working&lt;/em&gt; copy we have.&lt;/p&gt;
&lt;p&gt;So, this morning I found a post at &lt;a href=&#34;%5Bhttps://formcake.com/&#34;&gt;formcake&lt;/a&gt;, titled &lt;a href=&#34;https://formcake.com/blog/adding-a-single-page-to-hugo&#34;&gt;How to add a Static Page to Hugo&lt;/a&gt; by Joe Marshall.  I&amp;rsquo;m going to follow Joe&amp;rsquo;s lead and try to add a static &amp;ldquo;Testing&amp;rdquo; page here. If I&amp;rsquo;m successful, it will become the new home for 3 features (and maybe more in the future), specifically:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;em&gt;markdown&lt;/em&gt; (.md) file fetched from Dropbox,&lt;/li&gt;
&lt;li&gt;A summary of my public gists, and&lt;/li&gt;
&lt;li&gt;My latest &lt;em&gt;Tweet&lt;/em&gt;, with automatic, timed expiration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These three features currently look like this on my home page:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://blog.summittdweller.com/img/Hugo-features-03-07-2021.png&#34;&gt;&lt;figcaption&gt;
       &lt;h4&gt;3 Features, Time for a New Home&lt;/h4&gt;
     &lt;/figcaption&gt;
 &lt;/figure&gt;

&lt;h2 id=&#34;it-worked-almost&#34;&gt;It Worked, Almost&lt;/h2&gt;
&lt;p&gt;I did indeed manage to make this work, but not quite as Joe proposed. I found that in &lt;a href=&#34;https://formcake.com/blog/adding-a-single-page-to-hugo&#34;&gt;How to add a Static Page to Hugo&lt;/a&gt; there&amp;rsquo;s some confusion around the name of the &lt;code&gt;.html&lt;/code&gt; file that Joe calls for. In at least one place the file is named &lt;code&gt;/layouts/_default/singlepage.html&lt;/code&gt;, but in fact the file should be named &lt;code&gt;/layouts/_default/staticpage.html&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The other issue I encountered was my fault. My implementation of this &amp;ldquo;testing&amp;rdquo; page means that I need to include not just text or markdown content, I also need quite a bit of code, mostly Javascript. So, in my case I duplicated the &lt;code&gt;/layouts/_default/staticpage.html&lt;/code&gt; template, calling it &lt;code&gt;/layouts/_default/testpage.html&lt;/code&gt;.  My &lt;code&gt;code&lt;/code&gt; appears in this new template file. I also changed the content &amp;ldquo;type&amp;rdquo; in the frontmatter of &lt;code&gt;/content/testing.md&lt;/code&gt; from &amp;ldquo;staticpage&amp;rdquo; to &amp;ldquo;testpage&amp;rdquo;.  And voilá&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;it-just-works&#34;&gt;It Just Works!&lt;/h2&gt;
&lt;p&gt;You can find the results on my &lt;a href=&#34;https://blog.summittdweller.com/testing/&#34;&gt;Testing Page&lt;/a&gt;. Enjoy.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>A Simple Sign-up Form</title>
        <link>https://blog.summittdweller.com/posts/2021/03/a-simple-signup-form/</link>
        <pubDate>Sat, 06 Mar 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/03/a-simple-signup-form/</guid>
        <description>&lt;p&gt;For 2021 I&amp;rsquo;ve signed on to be a member of the steering committee for Toledo&amp;rsquo;s 2021 &lt;a href=&#34;https://www.communityvisioning.org/toledo/&#34;&gt;Community Visioning (CV)&lt;/a&gt; project coordinated by &lt;a href=&#34;http://www.treesforever.org/IowasLivingRoadways&#34;&gt;Tree&amp;rsquo;s Forever and Iowa&amp;rsquo;s Living Roadways&lt;/a&gt;, &lt;a href=&#34;https://www.extension.iastate.edu/&#34;&gt;Iowa State University Extension and Outreach&lt;/a&gt;, and other partners.  Tama is also a &lt;a href=&#34;https://www.communityvisioning.org/tama/&#34;&gt;Community Visioning&lt;/a&gt; participant in 2021.&lt;/p&gt;
&lt;h2 id=&#34;a-simple-e-mail-sign-up&#34;&gt;A Simple E-Mail Sign-Up&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m only posting this as a test of what I think might be a very simple sign-up form using email.  What you see below is just a test, so please don&amp;rsquo;t expect any invitation from this!&lt;/p&gt;
&lt;h3 id=&#34;this-form-is-for-testing-only&#34;&gt;This Form is for Testing ONLY!&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Are you interested in helping Toledo plan for the future with regard to transportation and recreation?&lt;/strong&gt; Click ONE of the following links to receive an invitation by email to join a 90-minute online focus group on Saturday, March 6:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;mailto:mark.mcfate@icloud.com?subject=Toledo:Active%20Adult&amp;amp;body=Please%20send%20this%20email%20to%20confirm%20your%20interest.%20Thank%20You!&#34;&gt;&lt;strong&gt;Active Adult&lt;/strong&gt; - 10:30am-Noon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;mailto:mark.mcfate@icloud.com?subject=Toledo:Youth&amp;amp;body=Please%20send%20this%20email%20to%20confirm%20your%20interest.%20Thank%20You!&#34;&gt;&lt;strong&gt;Youth to Age 12&lt;/strong&gt; - Noon-1:30pm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;mailto:mark.mcfate@icloud.com?subject=Toledo:Young%20Adult&amp;amp;body=Please%20send%20this%20email%20to%20confirm%20your%20interest.%20Thank%20You!&#34;&gt;&lt;strong&gt;Young Adult Ages 13-21&lt;/strong&gt; - 1:30pm-3pm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Remember, this is just a TEST!&lt;/em&gt;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>One of Many Challenges</title>
        <link>https://blog.summittdweller.com/posts/2021/02/one-of-many-challenges/</link>
        <pubDate>Sat, 20 Feb 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/02/one-of-many-challenges/</guid>
        <description>&lt;p&gt;For 2021 I&amp;rsquo;ve signed on to be a member of the steering committee for Toledo&amp;rsquo;s 2021 &lt;a href=&#34;https://www.communityvisioning.org/toledo/&#34;&gt;Community Visioning (CV)&lt;/a&gt; project coordinated by &lt;a href=&#34;http://www.treesforever.org/IowasLivingRoadways&#34;&gt;Tree&amp;rsquo;s Forever and Iowa&amp;rsquo;s Living Roadways&lt;/a&gt;, &lt;a href=&#34;https://www.extension.iastate.edu/&#34;&gt;Iowa State University Extension and Outreach&lt;/a&gt;, and other partners.  Tama is also a &lt;a href=&#34;https://www.communityvisioning.org/tama/&#34;&gt;Community Visioning&lt;/a&gt; participant in 2021.&lt;/p&gt;
&lt;h2 id=&#34;i-like-to-walk&#34;&gt;I Like to Walk&lt;/h2&gt;
&lt;p&gt;I try to get outside and walk as much as I can, but I especially like walking with a purpose&amp;hellip; not just walking for the sake of exercise or stress-relief. I guess that&amp;rsquo;s also why I dislike walking indoors on a treadmill, or the &amp;ldquo;dreadmill&amp;rdquo; as I like to call it. So, if I have somewhere to go in Tama-Toledo I&amp;rsquo;ll walk there and back whenever possible. Fortunately, my home in Toledo is geographically centered between the two communities.  If you draw a 1.5-mile radius circle around my house it will include ALL of the two communities. It&amp;rsquo;s ideal for walking, except for the hills &amp;#x1f304;, and the &lt;strong&gt;challenge of finding a safe route&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;formidable-challenges&#34;&gt;Formidable Challenges&lt;/h2&gt;
&lt;p&gt;Tama-Toledo does have some nice sidewalks and trails that I try to take advantage of when I walk; however, there are three &lt;strong&gt;BIG&lt;/strong&gt; challenges to using them safely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gaps,&lt;/li&gt;
&lt;li&gt;Lack of Safe Crossings, and&lt;/li&gt;
&lt;li&gt;Snow.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;gaps&#34;&gt;Gaps&lt;/h3&gt;
&lt;p&gt;This challenge is going to be difficult to explain in detail at this time.  Why, you ask?  Because I really need a map to do it justice, and probably some photos too.  I don&amp;rsquo;t have a good map at this time, but I hope that the Tama and Toledo CV teams will come up with one (or two) soon. I&amp;rsquo;d also like to collect and post some photos, but there&amp;rsquo;s about a foot of snow covering everything, and I do mean everything (see below), right now.&lt;/p&gt;
&lt;h3 id=&#34;lack-of-safe-crossings&#34;&gt;Lack of Safe Crossings&lt;/h3&gt;
&lt;p&gt;Tama-Toledo, and my home, are situated at the intersection of two major highways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;US Highway 30, running east-west, and&lt;/li&gt;
&lt;li&gt;US Highway 63, running north-south.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ll write more about these two obstacles later, when I have that map.&lt;/p&gt;
&lt;h3 id=&#34;snow-&#34;&gt;Snow ❄️&lt;/h3&gt;
&lt;p&gt;I should probably include rain in this paragraph too, and the mud that naturally comes with either snow or rain, in locations where there is no pavement (that&amp;rsquo;s a gap!). I think everyone can agree that safely traversing any wet surface can be a challenge, espeically where there&amp;rsquo;s no pavement.  Anyone who&amp;rsquo;s experienced winter in the upper-midwest also knows that snow and ice make that challenge even greater, even where there is pavement!&lt;/p&gt;
&lt;h4 id=&#34;20-feb-2021&#34;&gt;20-Feb-2021&lt;/h4&gt;
&lt;p&gt;This morning my daugther called and asked if I could bring her a USB &amp;ldquo;printer cable&amp;rdquo;; she&amp;rsquo;s volunteering at a local &lt;a href=&#34;https://www.facebook.com/southtamaarchery/&#34;&gt;youth archery tournament&lt;/a&gt; at the South Tama County High School, less than 1/2-mile from my home. A perfect opportunity for a short walk! There are no sidewalks on my street (another gap) but the roadway is not too busy so that&amp;rsquo;s okay. There is a nice sidewalk that runs part of the way (yup, another gap!) from my street to the High School along US 63, so that&amp;rsquo;s also helpful. Unfortunately, the photos I&amp;rsquo;m including below show the condition of that sidewalk on this lovely Saturday morning.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.cdn.digitaloceanspaces.com/blogs-SummittDweller/4FF7047A-0A7B-4A55-B62B-46FF4B200C57_1_105_c.jpeg&#34; alt=&#34;Sidewalk on US 63 at Summitt Street - Looking North&#34;&gt;
  &lt;figcaption&gt;There&amp;#39;s a sidewalk under there somewhere&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.cdn.digitaloceanspaces.com/blogs-SummittDweller/4FAD6EDE-0D09-4CB0-836A-4D181AD667CF_1_105_c.jpeg&#34; alt=&#34;Sidewalk on US 63 at Summitt Street - Looking South&#34;&gt;
  &lt;figcaption&gt;You&amp;#39;ll just have to take my word for it&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s about 1/2-mile segment of sidewalk, some would say &amp;ldquo;to nowhere&amp;rdquo;, along this side of US 63 in Toledo.  The north end of the segment terminates at 2nd Ave. in Toledo, but there&amp;rsquo;s no sidewalk on the north side of that intersection, nor any to the north &lt;strong&gt;for more than a mile!&lt;/strong&gt;  The south end of the segment terminates, literally in the middle of a field, presumably at the city&amp;rsquo;s shared boundary with Tama.  Fortunately, on the west side of US 63 there&amp;rsquo;s an infrequently-used access/frontage road and it&amp;rsquo;s paved to provide access to some South Tama High School athletic fields. &lt;em&gt;It&amp;rsquo;s ironic, you can&amp;rsquo;t safely walk to school because there are so few sidewalks, but there&amp;rsquo;s a paved drive to the the baseball diamond, where there&amp;rsquo;s no place to park.&lt;/em&gt; 😦&lt;/p&gt;
&lt;p&gt;The entire length of this sidewalk is covered in snow, and I can&amp;rsquo;t recall any time this winter when any portion of it has been cleared. 😦 In fact, the snow here is exceptionally deep and difficult to walk trough because it includes everything that the snow plows have churned up. 😦😦 Spring can&amp;rsquo;t come soon enough for me!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I&amp;rsquo;ll post more regarding gaps and crossings as soon as I have that map and maybe some photos.&lt;/em&gt;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>5-Inch HDMI Raspberry Pi Touch Screen</title>
        <link>https://blog.summittdweller.com/posts/2021/02/5-inch-hdmi-rpi-touch-screen/</link>
        <pubDate>Fri, 05 Feb 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/02/5-inch-hdmi-rpi-touch-screen/</guid>
        <description>&lt;p&gt;A couple of years have now passed since I purchased an &lt;a href=&#34;https://www.amazon.com/Elecrow-Display-Monitor-800x480-Raspberry/dp/B013JECYF2/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=mmjjg-20&amp;amp;linkId=df2d8e154ca1d5ca9fb992d34677ebd3&#34;&gt;Elecrow 5&amp;quot; HDMI Touchscreen display for the Raspberry Pi&lt;/a&gt; and put it to use.  I even 3D printed a very nice case for it.  So, there&amp;rsquo;s a bit of configuration code on the SD card that can be edited to determine if the 5&amp;quot; screen is active, or if the RPI&amp;rsquo;s output is directed to its HDMI output port.  Well, in the last 2 years I forgot what to edit and what changes to make.&lt;/p&gt;
&lt;p&gt;Fortunately, when I went looking for some info to refresh my memory, I found a great resource&amp;hellip; a review posted in 2016 from none other than &lt;a href=&#34;https://www.jeffgeerling.com/&#34;&gt;Jeff Geerling&lt;/a&gt;, aka &lt;a href=&#34;https://github.com/geerlingguy&#34;&gt;geerlingguy&lt;/a&gt;.  His review/blog post is &lt;a href=&#34;https://www.jeffgeerling.com/blog/2016/review-elecrow-hdmi-5-800x480-tft-display-xpt2046-touch-controller&#34;&gt;Review: Elecrow HDMI 5&amp;quot; 800x480 TFT Display with XPT2046 Touch Controller&lt;/a&gt;.  In case Jeff&amp;rsquo;s post should ever disappear, here&amp;rsquo;s the a key piece of info that I needed to jog my memory:&lt;/p&gt;
&lt;!-- hugo: layouts/shortcodes/original.html --&gt;
&lt;div class=&#34;original&#34;&gt;
## Getting full resolution over HDMI
&lt;p&gt;When I first booted the Pi attached to the display, there was a large white area on the right, and only the left portion of the screen was being used by the Pi (it was only using 640x480 of the 800x480 display). To fix this, you have to set a few display options in the configuration file the Raspberry Pi reads during startup to switch certain hardware settings.&lt;/p&gt;
&lt;p&gt;Edit /boot/config.txt (either while booted into Raspbian, or on another computer directly on the microSD card), making sure the following values are set:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# uncomment if you get no picture on HDMI for a 
# default &amp;#34;safe&amp;#34; mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused 
# pixels visible and your display can output without overscan
disable_overscan=0

# uncomment if hdmi display is not detected and composite 
# is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt=800 480 60 6 0 0 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reboot the Pi either via the UI or by entering sudo reboot in the Terminal. Once rebooted, the Pi should fill up the full 800x480 display.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: If the Pi boots up to a funny-looking screen and you can&amp;rsquo;t see anything, you can either reformat the microSD card, or pull it, edit the /boot/config.txt file from another computer to fix it, and put it back in the Pi.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;!-- /hugo: layouts/shortcodes/original.html --&gt;
</description>
      </item>
      
    
      
      <item>
        <title>My MQTT Weekend</title>
        <link>https://blog.summittdweller.com/posts/2021/01/my-mqtt-weekend/</link>
        <pubDate>Sun, 31 Jan 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/01/my-mqtt-weekend/</guid>
        <description>&lt;p&gt;Now that I&amp;rsquo;ve cleared the driveway of the latest snowfall, I am officially declaring this to be &amp;ldquo;&lt;strong&gt;My MQTT Weekend&lt;/strong&gt;&amp;rdquo;.  It actually started on Friday night, the weekend, not the snow.  Rather than posting a lot of gibberish here, I&amp;rsquo;ll just point you to my project repo at &lt;a href=&#34;https://github.com/SummittDweller/Motorized_MQTT_Blinds&#34;&gt;https://github.com/SummittDweller/Motorized_MQTT_Blinds&lt;/a&gt; and especially the &lt;a href=&#34;https://github.com/SummittDweller/Motorized_MQTT_Blinds#additional-resources&#34;&gt;Additional Resources&lt;/a&gt; portion of the &lt;em&gt;README.md&lt;/em&gt; file there.  If/when I get this all working maybe I will post some photos, maybe.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Paperless-ng on CentOS7</title>
        <link>https://blog.summittdweller.com/posts/2021/01/paperless-ng-on-centos7/</link>
        <pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/01/paperless-ng-on-centos7/</guid>
        <description>&lt;p&gt;Over the end-of-year holiday break in 2020 I managed to ressurect my old home-office CentOS 7 development server.  I had a mind salvage and update &lt;a href=&#34;https://github.com/the-paperless-project/paperless&#34;&gt;Paperless&lt;/a&gt; on that server, and I did manage to do that.  However, along the way I discovered the &lt;em&gt;Paperless-ng&lt;/em&gt; branch of the project and I installed it, using &lt;em&gt;Docker&lt;/em&gt; as suggested, by creating a new project and configuration I&amp;rsquo;ve saved as &lt;a href=&#34;https://github.com/SummittDweller/paperless-ng-dockerfiles&#34;&gt;summittdweller/paperless-ng-dockerfiles&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;mounting-my-readynas-share&#34;&gt;Mounting my ReadyNAS Share&lt;/h2&gt;
&lt;p&gt;To successfully mount my &lt;em&gt;ReadyNAS/Paperless&lt;/em&gt; SMB share I had to do the following on &lt;em&gt;centos7&lt;/em&gt; as &lt;em&gt;root&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mount -t cifs -o username=mark,vers=1.0 //192.168.1.48/Paperless /mnt/paperless
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Unfortunately, this did NOT work!  Everything appeeared to be working properly except that files copied into &lt;em&gt;//ReadyNAS/Paperless/consume&lt;/em&gt; were NOT shared into the container as mapped, so no ingest was triggered.  I could only get the ingest to start if I used &lt;em&gt;docker cp&amp;hellip;&lt;/em&gt; to copy the files into the mapped &lt;em&gt;./consume&lt;/em&gt; directory.&lt;/p&gt;
&lt;h2 id=&#34;mounting-homemarkpaperless-ng-to-support-ingest&#34;&gt;Mounting &lt;em&gt;/home/mark/paperless-ng&lt;/em&gt; To Support Ingest&lt;/h2&gt;
&lt;p&gt;So, I turned to &lt;a href=&#34;https://devopspoints.com/centos-7-setting-up-samba-and-nfs-for-file-sharing.html&#34;&gt;https://devopspoints.com/centos-7-setting-up-samba-and-nfs-for-file-sharing.html&lt;/a&gt; for setup of SAMBA on &lt;em&gt;CentOS7&lt;/em&gt; at &lt;em&gt;192.168.1.22&lt;/em&gt; with hopes that I could mount &lt;em&gt;/home/mark/paperless-ng/consume&lt;/em&gt; and get Paperless auto-ingest working.&lt;/p&gt;
&lt;p&gt;It works!  In fact, it works quite well.&lt;/p&gt;
&lt;p&gt;Paperless-ng is configured to watch for changes in &lt;em&gt;/home/mark/paperless-ng/consume&lt;/em&gt; and will ingest any unique .pdf files dropped there.  Note that &lt;em&gt;Paperless-ng&lt;/em&gt; is smart enough to keep track of all the files it has ingested so it won&amp;rsquo;t knowingly ingest a duplicate.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s worth noting that there is also a &lt;em&gt;/home/mark/paperless-ng/exported&lt;/em&gt; directory where regular exports of Paperless documents can be kept before back-up to &lt;em&gt;//ReadyNAS&lt;/em&gt; storage.&lt;/p&gt;
&lt;h2 id=&#34;still-no-good&#34;&gt;Still NO Good&lt;/h2&gt;
&lt;p&gt;So, the network configuration indicated above appears to work when copying files from a Mac into the target share, &lt;em&gt;/home/mark/paperless-ng/consume&lt;/em&gt;.  Unfortunately I&amp;rsquo;ve had NO luck whatsoever getting my &lt;em&gt;Brother ADS-1500W&lt;/em&gt; scanner to network with ANYTHING.  The setup seems just fine, but whatever I scan eventually gives me a &amp;ldquo;Send Failed&amp;rdquo; message with NO other explanation.&lt;/p&gt;
&lt;p&gt;After spending many, many, many hours dealing with this I have officially given up!&lt;/p&gt;
&lt;h2 id=&#34;a-new-usb-workflow&#34;&gt;A New USB Workflow&lt;/h2&gt;
&lt;p&gt;My &lt;em&gt;Brother ADS-1500W&lt;/em&gt; scanner supports a number of transfer options including USB. There&amp;rsquo;s only one USB port on the back of the scanner so it&amp;rsquo;s relatively foolproof.&lt;/p&gt;
&lt;p&gt;To engage this workflow I formatted a USB stick as &lt;em&gt;FAT32&lt;/em&gt; and named it &lt;em&gt;PAPERLESS&lt;/em&gt;.  When this stick is inserted into the scanner a &lt;em&gt;BROTHER&lt;/em&gt; directory is created and scans named &lt;em&gt;mmddyynn.pdf&lt;/em&gt; are generated there.&lt;/p&gt;
&lt;p&gt;Once a set of documents has been scanned using the &lt;em&gt;to USB&lt;/em&gt; profile, the USB stick can be removed from the scanner and plugged in to any &lt;em&gt;CentOS7&lt;/em&gt; USB input port.  The &lt;em&gt;PAPERLESS&lt;/em&gt; volume will automatically appear on the desktop and all that one must do is copy/paste (select and drag) each of the .pdf files from &lt;em&gt;/mnt/paperless/BROTHER&lt;/em&gt; to the target &lt;em&gt;consume&lt;/em&gt; diretory at &lt;em&gt;/home/mark/paperless-ng/consume&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;modifying-inotify-in-centos-7&#34;&gt;Modifying &lt;em&gt;inotify&lt;/em&gt; in CentOS 7&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;~/Desktop/README.md&lt;/em&gt; file on node &lt;em&gt;centos7&lt;/em&gt; documents a necessary step that I discovered as the key to making &lt;em&gt;Paperless&lt;/em&gt; consume/ingest process work.  The commands are:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat /proc/sys/fs/inotify/max_user_watches          # default is 8192
sudo sysctl fs.inotify.max_user_watdhes=1048576    # necessary increase
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;starting-and-stopping-paperless-ng&#34;&gt;Starting and Stopping &lt;em&gt;Paperless-ng&lt;/em&gt;&lt;/h2&gt;
&lt;h3 id=&#34;starting-paperless-ng&#34;&gt;Starting &lt;em&gt;Paperless-ng&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Simple, to start it on &lt;em&gt;CentOS7&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /home/mark/GitHub/paperless-ng-dockerfiles
docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or, simply reboot &lt;em&gt;CentOS7&lt;/em&gt;.  See auto-start details in the section below.&lt;/p&gt;
&lt;h3 id=&#34;stopping-paperless-ng&#34;&gt;Stopping &lt;em&gt;Paperless-ng&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Also simple, on &lt;em&gt;CentOS7&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /home/mark/GitHub/paperless-ng-dockerfiles
docker-compose down
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;auto-starting-paperless-ng&#34;&gt;Auto-Starting &lt;em&gt;Paperless-ng&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;I found and followed &lt;a href=&#34;https://www.thegeekdiary.com/centos-rhel-7-how-to-make-custom-script-to-run-automatically-during-boot/&#34;&gt;this resource&lt;/a&gt; to create a boot-time auto-start script to configure and launch &lt;em&gt;Paperless-ng&lt;/em&gt; whenever &lt;em&gt;CentOS7&lt;/em&gt; is booted.  My script is &lt;em&gt;/var/tmp/startup_script.sh&lt;/em&gt; and the process of running it echoes some output to &lt;em&gt;/var/tmp/script.out&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I saved the script as a &lt;a href=&#34;https://gist.github.com/SummittDweller/9e179f948faf0d30fe8069f684b7d762&#34;&gt;public gist&lt;/a&gt; for safe-keeping.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>CentOS 7 Remote Using VNC</title>
        <link>https://blog.summittdweller.com/posts/2021/01/centos7-remote/</link>
        <pubDate>Mon, 04 Jan 2021 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2021/01/centos7-remote/</guid>
        <description>&lt;p&gt;This past weekend I managed to get a &lt;em&gt;VNC&lt;/em&gt; server running on my &lt;strong&gt;centos7&lt;/strong&gt; node, where I run &lt;em&gt;Paperless&lt;/em&gt;.  The build instructions came from &lt;a href=&#34;https://www.howtoforge.com/vnc-server-installation-on-centos-7&#34;&gt;https://www.howtoforge.com/vnc-server-installation-on-centos-7&lt;/a&gt;. The node is available at &lt;code&gt;192.168.1.22:5901&lt;/code&gt;.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Thanksgiving 2020</title>
        <link>https://blog.summittdweller.com/posts/2020/11/thankful-for-family/</link>
        <pubDate>Thu, 26 Nov 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/11/thankful-for-family/</guid>
        <description>&lt;p&gt;Sorry, I&amp;rsquo;ve posted and experienced too much sadness in the last two weeks, and more. Two members of our immediate family, Sully and Stitch, passed away on November 14th and 20th, respectively. Sully was our male kitty, only about 6 years old and his passing was a real shock.  He was an ornery, sometimes grumpy cat, but very loveable at times. We miss him very much. Stitch was the matriarch of our cat family, about 18 years old and a gorgeous long-haired kitty. Stitch was in poor health the last year or so and not very playful so her passing was not such a shock, but it&amp;rsquo;s still hard to take. Fortunately, she passed comfortably in her sleep, nestled up on the couch between Mackenzie and Christine. We miss her too.&lt;/p&gt;
&lt;p&gt;Sully and Stitch were buried on the McCune farm just a few days apart, not immediately next to one another, but not too far apart.  They sometimes played together when Stitch would tolerate Sully, but most of the time they were a short distance apart, just as they are now.&lt;/p&gt;
&lt;p&gt;Enough of that, since today is Thanksgiving I&amp;rsquo;ll post no more sad news.  Instead, I want to share what I&amp;rsquo;m most thankful for&amp;hellip; family.  And our family has two new fur babies too, Georgie and Jo.  Both are named after characters from Stephen King novels&amp;hellip; perhaps a new trend?  Let me explain&amp;hellip;&lt;/p&gt;
&lt;p&gt;Georgie is the best-tempered cat I have ever known. &amp;#x1f638; She&amp;rsquo;s a little over a year old now so she still loves to play, and she&amp;rsquo;s made a habit of insisting that I hold her at least a couple of times each day, and give her kitty treats in exchange for snuggles. We captured Georgie in December 2019, she was the last of 3 kittens and 5 adult cats (Uno, Deuce, Tres, Veer and Go) that we caught as part of a TNR (Trap, Neuter and Release) effort that we started as the weather started to turn colder.  Georgie&amp;rsquo;s siblings found homes at the Tama Co. Humane Shelter (and later with a family in Belle Plaine) and with Morgan, who adpoted &amp;ldquo;Lint&amp;rdquo;, a long-haired solid gray kitten that was an odd part of the short-haired tuxedo cats living next door.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Kitty-Photos/Georgie/IMG_0051.png&#34; alt=&#34;Georgie - Approx. Age 13 Months&#34;&gt;
  &lt;figcaption&gt;Georgie - Approx. Age 13 Months&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Kitty-Photos/Georgie/IMG_0057.png&#34; alt=&#34;Georgie - Play with Me!&#34;&gt;
  &lt;figcaption&gt;Georgie - Play with Me!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Georgie was the last of the 8 cats that we caught and she managed to avoid the traps quite well. Since we were concerned for her wellbeing, as she was all alone, we decided to try and catch her without a trap, and managed to do so after she elluded us for an hour or so.  She managed to get away by ducking into a storm sewer opening down the street, that&amp;rsquo;s why we named her Georgie, after the poor little boy featured in the opening of King&amp;rsquo;s story, &amp;ldquo;It&amp;rdquo;. Like &amp;ldquo;It&amp;rdquo;, she&amp;rsquo;s also a &amp;ldquo;collector&amp;rdquo;, always picking things up and carrying them away to who-knows-where.  &amp;#x1f604;&lt;/p&gt;
&lt;p&gt;Jo, or JoJo, or Joey, or Cujo, is the new addition to the family. &amp;#x1f431;  Even before Stitch passed we put the word out that we might be looking for another kitty, somebody to keep Georgie company when no humans are home.  Well, we received word of a farm kitten looking for a home and paid it a visit one week ago on Thursday night, November 19. Stitch passed the next evening and on Sunday, November 22nd, the kitten came to live with us.  She saw the vet on Monday for an initial checkup and she&amp;rsquo;s sequestered in a spare bedroom for about 2 weeks to give her eyes and nose a chance to clear up&amp;hellip; that process has started but she&amp;rsquo;s still got some eye goop as you can see.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Kitty-Photos/Jo/IMG_0038.png&#34; alt=&#34;Jo - Approx. Age 2 Months&#34;&gt;
  &lt;figcaption&gt;Jo - Approx. Age 2 Months&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Kitty-Photos/Jo/IMG_0034.png&#34; alt=&#34;Jo - In a Rare, Calm Moment&#34;&gt;
  &lt;figcaption&gt;Jo - In a Rare, Calm Moment&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Kitty-Photos/Jo/theWeeBeastieSleeps.jpg&#34; alt=&#34;Jo - The Wee Beastie Sleeps After Turkey Dinner&#34;&gt;
  &lt;figcaption&gt;The Wee Beastie Sleeps after Turkey Dinner&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Mackenzie suggested we name her &amp;ldquo;Cujo&amp;rdquo; since the farmer&amp;rsquo;s dog got hold of her in the farmyard. Also, Stephen King. &amp;#x1f604; The farmer was going to keep her as an indoor kitty due to the dog incident, but was overruled by her spouse. Their loss, our gain. We decided that the name could also stand for &amp;ldquo;Cute Jo&amp;rdquo;, and that stuck, along with all the other forms of the name. Jo is all kitten, but not afraid of anyone. She&amp;rsquo;s quick to snuggle up, but also loves to claw and bite when she&amp;rsquo;s in a mood to play.  We are trying to teach her that toys=play while toes=snuggles, and the same for other body parts. I think she&amp;rsquo;ll come around just fine.  Just wish she didn&amp;rsquo;t have to quarantine for another 10 days. &amp;#x1f626;  But of course, it&amp;rsquo;s #2020.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a wrap. Until next time&amp;hellip; but only after I play with Georgie and give Jo another snuggle.&lt;/p&gt;</description>
      </item>
      
    
      
      <item>
        <title>New Announcement Feature</title>
        <link>https://blog.summittdweller.com/posts/2020/09/new-announcement-feature/</link>
        <pubDate>Sun, 13 Sep 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/09/new-announcement-feature/</guid>
        <description>&lt;p&gt;Quite some time ago I added an &lt;strong&gt;Announcement&lt;/strong&gt; feature to the &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;Rootstalk&lt;/a&gt; website that I helped design and maintain for &lt;a href=&#34;https://grinnell.edu&#34;&gt;Grinnell College&lt;/a&gt;. Events of the past week have driven me to implement this feature as part of this blog and one other site, with some minor improvements.&lt;/p&gt;
&lt;p&gt;The original &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;Rootstalk&lt;/a&gt; version of the feature is very simple, it works around this logic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The site&amp;rsquo;s &lt;code&gt;content/_index.html&lt;/code&gt; page invokes a shortcode named &lt;code&gt;announcement.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;announcement.html&lt;/code&gt; shortcode checks for existence of a file path of &lt;code&gt;static/announcement.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the &lt;code&gt;static/announcement.md&lt;/code&gt; file exists, its &lt;em&gt;markdown&lt;/em&gt; content is read and displayed prominently on the home page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Removing or disabling the announcement is as simple as deleting the file, or simply changing the filename to something like &lt;code&gt;static/.announcement.md&lt;/code&gt;, and republishing the site.&lt;/p&gt;
&lt;h2 id=&#34;implemented-for-the-compass-rose-band&#34;&gt;Implemented for the Compass Rose Band&lt;/h2&gt;
&lt;p&gt;My brother-in-law, the founder and lead-singer for the &lt;a href=&#34;https://compassroseband.net&#34;&gt;Compass Rose Band&lt;/a&gt;, out of greater metropolitan Cedar Rapids, fell ill, and literally fell down the stairs, on Thursday evening, September 10, 2020.  Since my daughter publishes the aforementioned &lt;a href=&#34;https://compassroseband.net&#34;&gt;CRB&lt;/a&gt; website, we wanted to alert their fans that the show set for Friday evening, September 11, would be canceled. We immediately thought of the &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;Rootstalk&lt;/a&gt; &lt;strong&gt;Announcement&lt;/strong&gt; feature and subsequently implemented it for the &lt;a href=&#34;https://compassroseband.net&#34;&gt;CRB&lt;/a&gt; site.&lt;/p&gt;
&lt;p&gt;In the case of &lt;a href=&#34;https://compassroseband.net&#34;&gt;CRB&lt;/a&gt; the feature is implemented just a little differently:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instead of a shortcode the &lt;code&gt;layouts/index.html&lt;/code&gt; file includes a new block of code that looks for a file named &lt;code&gt;content/announcement.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the file exists, its &lt;em&gt;markdown&lt;/em&gt; content is prominently displayed with an orange border near the top of the home page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Removing or disabling the announcement is just like in &lt;a href=&#34;https://rootstalk.grinnell.edu&#34;&gt;Rootstalk&lt;/a&gt;, we delete or change the filename to something like &lt;code&gt;content/.announcement.md&lt;/code&gt;, and republish the site.&lt;/p&gt;
&lt;h2 id=&#34;implemented-here-in-this-blog&#34;&gt;Implemented Here In This blog&lt;/h2&gt;
&lt;p&gt;Since I&amp;rsquo;m essentially documenting the new feature here, I thought it only prudent to also implement it here, and that implementation is currently &lt;strong&gt;identical&lt;/strong&gt; to what we did for the &lt;a href=&#34;https://compassroseband.net&#34;&gt;CRB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So watch the top of this blog&amp;rsquo;s home for prominent announcements in the future, hopefully none that report dire emergencies. &amp;#x1f603;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a warp. Until next time&amp;hellip;&lt;/p&gt;</description>
      </item>
      
    
      
      <item>
        <title>Last of the Clean-up? - Derecho Follow-Up for September 6</title>
        <link>https://blog.summittdweller.com/posts/2020/09/last-of-the-derecho-damage-september-6/</link>
        <pubDate>Sun, 06 Sep 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/09/last-of-the-derecho-damage-september-6/</guid>
        <description>&lt;p&gt;Tomorrow is Labor Day 2020, but it also will mark 4 weeks since the August 10 derecho. Thankfully, I believe today marked the end of the clean-up, at least on my own property. I was going to write this post yesterday after another 6+ hours of work outdoors, but last night we had another storm roll through, and all day the winds have been blowing upwards of 40 mph, so I put in another 6 hours or so cleaning up even more debris. The only good news here is that the city has not yet made a 2nd-pass of curbside debris pick-up, so I don&amp;rsquo;t have to haul it away, just keep adding to the &amp;ldquo;boma&amp;rdquo; at the curb.&lt;/p&gt;
&lt;h2 id=&#34;the-west-side-boma-round-2&#34;&gt;The West-side Boma, Round 2&lt;/h2&gt;
&lt;p&gt;My &lt;a href=&#34;https://summittdweller.com/blogs/mark/posts/iowahurricane2020/&#34;&gt;post from August 20&lt;/a&gt; includes photos of both our south and west bomas, massive curbside piles of tree debris that surrounded our property on two sides, plus a pile we placed next door in a church parking lot.  Well, since that time we had to have our largest pine taken down, and many dead limbs removed from the other three large trees.  All of that debris, plus what&amp;rsquo;s fallen just today, formed a new boma on along the curb to our west.  I took some photos of that monster today:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0373.png&#34; alt=&#34;The West Boma - Round 2&#34;&gt;
  &lt;figcaption&gt;The West Boma - Round 2 - Looking North&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0374.png&#34; alt=&#34;The West Boma - Round 2&#34;&gt;
  &lt;figcaption&gt;The West Boma - Round 2 - Looking South: Remnants of the Pine in the Foreground&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Before the storm my backyard was looking pretty good. It&amp;rsquo;s not gone, but I just hope next year some of it might return to its previous glory.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0375.png&#34; alt=&#34;The West Boma - Round 2&#34;&gt;
  &lt;figcaption&gt;What&amp;#39;s Left of My Backyard&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;insurance-not-very-reassuring&#34;&gt;Insurance, Not Very Reassuring&lt;/h2&gt;
&lt;p&gt;I won&amp;rsquo;t name names here, but the company that carries my home-owner&amp;rsquo;s insurance has been NO help at all. I filed a claim with them on August 14 or so, and still have not heard anything from them. In fact, once I found out how badly damaged our big pine tree was I decided to call them directly, that was on Monday, August 24, I believe. I asked them if someone could come take a look at this tree because I&amp;rsquo;d put a plumb-line on it a few days before and was therefore able to detect that it was indeed tilting farther to the east each day. Their response was literally &amp;ldquo;It&amp;rsquo;s not covered unless it&amp;rsquo;s damaged your house.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I told them I wasn&amp;rsquo;t concerned about the coverage, I just wanted to know if they could help me determine what to do about it, or if they could even recommend someone who could give me an expert opinion about it. &amp;ldquo;No, we don&amp;rsquo;t do that.&amp;rdquo;, was their answer. So I told them, &amp;ldquo;It&amp;rsquo;s leaning to the northeast and the wind is out of the south, it could easily fall on the neighbor&amp;rsquo;s house.&amp;rdquo; Their response left me speechless, they said, &amp;ldquo;If it falls on their house it is their problem, and their insurance will take care of it.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I guess I am just naive when it comes to insurance, I always thought they actually cared about people and were intent on helping prevent disasters, but apparently they just crunch numbers and dole out money, as little as possible I&amp;rsquo;m sure. &lt;strong&gt;I was, and still am, disgusted&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If they ever do contact me I&amp;rsquo;ll listen to them as well and as long as they listened to me, and then I&amp;rsquo;m going to dump them just as soon as I can find coverage from someone who actually gives a damn.&lt;/p&gt;
&lt;h2 id=&#34;brothers-tree-service-to-the-rescue&#34;&gt;Brother&amp;rsquo;s Tree Service To the Rescue&lt;/h2&gt;
&lt;p&gt;While I was checking up on some apparent fly-by-night tree &amp;ldquo;professionals&amp;rdquo; from out-of-state, I had the good fortune of meeting Shelby, the wife of Martin, an owner of Brother&amp;rsquo;s Tree Service. Martin looked at my tree damage and gave me a very reasonable quote to take care of all the &amp;ldquo;widow-makers&amp;rdquo;.  At that time I wasn&amp;rsquo;t planning to have the big pine taken down, but after my insurance disappointment I called Martin and asked him to come look at it ASAP. He thought it should come down AND he interrupted his busy schedule to sweep in on the evening of Wednesday, August 26, to render that leaning tree harmless.&lt;/p&gt;
&lt;p&gt;I was impressed at how quickly, professionally, and safely, Martin and his partner brought the bulk of that tree down! Finally, I could get some sleep without worrying about which way the wind was blowing. I took a couple photos of that tree removal operation too.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0352.png&#34; alt=&#34;Brother&amp;rsquo;s Rendering the Pine Harmless&#34;&gt;
  &lt;figcaption&gt;About 30 Minutes into the Pine Tree Removal&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0362.png&#34; alt=&#34;Brother&amp;rsquo;s Rendering the Pine Harmless - Progress&#34;&gt;
  &lt;figcaption&gt;After About 1 Hour of Pine Tree Removal&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;A few days after bringing most of the pine down, Brother&amp;rsquo;s returned to remove some dangerous hanging limbs from my three remaining trees. Now I could even park my car in my own driveway again!&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0367.png&#34; alt=&#34;Brother&amp;rsquo;s Rendering the Pine Harmless - Progress&#34;&gt;
  &lt;figcaption&gt;A Few Days Later Brother&amp;#39;s Returned to Clean-Up Hanging Limbs&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-to-do-about-my-lawn&#34;&gt;What To Do About My Lawn?&lt;/h2&gt;
&lt;p&gt;The one remaining concern I have is with my lawn; the combination of severe drought and lots of heavy equipment traffic has left great canyons in the grass. It litterally is too rough to drive my riding mower over it in most places. I&amp;rsquo;m frankly surprised the rough ride hasn&amp;rsquo;t ruined my mower or any of my lawn equipment yet, or maybe it has?&lt;/p&gt;
&lt;p&gt;So I&amp;rsquo;m thinking, once the city has removed the newest debris (and there will almost certainly be more lawn-canyons after that), and after I&amp;rsquo;ve subsequently removed whatever they leave behind, I will probably ask one of the local landscape pros to come in. I&amp;rsquo;d like to have them dump a few loads of topsoil on the lawn and top-dress it all with a nice, smooth layer of soil that I&amp;rsquo;d hope to get planted for a new lawn before winter.&lt;/p&gt;
&lt;p&gt;Wish me luck.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a warp. Until the next derecho, or the next time, whatever that may be&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Tama-Toledo Parks - Derecho Follow-Up for August 24</title>
        <link>https://blog.summittdweller.com/posts/2020/08/tama-toledo-parks-2020-derecho-follow-up-august-24/</link>
        <pubDate>Mon, 24 Aug 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/08/tama-toledo-parks-2020-derecho-follow-up-august-24/</guid>
        <description>&lt;p&gt;So, the &lt;a href=&#34;https://iowageocachers.org&#34;&gt;Iowa Geocacher&amp;rsquo;s Organization&lt;/a&gt; annual &lt;a href=&#34;https://coord.info/GC8TJ9F&#34;&gt;Hike-n-Seek&lt;/a&gt; event is coming to Tama County and Otter Creek Lake on Friday-Sunday, September 25-27, barring any more 2020 disasters. &amp;#x1f340; The weekend is slated to include September&amp;rsquo;s Friday Lunch Club (FLC) too, but the restaurant that was slated to host FLC was destroyed in the August 10 derecho.&lt;/p&gt;
&lt;p&gt;This morning &lt;a href=&#34;https://www.geocaching.com/p/default.aspx?guid=77b132a8-363f-4989-97d0-8e44db236ada&amp;amp;wid=caae59c7-5c17-43b9-a980-98d6c1a7d7da&amp;amp;ds=2&#34;&gt;The FLC Committee&lt;/a&gt;, aka Borky00, aka Bill, asked me about possible outdoor park settings for FLC as a means of giving folks plenty of room for social distancing. Bill mentioned a couple of possibilities including a Tama city park on east 4th Street, and the Lincoln Highway Bridge park at the intersection of 5th Street and old US Highway 30.&lt;/p&gt;
&lt;p&gt;The city park on east 4th Street is a no-go. There&amp;rsquo;s never been much in the way of facilities there, and after the storm there is literally nothing there. I did have three other possibilities in mind, and needed to check up on them after the storm anyway, so I took a few minutes this morning to gather some information.&lt;/p&gt;
&lt;h2 id=&#34;lincoln-highway-bridge-park---east-5th-street-in-tama&#34;&gt;Lincoln Highway Bridge Park - East 5th Street in Tama&lt;/h2&gt;
&lt;p&gt;This little park, and I do mean little, features two very small shelters but NO grills for cooking. It&amp;rsquo;s a small outdoor meeting place near Tama&amp;rsquo;s iconic Lincoln Highway Bridge, and home to a couple of my own geocache hides.  Here&amp;rsquo;s what it looks like after the storm.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0331.png&#34; alt=&#34;Lincoln Highway Bridge Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Lincoln Highway Bridge Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0330.png&#34; alt=&#34;Lincoln Highway Bridge Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Lincoln Highway Bridge Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;tama-city-park---near-17th-street-and-mclelland-in-tama&#34;&gt;Tama City Park - Near 17th Street and Mclelland in Tama&lt;/h2&gt;
&lt;p&gt;This is Tama&amp;rsquo; primary park and I&amp;rsquo;d heard it was cleaned up right after the storm, but there&amp;rsquo;s still LOTs of damage here and lots more cleanup to be done. Also, there&amp;rsquo;s only a fireplace in the small shelter, and no grills left on the grounds, at least none that I could see.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0332.png&#34; alt=&#34;Tama City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Tama City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0333.png&#34; alt=&#34;Tama City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Tama City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0334.png&#34; alt=&#34;Tama City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Tama City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0335.png&#34; alt=&#34;Tama City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Tama City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;toledo-heights-city-park---west-side-of-toledo-on-old-us-30&#34;&gt;Toledo Heights City Park - West Side of Toledo on Old US 30&lt;/h2&gt;
&lt;p&gt;I think this is probably our best bet, assuming the City of Toledo can get the major debris taken care of before the FLC event. I just called the city and spoke with the City Clerk, she made a tentative reservation for me to have the shelter on Friday, September 25 for a reservation fee of $25. There is normally a $50 refundable deposit required but that&amp;rsquo;s being waved because the restroom in the shelter is not open due to the pandemic.&lt;/p&gt;
&lt;p&gt;This park, about 1/2-mile west of the restaurant that FLC previously booked, has one nice large open shelter with a fireplace, AND two large grills just north of the shelter.  Have a look, and note that the park is currently not reserved for any other events on Hike-n-Seek weekend.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0327.png&#34; alt=&#34;Toledo Heights City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Toledo Heights City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0328.png&#34; alt=&#34;Toledo Heights City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Toledo Heights City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0329.png&#34; alt=&#34;Toledo Heights City Park - After the Derecho&#34;&gt;
  &lt;figcaption&gt;Toledo Heights City Park - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a warp. Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Derecho Follow-Up - Saturday, August 22</title>
        <link>https://blog.summittdweller.com/posts/2020/08/2020-derecho-follow-up-august-23/</link>
        <pubDate>Sat, 22 Aug 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/08/2020-derecho-follow-up-august-23/</guid>
        <description>&lt;p&gt;Almost every day for the past few months I have walked with my &amp;ldquo;scurry&amp;rdquo; around Cherry Lake in Tama. We generally walk in the morning before the heat, humidity, and mosquitoes get too bad.  We finally got power back on Thursday evening, August 20, so on Friday morning, August 21, 2020, we walked for the first time since the derecho of August 10. It was actually more like an obstacle course than our usual stroll, but we still managed to collect quite a bit of trash, as usual. There were about a dozen places around the lake, a trail that is about 1.33 miles long, where fallen trees required that we climb over or weave around. It&amp;rsquo;s no fun to do either, especially since the &amp;ldquo;weaving&amp;rdquo; sometimes involved venturing off-trail into the poison ivy. Makes me itch just thinking about it.&lt;/p&gt;
&lt;p&gt;At the west end of Cherry Lake I placed a bench and engraved rock as a memorial for my parents, and my son, Ian. The most recent, pre-derecho photo of the rock and bench was taken on a &amp;ldquo;scurry&amp;rdquo; walk around the lake early this Spring. Portions of scurry-partners Jeff Shaw, and the hind-quarters of four-legged scurry member, Titan Edward, can be seen in this photo from that excursion.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0121.png&#34; alt=&#34;McFate Memorial Bench at Cherry Lake - Early Spring 2020&#34;&gt;
  &lt;figcaption&gt;McFate Memorial Bench at Cherry Lake - Early Spring 2020&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;On the south side of the lake &amp;ndash; visible in the background of the photo above &amp;ndash; the trail runs parallel to a road that leads to a brush pile where Tama residents can dump tree limbs, brush and leaves collected from their yard.  There&amp;rsquo;s been a LOT of that lately! On this occasion a friend of our, Charlie Betz, was hauling a pickup-load of derecho debris to the brush pile and stopped briefly to chat. Charlie suggested that someday soon he would return with his chainsaw to begin clearing deadfall from the trail. We told him to let us know when, and we&amp;rsquo;d see if we could come help.  Well, that &amp;ldquo;when&amp;rdquo; was 7 AM the next day, Saturday, August 22.&lt;/p&gt;
&lt;p&gt;I arrived at the lake at 7 AM on the 22nd and found Charlie already there, preparing to fire up his saw. I brought my little 10&amp;quot; Ryobi cordless electric chainsaw and two fully-charged batteries. Jeff Shaw arrived about 20 minutes later and we proceeded to work our way counter-clockwise around the lake trail startring from the parking area on the east end of the lake.  It was slow going, especially at first since the north side of the lake is, or was, densely wooded with some mature trees.&lt;/p&gt;
&lt;p&gt;After three hours of cutting and tossing debris to the side of the trail, we reached my family&amp;rsquo;s memorial bench at the west end of the lake.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0324.png&#34; alt=&#34;McFate Memorial Bench at Cherry Lake - After the Derecho&#34;&gt;
  &lt;figcaption&gt;McFate Memorial Bench at Cherry Lake - After the Derecho&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;By this time we had waded through way too much PI, been briefly rained on, dulled Charlie&amp;rsquo;s chainsaw blade, and drained both of the saw batteries I had on hand. I think we were drained too. Time for a break, so at 10 AM we departed for some rest, lunch, fresh batteries, and hopefully a new chain for Charlie&amp;rsquo;s saw. We reconvened at Noon, as planned, and spent the next two hours clearing the deadfall around the McFate bench, plus a pair of gnarly monsters that had fallen across the trail near the southeast corner of the lake.&lt;/p&gt;
&lt;p&gt;It felt really good to get it all done, and now we can engage in our &amp;ldquo;scurry&amp;rdquo; walks around the lake without all the bobbing and weaving required to navigate the obstacle course that was.  Every good volunteer effort should conclude with a photo or two, so we got all cleaned up, NOT, and I shot this one.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0325.png&#34; alt=&#34;The Post-Derecho Cherry Lake Trail Cleanup Crew - Me, Charlie, and Jeff&#34;&gt;
  &lt;figcaption&gt;The Post-Derecho Cherry Lake Trail Cleanup Crew - Me, Charlie, and Jeff&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a warp. Until next time&amp;hellip; but only after I&amp;rsquo;ve had a pleasant scurry walk in the morning.&lt;/p&gt;</description>
      </item>
      
    
      
      <item>
        <title>Iowa&#39;s 2020 Hurricane</title>
        <link>https://blog.summittdweller.com/posts/2020/08/iowahurricane2020/</link>
        <pubDate>Tue, 18 Aug 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/08/iowahurricane2020/</guid>
        <description>&lt;p&gt;It&amp;rsquo;s been far too long, again, since I posted to this blog, but this time I have a legitimate excuse: we&amp;rsquo;ve been without power or internet, or much of anything, since about 11:45 AM on Monday, August 10, 2020.  So we have now been more than 10.5 days without power. I&amp;rsquo;m only able to post this because of a portable generator I bought on August 12 (that was an adventure in itself) and the wireless hotspot that my phone has provided almost 24/7 ever since the storm hit.&lt;/p&gt;
&lt;p&gt;Update: Power was finally restored here at about 6:30 PM, on Thursday, August 20, 2020.  Now I just have 11.5 days of things to catch up on!&lt;/p&gt;
&lt;h2 id=&#34;preamble&#34;&gt;Preamble&lt;/h2&gt;
&lt;p&gt;The preamble to this story dates back to Christmas 2019, when my daughter gave me a &amp;ldquo;Dad&amp;rsquo;s Love&amp;hellip;&amp;rdquo; daily calendar. There have been a couple of dates I kept because they are so accurate, like the day that says &amp;ldquo;We child-proofed the house but somehow they still got in.&amp;rdquo;  &amp;#x1f604;  Tama County has been in the grips of a moderate-to-severe drought for the past couple of months so the calendar page for August 10 looked like another &amp;ldquo;keeper&amp;rdquo;. It says:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Photo-2020-08-18-09-54.jpg&#34; alt=&#34;Monday, August 10, &amp;ldquo;Dad&amp;rsquo;s Love&amp;hellip;&amp;rdquo; Calendar&#34;&gt;
  &lt;figcaption&gt;Monday, August 10, &amp;#39;Dad&amp;#39;s Love...&amp;#39; Calendar&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;930-am---scurry-walk&#34;&gt;9:30 AM - Scurry Walk&lt;/h2&gt;
&lt;p&gt;This story begins in earnest around 9:30 AM on Monday, August 10, 2020.  My &amp;ldquo;scurry&amp;rdquo; and I were just completing a quick walk around Cherry Lake where we had picked up a little trash, as we usually do. We met a couple of neighbors out for a walk and chatted briefly about the weather, and I suggested that the line of storms now in western Iowa looked like they might just hold together. Every weather system thus far in the summer had passed either just to our north, just to the south, or formed just to the east, so the neighbors just scoffed at the notion of us getting any rain. I was so sure it would rain this time that I didn&amp;rsquo;t hesitate to put a concrete block on the west-half of my hot tub cover to keep it closed in case of wind. I guess I should have used all eight blocks this time?  &amp;#x1f615;&lt;/p&gt;
&lt;h2 id=&#34;1145-am---the-wind&#34;&gt;11:45 AM - The Wind&lt;/h2&gt;
&lt;p&gt;The storms did indeed &amp;ldquo;hold together&amp;rdquo;.  Oh boy, did they ever.  A wall of wind hit Tama-Toledo at about 11:45 AM that morning, with literally NO warning from the US Weather Service. I had received alerts from the WeatherBug app on my iPhone, but there was no &amp;ldquo;official&amp;rdquo; word of impending doom.  The rain didn&amp;rsquo;t begin until 5 or 10 minutes later, and I&amp;rsquo;m not sure any hit the ground because EVERYTHING, tree limbs, mailboxes, small animals, etc., was moving sideways. The power went out moments later. It&amp;rsquo;s still out as of this writing, a little more than 10 days since.&lt;/p&gt;
&lt;h2 id=&#34;1155-am---get-the-cats&#34;&gt;11:55 AM - Get the Cats!&lt;/h2&gt;
&lt;p&gt;After hustling to the basement and realizing the house was not gone, yet, we thought we&amp;rsquo;d better go back upstairs to get some candles, more flashlights, and our three cats.  Mackenzie and I managed to get two of the cats pretty easily, but the third one was stubborn and had to be &amp;ldquo;captured&amp;rdquo;.  While we were doing this I glanced out the window and saw nothing but tree limbs, still sailing past the windows on a nearly horizontal trajectory.&lt;/p&gt;
&lt;p&gt;By the time we captured the last cat I thought to myself, the wind can&amp;rsquo;t last much longer&amp;hellip;it had been blowing for at least 5 minutes straight, and I do mean STRAIGHT. I was very wrong.  Thinking back, I do believe the wind blew at upwards of 100 MPH or more for at least 20 minutes.&lt;/p&gt;
&lt;h2 id=&#34;1158-am---morgans-story&#34;&gt;11:58 AM - Morgan&amp;rsquo;s Story&lt;/h2&gt;
&lt;p&gt;My daughter, Morgan, had been at the STC Middle School in Toledo working on getting her classroom ready for the start of school. She got a call from a friend in Des Moines at about 11:30 AM telling her to watch out for a line of t-storms heading her way. There are no windows in her classroom so when she finally left the Middle School and saw how dark the sky was she got really concerned and promptly ordered the building secretary to open the office and get a handful of students back inside.  They had just dismissed from summer-school and were waiting outside for their parents to pick them up.  Good thing she did that.&lt;/p&gt;
&lt;p&gt;Morgan drove away from the Middle School just minutes before a wall-of-wind roared in, and she called my cell phone at 11:50 AM just as she passed our house, letting me know that she was going straight to her apartment because her landlord wasn&amp;rsquo;t home and she was worried about her cats. The 5-minute drive to her apartment took about 3 hours?  A couple of minutes later, at 11:55 AM we ran to our basement (after a 2nd mailbox went sailing past our front door) and Morgan called again at 11:58 AM. Her car had been hit by a falling tree limb, about 6&amp;quot; in diameter, near the crest of the hill on State Street in Tama, just south of the Tama Park. Her windshield was shattered, fortunately on the passenger&amp;rsquo;s side, and she was freaking out. I told her to stay in her car and Christine called 9-1-1 to provide her with some emergency aid.&lt;/p&gt;
&lt;p&gt;The 9-1-1 call had to route through Benton county (30 miles east of us) as the local center was already overwhelmed, and the storm hadn&amp;rsquo;t hit there yet. A local police officer was dispatched and could get no closer than about 2.5 blocks from Morgan&amp;rsquo;s car due to downed trees, but made his way to her on-foot. He told her same as me, stay in your car to avoid downed power lines and potentially being hit by flying debris. He also told her to fasten her seatbelt in case the wind flipped the car over. Yikes!  That happened at 12:18 PM, and the wind was still fierce!&lt;/p&gt;
&lt;p&gt;At 12:20 PM my wife realized where Morgan was and called a friend who lives at the location of Morgan&amp;rsquo;s &amp;ldquo;tree incident&amp;rdquo;, and that friend managed to summon her inside once it was safe to make a run for it.&lt;/p&gt;
&lt;h2 id=&#34;1230-pm---the-wind-finally-stopped-time-to-rescue-morgan&#34;&gt;12:30 PM - The Wind Finally Stopped, Time to &amp;ldquo;Rescue&amp;rdquo; Morgan&lt;/h2&gt;
&lt;p&gt;It was about 12:30 PM when I felt like it was finally safe to go back upstairs and outside. Our mission was to try and get to Morgan as soon as possible.  The power was out so I could not easily raise our double garage door, so I peeked out the front door to see what the situation was. OMG!&lt;/p&gt;
&lt;p&gt;Our house is about 70 years old and it is (was) surrounded by five very large, mature trees&amp;hellip; two grand old Oaks flanking the front yard, an American Sycamore directly west of our garage and patio, and two very tall pines on the NW and NE corners of the house, plus a few smaller and younger trees and bushes. Our driveway measures about 15&amp;rsquo; x 45&amp;rsquo; and it was entirely covered in limbs from one of the oaks and the Sycamore. Some of the limbs down on the driveway measured more than 10&amp;quot; in diameter.  It ultimately took about 14 hours of back-breaking effort just to clear the driveway well enough for us to get both vehicles out of the garage.&lt;/p&gt;
&lt;p&gt;In the immediate aftermath of the storm I had two other transportation options: the bicycle I had just purchased on Saturday, August 8; or my daughter Mackenzie&amp;rsquo;s car which was parked at the curb west of our house. I was pretty sure that car, parked partly beneath one of the oaks and the Sycamore, would be badly damaged, but it was not. There were limbs and whole trees, from our neighbor to the west, lying all around it, but the car was unscathed and operable.  It took a little serpentine driving to navigate out of it&amp;rsquo;s parking spot, but by about 12:45 PM Christine and I were able to get it out and on-the road to try and &amp;ldquo;rescue&amp;rdquo; Morgan, roughly 1/2-mile away.&lt;/p&gt;
&lt;p&gt;That 1/2-mile trip featured five impassable streets and a mile or two of back-tracking to find a suitable (barely) route.  The four-lane US Highway 63 proved to be the best route for most of the trip only because it was wide enough that trees on the west side generally didn&amp;rsquo;t block all four lanes. We arrived in the vicinity of Morgan&amp;rsquo;s car at 1:02 PM and found that she had already pulled the largest limb off her car, what was left looked like this:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_2053.jpeg&#34; alt=&#34;Morgan&amp;rsquo;s Damaged Nissan Rogue - A Total Loss&#34;&gt;
  &lt;figcaption&gt;Morgan&amp;#39;s Damaged Nissan Rogue - A Total Loss&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Morgan&amp;rsquo;s apartment is about 1-mile from the location where we left her car, and she knew that her landlord and family were away in Cedar Rapids for the day, so we headed there to check on that property, and her cats. That trip took about 10 minutes with numerous &amp;ldquo;detours&amp;rdquo; but I was able to drive to within a half-block of the house.  Thankfully we found the house intact with no visible, major damage, and the cats were safe, but obviously frightened, still inside Morgan&amp;rsquo;s apartment. Fortunately, the large old tree outside Morgan&amp;rsquo;s apartment window was damaged earlier this year in a storm, and had to be taken down entirely just a couple of weeks ago; otherwise it would have certainly damaged the house and her apartment. We called the landlord to report the relatively good news as they tried to begin their journey back home from CR. Then it started to rain again, just a little.&lt;/p&gt;
&lt;h2 id=&#34;the-damage&#34;&gt;The Damage&lt;/h2&gt;
&lt;p&gt;This part of the story is perhaps best told in pictures. I took some photos and am posting them here in chronological order, with descriptive captions.&lt;/p&gt;
&lt;h3 id=&#34;first-glimpse-out-the-window&#34;&gt;First Glimpse Out the Window&lt;/h3&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2018.png&#34; alt=&#34;18 First Glimpse from Inside the House - South Facing Window Looking Out on the Driveway&#34;&gt;
  &lt;figcaption&gt;First Glimpse from Inside the House - South Facing Window Looking Out on the Driveway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2019.png&#34; alt=&#34;19 First Glimpse from Inside the House - South Facing Window Looking SE at the Mailboxes&#34;&gt;
  &lt;figcaption&gt;First Glimpse from Inside the House - South Facing Window Looking SE at the Mailboxes&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2017.png&#34; alt=&#34;17 View from My Home Office Window an Hour After - Lookng NE&#34;&gt;
  &lt;figcaption&gt;View from My Home Office Window an Hour After - Lookng NE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;headed-outside-to-shoot-more-photos&#34;&gt;Headed Outside to Shoot More Photos&lt;/h3&gt;
&lt;p&gt;The power was out everywhere for 30 to 50 miles all around us so we assumed it was safe to get outside and take some better photos.  No chance of getting cars out of the garage&amp;hellip; our driveway was at least 80% covered by tree parts, some places it was 4 feet deep.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2020.png&#34; alt=&#34;20 Looking NW at the House from Where the Mailboxes Used to Be&#34;&gt;
  &lt;figcaption&gt;Looking NW at the House from Where the Mailboxes Used to Be&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2021.png&#34; alt=&#34;21 Yes, That&amp;rsquo;s Our Mailbox&#34;&gt;
  &lt;figcaption&gt;Yup, That&amp;#39;s Our Mailbox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2022.png&#34; alt=&#34;22 Looking NW from the Mailboxes - Our Driveway is Under All of That Forest&#34;&gt;
  &lt;figcaption&gt;Looking NW from the Mailboxes - Our Driveway is Under That Forest&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2023.png&#34; alt=&#34;23 Looking North from the Bottom of Our Driveway&#34;&gt;
  &lt;figcaption&gt;Looking North from the Bottom of Our Driveway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2024.png&#34; alt=&#34;24 Looking SW from Just Outside Our Garage&#34;&gt;
  &lt;figcaption&gt;Looking SW from Just Outside Our Garage&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2025.png&#34; alt=&#34;25 Looking Due South from Just Outside Our Garage&#34;&gt;
  &lt;figcaption&gt;Looking Due South from Just Outside Our Garage&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2026.png&#34; alt=&#34;26 Looking East from the Top of Our Driveway&#34;&gt;
  &lt;figcaption&gt;Looking East from the Top of Our Driveway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;west-side-story---the-rolling-stone-hot-tub-grill-and-limbs-on-the-roof&#34;&gt;West Side Story - The &amp;ldquo;Rolling Stone&amp;rdquo;, Hot Tub, Grill, and Limbs on the Roof&lt;/h3&gt;
&lt;p&gt;There were three pleasantly-amazing (lucky) things that happened, or didn&amp;rsquo;t happen as the case may be, on the west, windward, side of the house.&lt;/p&gt;
&lt;p&gt;First up, my home-made lightweight teardrop camper, &amp;ldquo;The Rolling Stone&amp;rdquo;.  It&amp;rsquo;s the gray thing that looks like a big old boulder on wheels in the right side of the first image below.  It survived, almost unscathed! The only damage was from the door being blown open.  That door hit the west wall of the house so hard that it bent a 1/8&amp;quot; thick steel latch plate back at a 120° angle. Because the door was open, things just inside the door also got a little wet, but they dried out well since then.  The whole camper pitched forward about 3&amp;rsquo; in the wind, but the on-board drop-foot was down so it didn&amp;rsquo;t fall to the ground. Had any large limbs fallen directly on it, we&amp;rsquo;d have had a total loss of structure and contents.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2030.png&#34; alt=&#34;30 Looking SE from the NW Corner of Our Property&#34;&gt;
  &lt;figcaption&gt;Looking SE from the NW Corner of Our Property&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Next, the hot tub and grill. The very first thing I did when I got outdoors after the storm was to flip the hot tub cover back down.  I have yet to clean all the leaves and debris out of the water&amp;hellip;maybe later today.&lt;/p&gt;
&lt;p&gt;When I receive any alert of a possible storm I always move one of the concrete blocks, seen stacked on the right in the image below, over to the west edge of my hot tub cover in order to keep it from blowing open.  I made that move about 15 minutes before the storm hit, but it didn&amp;rsquo;t help. In fact, it did more damage, I think.  The cover seems to be OK, but the wind did flip it open, sending the concrete block sailing about 10&amp;rsquo; into the side of the house and narrowly missing the bathroom window that you can see. Lucky for us!&lt;/p&gt;
&lt;p&gt;But our gas grill was not so lucky. That concrete block smashed down upon it leaving a big dent in the top, and causing the grill to &amp;ldquo;list&amp;rdquo; about 2&amp;quot; to port (the left side when looking from back to front).&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2031.png&#34; alt=&#34;31 Looking at the Hot Tub and Limbs on the Roof&#34;&gt;
  &lt;figcaption&gt;Looking at the Hot Tub and Limbs on the Roof&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_3531.png&#34; alt=&#34;45 The Grill&#34;&gt;
  &lt;figcaption&gt;Our 1-Year-Old Gas Grill&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2027.png&#34; alt=&#34;27 Looking South from NW Corner of Our Property&#34;&gt;
  &lt;figcaption&gt;Looking South from NW Corner of Our Property&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Finally, the limbs on the roof; you can see them clearly in some of these images. There were actually three of them, the largest with a diameter of about 5&amp;quot; at its base.  All three were from the Sycamore tree, which I suppose is lucky.  Sycamore&amp;rsquo;s have ENORMOUS leaves and while I feared severe damage to the roof, it looks like all three limbs just gently &amp;ldquo;floated&amp;rdquo; down to where I found them. I got them sawed up, and down off the roof, including an informal damage inspection plus wasp nest encounter, on Tuesday, August 11.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2028.png&#34; alt=&#34;28 Looking SE from the NW Corner of Our Property&#34;&gt;
  &lt;figcaption&gt;Looking SE from the NW Corner of Our Property&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2029.png&#34; alt=&#34;29 Looking East from the NW Corner of Our Property&#34;&gt;
  &lt;figcaption&gt;Looking East from the NW Corner of Our Property&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-cleanup&#34;&gt;The Cleanup&lt;/h2&gt;
&lt;h3 id=&#34;building-the-worlds-largest--boma&#34;&gt;Building the World&amp;rsquo;s Largest (?) Boma&lt;/h3&gt;
&lt;p&gt;The mayors of Tama and Toledo, along with the Tama Co. Emergency Management office, called a public meeting, conducted in the parking lot of the nearby Tama-Toledo Family Aquatic Center, for 6 PM on Wednesday, August 12. At that meeting the cities informed everyone that any debris left at the curb would eventually be picked up and disposed of by a city crew. So, we started building what I like to think of as the world&amp;rsquo;s largest &lt;a href=&#34;https://en.wikipedia.org/wiki/Boma_(enclosure)&#34;&gt;boma&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the images below you can see both our west and south bomas.  We didn&amp;rsquo;t need any on the east or north since we have neighbors on those sides, but we did build a small boma (about 30&amp;rsquo; long by 10&amp;rsquo; wide) in the parking lot of the church that sits at the NE corner of our property, where our utilities pole is located.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%202.png&#34; alt=&#34;2 The West Boma - Panoramic&#34;&gt;
  &lt;figcaption&gt;The West Boma - Panoramic&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2014.png&#34; alt=&#34;14 The South Boma - Panoramic&#34;&gt;
  &lt;figcaption&gt;The South Boma - Panoramic&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%206.png&#34; alt=&#34;6 The West Boma - Close-up&#34;&gt;
  &lt;figcaption&gt;The West Boma - Close-up&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2010.png&#34; alt=&#34;10 The South Boma - Close-up&#34;&gt;
  &lt;figcaption&gt;The South Boma - Close-up&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2015.png&#34; alt=&#34;15 The South Boma - Close-up Looking West&#34;&gt;
  &lt;figcaption&gt;The South Boma - Close-up Looking West&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2044.png&#34; alt=&#34;44 SE Corner of the Property Looking at the Start of the South Boma&#34;&gt;
  &lt;figcaption&gt;SE Corner of the Property Looking at the Start of the South Boma&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;the-tree-wrangler&#34;&gt;The Tree Wrangler&lt;/h3&gt;
&lt;p&gt;On Thursday, August 13, I started to address some of the potential widow-makers still hanging in our trees.  My first target was the one shown below. I managed to rig a short chain to the end of a nylon rope and after about 10 tries I got the chain wrapped around the most menacing widow-maker, and yanked that sucker right out of the tree. They call me the &amp;ldquo;Tree Wrangler&amp;rdquo;. I&amp;rsquo;m pleased to report that subsequent limb-roping adventures took fewer tosses!&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2038.png&#34; alt=&#34;38 The Tree Wrangler Roped His First Stray&#34;&gt;
  &lt;figcaption&gt;&amp;#39;The Tree Wrangler&amp;#39; Roped His First Stray&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2042.png&#34; alt=&#34;42 Roped My First Stray Tree Limb&#34;&gt;
  &lt;figcaption&gt;Roped My First Stray Tree Limb&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Do you remember seeing an ominous widow-maker in the Sycamore tree in earlier images?  Well she is no more.  At about 1:30 PM on Wednesday, August 19, I roped that critter and managed, with considerable effort, to yank that bad boy down.  Proof that &amp;ldquo;The Tree Wrangler&amp;rdquo; has struck again&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_0592.jpeg&#34; alt=&#34;I Hath Slain Another Widow-Maker&#34;&gt;
  &lt;figcaption&gt;I Hath Slain Another Widow-Maker&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;more-random-photos---post-cleanup&#34;&gt;More Random Photos - Post Cleanup&lt;/h3&gt;
&lt;p&gt;Just posting more random, post-cleanup photos here.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%203.png&#34; alt=&#34;3 The Back Yard - After Cleanup&#34;&gt;
  &lt;figcaption&gt;The Back Yard - After Cleanup&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%205.png&#34; alt=&#34;5 Widow-Maker in the Sycamore&#34;&gt;
  &lt;figcaption&gt;Widow-Maker in the Sycamore&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%207.png&#34; alt=&#34;7 Widow-Maker in the SW Oak&#34;&gt;
  &lt;figcaption&gt;Widow-Maker in the SW Oak&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%208.png&#34; alt=&#34;8 SW Corner of the House After Cleanup&#34;&gt;
  &lt;figcaption&gt;SW Corner of the House After Cleanup&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%209.png&#34; alt=&#34;9 Across the Street Looking South - After Cleanup&#34;&gt;
  &lt;figcaption&gt;Across the Street Looking South - After Cleanup&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2011.png&#34; alt=&#34;11 The SE Oak - After Cleanup&#34;&gt;
  &lt;figcaption&gt;The SE Oak - After Cleanup&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2012.png&#34; alt=&#34;12 NE Corner of the House - After Cleanup&#34;&gt;
  &lt;figcaption&gt;NE Corner of the House - After Cleanup&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2013.png&#34; alt=&#34;13 NE Corner of the House - After Cleanup with Alliant&amp;rsquo;s Line Hanging Limp&#34;&gt;
  &lt;figcaption&gt;NE Corner of the House - After Cleanup with Alliant&amp;#39;s Line Hanging Limp&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;the-kansas-city-chiefs---still-world-champs&#34;&gt;The Kansas City Chiefs - Still World Champs&lt;/h3&gt;
&lt;p&gt;After closing the hot tub cover I made sure to get out and untangle my KC Chiefs flag!&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2043.png&#34; alt=&#34;43 SE Corner of the House - After I Untangled the Chief&amp;rsquo;s Flag&#34;&gt;
  &lt;figcaption&gt;SE Corner of the House - After I Untangled the Chief&amp;#39;s Flag&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;our-800-savior&#34;&gt;Our $800 Savior&lt;/h3&gt;
&lt;p&gt;On Wednesday morning, August 12, I got word that some of the big-box hardware stores in Cedar Rapids and Waterloo were receiving shipments of portable generators. They were being sold on a first-come basis, right off the truck, so Morgan and I got in the van and headed to Waterloo as fast as possible&amp;hellip;we got one at Lowe&amp;rsquo;s for $800.  Had to wait in line for a couple of hours too, but managed to get home mid-afternoon with the generator, some ice and gasoline. None of those things would be available locally until Friday, August 14.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2016.png&#34; alt=&#34;16 Our Savior&#34;&gt;
  &lt;figcaption&gt;Our Savior&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;my-biggest-remaining-concern---broken-at-the-base&#34;&gt;My Biggest Remaining Concern - Broken at the Base?&lt;/h3&gt;
&lt;p&gt;My biggest remaining worry is the pine tree at the NW corner of the house.  On Thursday, August 13, during clean-up I discovered that the bark on the SE side of the tree is &amp;ldquo;crushed&amp;rdquo; as you can see in the image below, and there&amp;rsquo;s a visible &amp;ldquo;crack&amp;rdquo; on the NW side of the tree right at ground-level. Upon closer inspection it looks like the tree is leaning about 5°, naturally right toward our house. &amp;#x1f61f;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%201.png&#34; alt=&#34;1 Broken at the Base?&#34;&gt;
  &lt;figcaption&gt;Broken at the Base?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;houston-we-have-a-problem-or-the-eagle-has-landed&#34;&gt;Houston, We Have a Problem OR The Eagle Has Landed!&lt;/h3&gt;
&lt;p&gt;One block west of our house there&amp;rsquo;s a bank, and it used to have a large golden-colored eagle atop it&amp;rsquo;s electronic sign at the intersection of Summit Street and US Highway 63.  When we told folks from out-of-town how to find us we would always use that eagle as a navigational aid, telling them to find the eagle and head one block east to our house.&lt;/p&gt;
&lt;p&gt;Well, our navigational aid got its wings during the storm.  As you can see in the photos below, the eagle &amp;ldquo;flew&amp;rdquo; about 200 feet and landed in the bank&amp;rsquo;s lawn.&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2033.png&#34; alt=&#34;33 The Eagle Has Landed!&#34;&gt;
  &lt;figcaption&gt;The Eagle Has Landed!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2035.png&#34; alt=&#34;35 The Eagle&amp;rsquo;s Flight Path - Panoramic&#34;&gt;
  &lt;figcaption&gt;The Eagle&amp;#39;s Flight Path - Panoramic&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h3 id=&#34;with-no-apparent-structural-damage-we-were-luckier-than-some&#34;&gt;With No Apparent Structural Damage, We Were Luckier Than Some&lt;/h3&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Derecho%20-%2036.png&#34; alt=&#34;36 Formerly Thys Chevrolet - 1/2-mile from Home&#34;&gt;
  &lt;figcaption&gt;Formerly Thys Chevrolet - 1/2-mile from Home&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/IMG_2157.jpeg&#34; alt=&#34;Just One of Several Collapsed Buildings on My In-Law&amp;rsquo;s Farm&#34;&gt;
  &lt;figcaption&gt;Just One of Several Collapsed Buildings on My In-Law&amp;#39;s Farm&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;h2 id=&#34;oak-hill-cemetery---august-20-2020&#34;&gt;Oak Hill Cemetery - August 20, 2020&lt;/h2&gt;
&lt;p&gt;Since all the Alliant trucks rolled past our house around 10 AM this morning, I thought it was time to visit Ian and my parents at Oak Hill Cemetery. Frustrations at home certainly weren&amp;rsquo;t getting any better so I felt like getting away to take a deep breath and realign my perspective a little.  Oak Hill usually does that for me.&lt;/p&gt;
&lt;p&gt;Oak Hill Cemetery is well-named&amp;hellip;it blankets the hill with Ian and my parents&amp;rsquo; graves near the very top, and there are lots of oaks, but even more pines. Well, there used to be anyway.&lt;/p&gt;
&lt;p&gt;This is perhaps another case where photos tell the story better than I.  However, I&amp;rsquo;m not sure the few photos I took will reflect the scale of the devastation. For starters, the main road up to the cemetery is still blocked, as are the three entrances into the original cemetery. Fortunately, the newest section where there are no mature trees, was relatively clear. So, Morgan and I were able to drive in and park about 100 yards from the hilltop.&lt;/p&gt;
&lt;p&gt;This is a glimpse of what we found there&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Photo-2020-08-20-19-41.jpeg&#34; alt=&#34;Oak Hill Cemetery from Near the Hilltop Looking South&#34;&gt;
  &lt;figcaption&gt;Oak Hill Cemetery from Our Parked Car, Looking South&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Photo-2020-08-20-19-43.jpeg&#34; alt=&#34;180 Degree Panorama&#34;&gt;
  &lt;figcaption&gt;Oak Hill Cemetery - 180 Degree Panorama&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;I could not bear to shoot the panorama over the opposing 180° view&amp;hellip;it was just too sad. &amp;#x1f622;&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Photo-2020-08-20-19-49.jpeg&#34; alt=&#34;The Big Pine Near the McFate Plots&#34;&gt;
  &lt;figcaption&gt;The Big Pine Near the McFate Plots&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;The broken pine, shown above, is, or was, near my parents&amp;rsquo; graves, and you can see their shared headstone just to the right in the image above.  My son, Ian, is buried a little to the left of the edge of the image, but you can&amp;rsquo;t see that grave from this angle because of all the tree debris. &lt;a href=&#34;https://coord.info/GC4BG3B&#34;&gt;&amp;ldquo;Ian&amp;rsquo;s Cache&amp;rdquo;, GC4BG3B&lt;/a&gt; is somewhere inside or under that tree. I looked for the container for about 15 minutes this morning, but came up empty-handed. &amp;#x1f626;&lt;/p&gt;
&lt;p&gt;Fortunately, when the ol&amp;rsquo; tree fell it missed Ian&amp;rsquo;s grave by a few feet. We got lucky and found all four of the clear acrylic cylinders that used to adorn his grave. They are all intact, but need a little TLC before we put them all back out.&lt;/p&gt;
&lt;p&gt;My parents&amp;rsquo; headstone is in good shape, but another tree toppled the nearby stone marker for my aunt, Dorothy Paddleford. I&amp;rsquo;ll see to it that gets fixed soon.&lt;/p&gt;
&lt;p&gt;A few weeks ago my brother-in-law, Dennis, set in-motion a plan to install an engraved stone bench as a memorial for my sister, Marlene McFate Burkheimer. It was to be placed not far from the cemetery road at the very top of the hill, about 50&amp;rsquo; from the big pine.  At one time we thought about looking into wrapping a bench around that ol&amp;rsquo; pine to provide a nice place, in the shade, to sit and relax. However, providing a concrete base for such a bench would have been very difficult. Maybe if the pine&amp;rsquo;s stump is removed we can place the bench where the tree was, and maybe one day plant another tree to provide the shady spot we hoped for?&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/2020-Aug-10-Derecho/Photo-2020-08-20-19-51.jpeg&#34; alt=&#34;Another View to the South from Ian&amp;rsquo;s Grave - The Road is Still Impassable&#34;&gt;
  &lt;figcaption&gt;Another View to the South from Ian&amp;#39;s Grave - The Road is Still Impassable&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;Tomorrow morning I plan to contact the City of Tama and the Oak Hill Cemetery Association to see about volunteering to help with clean-up. I think they are going to want all the help they can get in the coming weeks and months.&lt;/p&gt;
&lt;h2 id=&#34;gnight&#34;&gt;G&amp;rsquo;night&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s late-evening again, but at least now I have some real lights to work by.  Tomorrow I need to start reprogramming all the devices that have been dead for 11.5 days, and begin making up for as many days of missed work. Time for bed. G&amp;rsquo;night all.&lt;/p&gt;
&lt;p&gt;Until next time&amp;hellip; but I hope there&amp;rsquo;s never another &amp;ldquo;next time&amp;rdquo; quite like this one!&lt;/p&gt;</description>
      </item>
      
    
      
      <item>
        <title>Pandemic Pastime: Walking and Picking Up Trash</title>
        <link>https://blog.summittdweller.com/posts/2020/08/trash-walks/</link>
        <pubDate>Mon, 03 Aug 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/08/trash-walks/</guid>
        <description>&lt;p&gt;It&amp;rsquo;s been far too long since I posted to this blog; I guess I&amp;rsquo;ve been busy? Nah, not any more than usual, but during the COVID-19 pandemic I have doubled my efforts to get out and walk in the fresh air whenever possible. I&amp;rsquo;m thankful for my small &amp;ldquo;scurry&amp;rdquo; &amp;ndash; that&amp;rsquo;s the term for a collective of squirrels &amp;ndash; who not only take walks with me around Cherry Lake, but all around town.&lt;/p&gt;
&lt;p&gt;About three months ago there was some vandalism at Cherry Lake, and there was a time when folks were leaving lots of trash around the lake.  So our scurry started carrying &amp;ldquo;&lt;a href=&#34;https://ungerconsumer.com/product/36-nifty-nabber/&#34;&gt;Niffty Nabbers&lt;/a&gt;&amp;rdquo; and now we clean up what we can as we walk.  We have even extended the practice beyond the lake, and we generally walk twice a day now, most evenings somewhere in Tama or Toledo away from all the mosquitoes that inhabit Cherry Lake. True to form, we pick up trash as we go.&lt;/p&gt;
&lt;p&gt;I would estimate that both solo and with my scurry, I/we have picked up about 100 pounds of trash so far.&lt;/p&gt;
&lt;p&gt;This past weekend I was thinking&amp;hellip; now that we have expaned to more than just Cherry Lake, it would be nice to plot our routes walked somewhere online so that we can keep track of progress, and see where we haven&amp;rsquo;t been yet. Fortunately, I tend to activate a &amp;ldquo;workout&amp;rdquo; recording on my Apple Watch whenever we go out, and I just realized that those routes can be exported from my iPhone as .gpx files.  So, one day soon I hope to create a new section in this blog where I can post records, with maps, of our excursions. Look for it in this blog soon, or at least sooner or later.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a wrap. Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Home Automation</title>
        <link>https://blog.summittdweller.com/posts/2020/05/home-automation/</link>
        <pubDate>Sat, 09 May 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/05/home-automation/</guid>
        <description>&lt;p&gt;During the &lt;a href=&#34;https://en.wikipedia.org/wiki/COVID-19_pandemic&#34;&gt;COVID-19 pandemic&lt;/a&gt; I decided, while working endlessly from my home office, to resurect the hanging bird feeder outside my office window.  I like having the birds visit, but I&amp;rsquo;ve noticed one problem&amp;hellip; starlings! They are cranky, bully bastards and chase all the welcome visitors away, if I let them. Well, I don&amp;rsquo;t intend to let them anymore. &amp;#x1f601; I won&amp;rsquo;t go into details here but my remedy involves removing the screen from my office window, and occasionally opening the window itself.&lt;/p&gt;
&lt;p&gt;There are two issues with the window&amp;hellip; it&amp;rsquo;s a big, double casement window with a pair of crank mechanisms for opening, and the one that I need to open most often is situated behind my mini-fridge. It&amp;rsquo;s difficult to get to the opener crank, and even hard to open or close it &amp;ldquo;gently&amp;rdquo;. The other issue is that while the window is open my office door needs to be closed so that our house cats won&amp;rsquo;t wander in and decide to &amp;ldquo;escape&amp;rdquo; through the open window. &amp;#x1f63e; I suppose the cats could provide some extra starling deternt, but they are not as selective as I am. If it moves, they want to catch it. &amp;#x1f408;&lt;/p&gt;
&lt;p&gt;The solution, I hope, is to build and install an automated window opener, one that I can control without getting out of my seat. It would also be nice if I had the same option to open, or at least close, my office door. I have a spare &lt;a href=&#34;https://en.wikipedia.org/wiki/Raspberry_Pi&#34;&gt;Raspberry Pi Zero W&lt;/a&gt; and some related parts so that&amp;rsquo;s a start. I&amp;rsquo;ve also just purchased a little &lt;a href=&#34;https://www.amazon.com/gp/product/B07252J5GV/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&amp;amp;psc=1&#34;&gt;High-Torque DC Motor&lt;/a&gt; and a RPI-compatible &lt;a href=&#34;https://www.amazon.com/gp/product/B01MQ2MZDV/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;amp;psc=1&#34;&gt;motor controller&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;web-resources&#34;&gt;Web Resources&lt;/h2&gt;
&lt;p&gt;This post captures the resources I&amp;rsquo;ll use (or used, depending on when you read this) to set my plan in motion. The first step, my &lt;a href=&#34;https://www.one-tab.com/help&#34;&gt;OneTab&lt;/a&gt; that holds my initial web resources: &lt;a href=&#34;https://www.one-tab.com/page/0fj_WcQ0TkG256iDV3EE2g&#34;&gt;https://www.one-tab.com/page/0fj_WcQ0TkG256iDV3EE2g&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;my-build&#34;&gt;My Build&lt;/h2&gt;
&lt;p&gt;Check here for some follow-up soon, I hope.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Adding &#34;Remote Atom&#34; to My DigitalOcean Server</title>
        <link>https://blog.summittdweller.com/posts/2020/03/adding-remote-atom-to-my-digitalocean-server/</link>
        <pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/03/adding-remote-atom-to-my-digitalocean-server/</guid>
        <description>&lt;p&gt;Last evening and early this morning I completed the addition of a new (to me) package to &lt;em&gt;Atom&lt;/em&gt; on my Mac Mini.  The package is &lt;a href=&#34;https://atom.io/packages/remote-atom&#34;&gt;Remote Atom&lt;/a&gt; and I found the configuration to be a little confusing, but in the end it was worth the work.&lt;/p&gt;
&lt;h2 id=&#34;use&#34;&gt;Use&lt;/h2&gt;
&lt;p&gt;The addition and configuration of this package allows me to open an &lt;em&gt;SSH&lt;/em&gt; terminal/session from my Mac Mini to my &lt;em&gt;summitt-dweller-DO-docker&lt;/em&gt; droplet and, with &lt;em&gt;Atom&lt;/em&gt; open locally on my Mac I can issue a command like&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ratom /opt/README.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in the terminal connected to &lt;em&gt;summitt-dweller-DO-docker&lt;/em&gt;, and the specified &amp;ldquo;remote&amp;rdquo; file will open in my local &lt;em&gt;Atom&lt;/em&gt;.  Better still, if I make changes to the file and save them, the remote copy is automatically updated as saved.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;As I said, configuration was a little dicey.  Mine followed exactly what&amp;rsquo;s documented in &lt;a href=&#34;https://atom.io/packages/remote-atom&#34;&gt;the project site&lt;/a&gt;, complete with renaming &lt;code&gt;rmate&lt;/code&gt; to &lt;code&gt;ratom&lt;/code&gt; as suggested.  The real key to configuration has two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;First, &lt;em&gt;Atom&lt;/em&gt; has to be open locally. This is necessary to get the package running so that it can accept connections from the remote, and that also requires that the package is auto-started along with &lt;em&gt;Atom&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next, I added the following specs to &lt;code&gt;~/.ssh/config&lt;/code&gt; on my Mac Mini:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Host 104.248.237.235
  RemoteForward 52698 localhost:52698
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That addition to &lt;code&gt;~/.ssh/config&lt;/code&gt; allows me to run my usual &lt;em&gt;ssh&lt;/em&gt; connection commands without having to specify any remote/reverse tunneling&amp;hellip;the config does it for me automatically when the &amp;ldquo;Host&amp;rdquo; or target is &lt;em&gt;summitt-dweller-DO-docker&lt;/em&gt;.  Without that spec I&amp;rsquo;d have to configure each &lt;em&gt;ssh&lt;/em&gt; connection I open, like so:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh -R 52698:localhost:52698 administrator@104.248.237.235
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s a wrap. Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Launching MacDown from a Terminal</title>
        <link>https://blog.summittdweller.com/posts/2020/03/launching-macdown-from-a-terminal/</link>
        <pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/03/launching-macdown-from-a-terminal/</guid>
        <description>&lt;p&gt;Lately I find that I like to open &lt;em&gt;Markdown&lt;/em&gt; documents in &lt;em&gt;MacDown&lt;/em&gt; rather than &lt;em&gt;Atom&lt;/em&gt;.  This is espeically true of things like &amp;ldquo;README.md&amp;rdquo; documents that I intend to read, but not edit. This can be done without any special configuration, assuming &lt;em&gt;MacDown&lt;/em&gt; is installed and working.  To do that use a syntax like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;open -b com.uranusjr.macdown path/to/document.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A command I&amp;rsquo;ve been using quite often today is: &lt;code&gt;open -b com.uranusjr.macdown ~/GitHub/dg-isle/docs/install/install-local-migrate.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a wrap. Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Migrating the Wieting Site in Drupal 8</title>
        <link>https://blog.summittdweller.com/posts/2020/02/migrating-the-wieting-site-in-drupal-8/</link>
        <pubDate>Fri, 28 Feb 2020 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2020/02/migrating-the-wieting-site-in-drupal-8/</guid>
        <description>&lt;h1 id=&#34;migrating-the-wieting-site-in-drupal-8&#34;&gt;Migrating the Wieting Site in Drupal 8&lt;/h1&gt;
&lt;p&gt;Sorry for my extended absence here, I&amp;rsquo;ve been uber-busy with work, but have also been able to work a little (lots of long nights and weekends) on a long-overdue update of &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;https://Wieting.TamaToledo.com&lt;/a&gt; in &lt;em&gt;Drupal 8&lt;/em&gt;.  It&amp;rsquo;s true, I have been thinking about moving that site to make it static, almost certainly using &lt;em&gt;Hugo&lt;/em&gt;, but I thought before doing so I&amp;rsquo;d give &lt;em&gt;Drupal 8&lt;/em&gt; one more try.  I&amp;rsquo;m pleased to report that it&amp;rsquo;s working nicely again.  Here&amp;rsquo;s how I did it, and how I plan to keep it updated&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;saved-by-docker-compose-drupal&#34;&gt;Saved by &amp;ldquo;docker-compose-drupal&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;I actually started the process of migrating and updating &lt;a href=&#34;https://wieting.tamatoledo.com&#34;&gt;the Wieting website&lt;/a&gt; in &lt;em&gt;Docksal&lt;/em&gt;, but I failed&amp;hellip; I could never figure out how to reliably and easily push my work to production from there.  &lt;em&gt;Docksal&lt;/em&gt; just seems to wrap so much of itself into the &lt;code&gt;cli&lt;/code&gt; container that drives it, I found it difficult to de-couple from that in production.&lt;/p&gt;
&lt;p&gt;So I went looking elsewhere and discovered &lt;a href=&#34;https://devwithlando.org&#34;&gt;Lando&lt;/a&gt;, and I did considerable work with it because &lt;em&gt;Lando&lt;/em&gt;, at least in the case of &lt;em&gt;Drupal&lt;/em&gt;, builds a 3-part development stack that looks a lot like what I wanted to deploy in production.  The parts of a &lt;em&gt;Lando&lt;/em&gt; stack, and my production stack, are the same:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;code&gt;nginx&lt;/code&gt; web server container,&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;mysql&lt;/code&gt; or &lt;code&gt;mariadb&lt;/code&gt; database container, and&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;php&lt;/code&gt; codebase container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But once again I had trouble figuring out exactly how to push that development stack to production.  So, I went looking again for an open (and by that I mean &amp;ldquo;free&amp;rdquo; and freely modifiable) production-ready stack configuration that uses the 3-parts I had in mind.  I found &lt;a href=&#34;https://github.com/mogtofu33/docker-compose-drupal&#34;&gt;docker-compose-drupal&lt;/a&gt; and almost immediately created &lt;a href=&#34;https://github.com/SummittDweller/docker-compose-drupal&#34;&gt;my own fork&lt;/a&gt; of that project. Using &lt;a href=&#34;https://github.com/SummittDweller/docker-compose-drupal&#34;&gt;my &lt;code&gt;docker-compose-drupal&lt;/code&gt; fork&lt;/a&gt; I set off to build a production instance, NOT a development instance, on my &lt;code&gt;summitt-dweller-DO-docker&lt;/code&gt; droplet at &lt;em&gt;DigitalOcean&lt;/em&gt;.  That project came to life in &lt;code&gt;/opt/docker-compose-drupal&lt;/code&gt; there.&lt;/p&gt;
&lt;p&gt;The evolution of &lt;code&gt;summitt-dweller-DO-docker:/opt/docker-compose-drupal&lt;/code&gt; was quite an adventure, in large part because the &lt;em&gt;Wieting&amp;rsquo;s&lt;/em&gt; web site had gone almost a year without any updates.  That meant upgrading the &lt;em&gt;Drupal&lt;/em&gt; core from version 8.2.? to version 8.8.2, along with countless modules that had changed rather dramatically, so there were lots of bumps along the way.  I also had to move the site from a multi-site configuration, the old site lived in a container at &lt;code&gt;/var/www/html/web/sites/wieting&lt;/code&gt;, to a &lt;em&gt;default&lt;/em&gt; configuration that lives in the container at &lt;code&gt;/var/www/localhost/web/sites/default&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;a href=&#34;https://github.com/mogtofu33/docker-compose-drupal&#34;&gt;docker-compose-drupal&lt;/a&gt; includes some nice scripts and features to help with things like that, and they are nicely documented in the &lt;a href=&#34;https://github.com/mogtofu33/docker-compose-drupal/blob/master/README.md&#34;&gt;project&amp;rsquo;s README.md&lt;/a&gt; file.  I&amp;rsquo;ll elaborate on a few of the key features later in this post, but most of what I did during the migration and update is water-under-the-bridge, and should not need to be repeated, ever, so I won&amp;rsquo;t elaborate on all of it here.  It&amp;rsquo;s worth noting here that the work I did in my fork all happened in a branch named &lt;code&gt;wieting&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;moved-to-wieting-d8-do&#34;&gt;Moved to &amp;ldquo;wieting-D8-DO&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Once I had a new site working as I&amp;rsquo;d hoped, I wanted to begin a fresh new development and update cycle, so I used a process I&amp;rsquo;ve documented in my work blog: &lt;a href=&#34;https://static.grinnell.edu/blogs/McFateM/posts/065-create-new-github-project-from-a-branch/&#34;&gt;&amp;ldquo;How to Create a New GitHub Repo from an Existing Branch&amp;rdquo;&lt;/a&gt;. That work created the &lt;em&gt;Wieting&lt;/em&gt; site&amp;rsquo;s new home, &lt;a href=&#34;https://github.com/SummittDweller/wieting-D8-DO&#34;&gt;https://github.com/SummittDweller/wieting-D8-DO&lt;/a&gt;, based on the &lt;em&gt;wieting&lt;/em&gt; branch of the aforementioned fork of &lt;em&gt;docker-compose-drupal&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;site-update-workflow&#34;&gt;Site Update Workflow&lt;/h2&gt;
&lt;p&gt;Having built the &lt;a href=&#34;https://github.com/SummittDweller/wieting-D8-DO&#34;&gt;wieting-D8-DO&lt;/a&gt; project I need a reliable workflow that I could use to keep it up-to-date.  I created that workflow by migrating the existing production site at &lt;code&gt;summitt-dweller-DO-docker:/opt/docker-compose-drupal&lt;/code&gt;, where it responded as &lt;em&gt;&lt;a href=&#34;https://Wieting.TamaToledo.org&#34;&gt;https://Wieting.TamaToledo.org&lt;/a&gt;&lt;/em&gt;, to a new staging copy at &lt;code&gt;summitt-dweller-DO-docker:/opt/wieting-D8-DO&lt;/code&gt;, where it would respond, temporarily, at my designated &amp;ldquo;staging&amp;rdquo; address, &lt;em&gt;&lt;a href=&#34;https://Wieting.SummittServices.com&#34;&gt;https://Wieting.SummittServices.com&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;While working as &lt;em&gt;administrator&lt;/em&gt; on &lt;code&gt;summitt-dweller-DO-docker&lt;/code&gt; the entire command-line process looked like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo $(date --iso-8601)
cd /opt/docker-compose-drupal
git ls-files --others --ignored --exclude-standard &amp;gt; $(date --iso-8601).ignored.list
tar czvf $(date --iso-8601).ignored.list.tar.gz --files-from $(date --iso-8601).ignored.list
gpg --encrypt --recipient summitt.dweller@gmail.com $(date --iso-8601).ignored.list.tar.gz
rm -fr $(date --iso-8601).ignored.list.tar.gz
cd /opt
git clone https://github.com/SummittDweller/wieting-D8-DO.git
cd wieting-D8-DO
cp -f ../docker-compose-drupal/2020-02-27.ignored.list.tar.gz.gpg .
gpg --decrypt 2020-02-27.ignored.list.tar.gz.gpg &amp;gt; ignored.tar.gz
tar xzvf ignored.tar.gz
rm -f ignored.tar.gz
cd ../docker-compose-drupal
scripts/mysql dump
mv -f database/dump/dump.sql /opt/wieting-D8-DO/database/mysql-init
cd /opt/wieting-D8-DO
nano .env
nano docker-compose.yml
docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;breaking-the-workflow-down&#34;&gt;Breaking the Workflow Down&lt;/h3&gt;
&lt;p&gt;Moving the site from &lt;code&gt;/opt/docker-compose-drupal&lt;/code&gt; and &lt;a href=&#34;https://Wieting.TamaToledo.com&#34;&gt;https://Wieting.TamaToledo.com&lt;/a&gt;, to &lt;code&gt;/opt/wieting-D8-DO&lt;/code&gt; and &lt;a href=&#34;https://Wieting.SummittServices.com&#34;&gt;https://Wieting.SummittServices.com&lt;/a&gt; is a command-line process like this, with comments&amp;hellip;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Comments / Commands&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;# Set the working directory to the server&amp;rsquo;s project root, then &lt;code&gt;git clone&lt;/code&gt; the &lt;em&gt;wieting-D8-DO&lt;/em&gt; project.&lt;br/&gt; &lt;code&gt;cd /opt&lt;/code&gt; &lt;br/&gt; &lt;code&gt;git clone https://github.com/SummittDweller/wieting-D8-DO.git&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Save today&amp;rsquo;s date in ISO 8601 format to &lt;code&gt;${today}&lt;/code&gt;; we will use it a few times later on. &lt;br/&gt; &lt;code&gt;today=$(date --iso-8601)&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Set working directory to the initial project. Put the site into &amp;lsquo;maintenance_mode&amp;rsquo;, flush all caches, dump a copy of the project&amp;rsquo;s database, move previously dumped databases to an &lt;em&gt;.inactive&lt;/em&gt; directory, and move the dumped database so it will initialze the new site upon startup. &lt;br/&gt; &lt;code&gt;cd /opt/docker-compose-drupal&lt;/code&gt; &lt;br/&gt; &lt;code&gt;scripts/drush sset system.maintenance_mode 1 --input-format=integer&lt;/code&gt; &lt;br/&gt; &lt;code&gt;scripts/drush cr&lt;/code&gt; &lt;br/&gt; &lt;code&gt;scripts/mysql dump -f dump_${today}.sql&lt;/code&gt; &lt;br/&gt; &lt;code&gt;mv -f /opt/wieting-D8-DO/database/mysql-init/*.sql /opt/wieting-D8-DO/database/mysql-init/.inactive/&lt;/code&gt; &lt;br/&gt; &lt;code&gt;mv -f database/dump/dump_${today}.sql /opt/wieting-D8-DO/database/mysql-init/&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Fetch a list of ignored files, then &lt;em&gt;tar&lt;/em&gt; the ignored files to make an archive, and encrypt the tarball for security purposes, then remove the itermediate tarball. &lt;br/&gt; &lt;code&gt;git ls-files --others --ignored --exclude-standard &amp;gt; ${today}.ignored.list&lt;/code&gt; &lt;br/&gt; &lt;code&gt;tar czvf ${today}.ignored.list.tar.gz --files-from ${today}.ignored.list&lt;/code&gt; &lt;br/&gt; &lt;code&gt;gpg --encrypt --recipient summitt.dweller@gmail.com ${today}.ignored.list.tar.gz&lt;/code&gt; &lt;br/&gt; &lt;code&gt;rm -fr ${today}.ignored.list.tar.gz&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Now set the working directory to the new project, copy the tarball from the old site to the new one, decrypt and then restore/extract the tarball contents, and finally, remove the intermediate tarball. &lt;br/&gt; &lt;code&gt;cd /opt/wieting-D8-DO&lt;/code&gt; &lt;br/&gt; &lt;code&gt;cp -f ../docker-compose-drupal/${today}.ignored.list.tar.gz.gpg .&lt;/code&gt; &lt;br/&gt; &lt;code&gt;gpg --decrypt ${today}.ignored.list.tar.gz.gpg &amp;gt; ignored.tar.gz&lt;/code&gt; &lt;br/&gt; &lt;code&gt;tar xzvf ignored.tar.gz&lt;/code&gt; &lt;br/&gt; &lt;code&gt;rm -f ignored.tar.gz&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Working in the new directory, edit the &lt;em&gt;.env&lt;/em&gt; file to set &lt;code&gt;PROJECT_NAME&lt;/code&gt;, &lt;code&gt;NGINX_HOST_HTTP_PORT&lt;/code&gt; and &lt;code&gt;NGINX_HOST_HTTPS_PORT&lt;/code&gt; that won&amp;rsquo;t conflict with existing names. &lt;br/&gt; &lt;code&gt;nano .env&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Still in the new directory, edit the &lt;em&gt;docker-compose.yml&lt;/em&gt; file to set the &lt;em&gt;nginx&lt;/em&gt; service &lt;code&gt;labels:&lt;/code&gt; to include  &lt;code&gt;traefik.frontend.rule=Host:wieting.SummittServices.com&lt;/code&gt;, to properly address the new site. &lt;br/&gt; &lt;code&gt;nano docker-compose.yml&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Spin up the new site for testing. &lt;br/&gt; &lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;# Turn off &amp;lsquo;maintenance_mode&amp;rsquo; in both sites. &lt;br/&gt; &lt;code&gt;/opt/docker-compose-drupal/scripts/drush sset system.maintenance_mode 0 --input-format=integer&lt;/code&gt; &lt;br/&gt; &lt;code&gt;/opt/wieting-D8-DO/scripts/drush sset system.maintenance_mode 0 --input-format=integer&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That worked nicely!  Time to end this saga, but I&amp;rsquo;ll return shortly, in another post, to document my workflow for ongoing maintenance and updates.  Until next time&amp;hellip;&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Testing My ExternalURL Feature</title>
        <link>https://blog.summittdweller.com/posts/2019/08/grocy-in-docker-and-docksal-post/</link>
        <pubDate>Sun, 11 Aug 2019 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2019/08/grocy-in-docker-and-docksal-post/</guid>
        <description>&lt;p&gt;Really just testing out this blog&amp;rsquo;s &lt;code&gt;externalurl&lt;/code&gt; feature here.  Click on the &lt;a href=&#34;https://static.grinnell.edu/blogs/McFateM/posts/036-building-grocy-in-docksal/&#34;&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/a&gt; at the head of this post to see my &amp;ldquo;professional&amp;rdquo; post about building &lt;a href=&#34;https://grocy.info/&#34;&gt;Grocy&lt;/a&gt; in Docker and &lt;a href=&#34;https://docksal.io&#34;&gt;Docksal&lt;/a&gt;.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>My Photos Workflow</title>
        <link>https://blog.summittdweller.com/posts/2019/07/my-photo-workflow/</link>
        <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2019/07/my-photo-workflow/</guid>
        <description>&lt;p&gt;I recently returned from vacation in Norway with a few hundred photos and a handful of videos, taken mostly using my iPhone 8.  I find that the Apple Photos app does a pretty nice job of cataloging photos and videos into &lt;code&gt;Moments&lt;/code&gt;.  Each &lt;code&gt;Moment&lt;/code&gt; includes all the images taken in a single day, and sometimes in a particular location, if photos are taken on the same day, but a great distance apart.&lt;/p&gt;
&lt;p&gt;Moment names from my Norway vacation were nicely descriptive, like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Minneapolis-Saint Paul International Airport - Minneapolis, MN, June 11, 2019&lt;/li&gt;
&lt;li&gt;Paris Charles de Gaulle Airport - Mauregard, Île-de-France, June 12, 2019&lt;/li&gt;
&lt;li&gt;Jessheim - Akershus, June 12, 2019&lt;/li&gt;
&lt;li&gt;Kirkenes, Finnmark - Johan Knudtzens gate, June 12, 2019&lt;/li&gt;
&lt;li&gt;Kirkenes, Finnmark - Dr. Wessels gate, June 13, 2019&lt;/li&gt;
&lt;li&gt;Kirkenes, Finnmark - Johan Knudtzens gate, June 14, 2019&lt;/li&gt;
&lt;li&gt;Skarsvåg - Finnmark, June 14, 2019&lt;/li&gt;
&lt;li&gt;Arnøyhamn - Norway, June 15, 2019&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;exporting-the-photos&#34;&gt;Exporting the Photos&lt;/h2&gt;
&lt;p&gt;I found &lt;a href=&#34;https://support.apple.com/guide/photos/export-photos-videos-and-slideshows-pht6e157c5f/mac&#34;&gt;this resource&lt;/a&gt; on the web and followed it for the export portion of my process.&lt;/p&gt;
&lt;p&gt;So, I opened &lt;code&gt;Photos&lt;/code&gt; on my Mac Mini, selected the &lt;code&gt;Moments&lt;/code&gt; view/tab, culled some of the duplicates out, then selected all 359 remaining images using my mouse.  With the images highlighted I selected menu options: &lt;code&gt;File&lt;/code&gt;, &lt;code&gt;Export&lt;/code&gt;, and &lt;code&gt;Export 359 Photos...&lt;/code&gt;. I subsequently filled in the following dialog like so:&lt;/p&gt;
&lt;p&gt;&lt;!-- hugo: layouts/_default/_markup/render-image.html --&gt;
&lt;figure&gt;
  &lt;img src=&#34;https://images.summittdweller.com/Norway-Photos-2019/PhotosExportDialog.png&#34; alt=&#34;Photos Export Dialog&#34;&gt;
  &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- /hugo: layouts/_default/_markup/render-image.html --&gt;&lt;/p&gt;
&lt;p&gt;I choose a &amp;lsquo;Photo Kind&amp;rsquo;, or format, equal to &lt;code&gt;PNG&lt;/code&gt; and a &amp;lsquo;Size&amp;rsquo; equal to &lt;code&gt;Medium&lt;/code&gt;, since most of the images are huge and would load very slowly in my blog if left at their original size.  I elected to save the exported PNG images into a new folder on my &lt;code&gt;~/Desktop&lt;/code&gt; named &lt;code&gt;Norway-Medium-PNG-Export&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;upload-to-digital-ocean-spaces&#34;&gt;Upload to Digital Ocean &amp;ldquo;Spaces&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;A few days ago I registered with &lt;em&gt;Digital Ocean&lt;/em&gt; &lt;a href=&#34;https://cloud.digitalocean.com/spaces?i=d7d6c7&#34;&gt;&amp;ldquo;Spaces&amp;rdquo;&lt;/a&gt;, and created my first &amp;ldquo;bucket&amp;rdquo; named &lt;code&gt;images-summittdweller&lt;/code&gt;. &lt;em&gt;Spaces&lt;/em&gt; provides me with up to 280 GB of REST-accessible object storage for a small monthly fee.  To host my photos there I simply created a &amp;ldquo;folder&amp;rdquo; named &lt;a href=&#34;https://cloud.digitalocean.com/spaces/images-summittdweller?i=d7d6c7&amp;amp;path=Norway-Photos-2019%2F&#34;&gt;Norway-Photos-2019&lt;/a&gt; and did a drag-n-drop of each &lt;code&gt;~/Desktop/Norway-Medium-PNG-Export/&lt;/code&gt; individual* folder directly into my browser window.  *Note that the drag-n-drop interface was unable to swallow the entire &lt;code&gt;Norway-Medium-PNG-Export&lt;/code&gt; folder all at once. &amp;#x1f61e;&lt;/p&gt;
&lt;p&gt;All of my uploads to the &lt;code&gt;images-summittdweller&lt;/code&gt; bucket were declared as &lt;code&gt;Public&lt;/code&gt; rather than &lt;code&gt;Private&lt;/code&gt;, that way they can be accessed using simple URLs without authentication.&lt;/p&gt;
&lt;h2 id=&#34;additional-images&#34;&gt;Additional Images&lt;/h2&gt;
&lt;p&gt;In addition to the aforementioned photos, I also parked a copy of the &lt;code&gt;PhotosExportDialog.png&lt;/code&gt; screen capture there in the root folder.  It&amp;rsquo;s accessible as &lt;a href=&#34;https://images.summittdweller.com/Norway-Photos-2019/PhotosExportDialog.png&#34;&gt;https://images.summittdweller.com/Norway-Photos-2019/PhotosExportDialog.png&lt;/a&gt; and that&amp;rsquo;s what I used above to embed the image you see in this document.&lt;/p&gt;
&lt;p&gt;In the future, more images, perhaps some taken by Deb, Doug, or Mark McCune, can be added to this photo blog in a similar manner.&lt;/p&gt;
&lt;h2 id=&#34;object-structure-and-urls&#34;&gt;Object Structure and URLs&lt;/h2&gt;
&lt;p&gt;A sampling of the bucket/object/filenames and URLs from &lt;code&gt;images-summittdweller&lt;/code&gt; are tabulated below.  From this small sample the URL structure is easy to infer.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;images-summittdweller Bucket Path&lt;/th&gt;
          &lt;th&gt;URL&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;./Norway-Photos-2019/PhotosExportDialog.png&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://images.summittdweller.com/Norway-Photos-2019/PhotosExportDialog.png&#34;&gt;https://images.summittdweller.com/Norway-Photos-2019/PhotosExportDialog.png&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;./Norway-Photos-2019/Minneapolis-Saint Paul International Airport - Minneapolis, MN, June 11, 2019/IMG_0352.png&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://images.summittdweller.com/Norway-Photos-2019/Minneapolis-Saint%20Paul%20International%20Airport%20-%20Minneapolis,%20MN,%20June%2011,%202019/IMG_0352.png&#34;&gt;https://images.summittdweller.com/Norway-Photos-2019/Minneapolis-Saint%20Paul%20International%20Airport%20-%20Minneapolis,%20MN,%20June%2011,%202019/IMG_0352.png&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;./Norway-Photos-2019/Tromsø - Troms, June 15, 2019/IMG_0527.png&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://images.summittdweller.com/Norway-Photos-2019/Troms%C3%B8%20-%20Troms,%20June%2015,%202019/IMG_0527.png&#34;&gt;https://images.summittdweller.com/Norway-Photos-2019/Troms%C3%B8%20-%20Troms,%20June%2015,%202019/IMG_0527.png&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;generating-markdown-for-blog-photos&#34;&gt;Generating Markdown for Blog Photos&lt;/h2&gt;
&lt;p&gt;So the intent of all this is to populate the photo blogs that you see &lt;a href=&#34;./content/photos&#34;&gt;here&lt;/a&gt;. To that end I&amp;rsquo;ve created a simple &lt;a href=&#34;https://www.digitalocean.com/docs/api/&#34;&gt;API&lt;/a&gt; Python3 script based on guidance provided in &lt;a href=&#34;https://www.digitalocean.com/community/questions/how-to-access-all-the-files-stored-in-a-spaces-folder&#34;&gt;this article&lt;/a&gt;.&lt;/p&gt;
</description>
      </item>
      
    
      
      <item>
        <title>Travel...MSP to CDG to OSL to KKN</title>
        <link>https://blog.summittdweller.com/posts/2019/06/norway-here-we-come/</link>
        <pubDate>Wed, 12 Jun 2019 00:00:00 +0000</pubDate>
        <author>Mark McFate</author>
        <guid>https://blog.summittdweller.com/posts/2019/06/norway-here-we-come/</guid>
        <description>&lt;figure&gt;
  &lt;img src=&#34;https://images-summittdweller.nyc3.digitaloceanspaces.com/Norway-Photos-2019/Minneapolis-Saint%20Paul%20International%20Airport%20-%20Minneapolis,%20MN,%20June%2011,%202019/IMG_0352.png&#34; /&gt;
  &lt;figcaption&gt;This was a very long day in the air, and then we discovered the &#34;midnight sun&#34;!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This post is really part of my &lt;a href=&#34;http://weblog-sd.docksal/photos/norway-june-2019/norway-june-2019/&#34;&gt;Norway photo blog&lt;/a&gt; which you can find elsewhere on this site.  Note that the photos here are in reverse-chronological order with the exception of one &amp;ldquo;lead&amp;rdquo; post that lays out our itinerary.  So, read on&amp;hellip;&lt;/p&gt;
&lt;p&gt;I drove the 5 of us, plus luggage, in our mini-van to Minneapolis for our departure, and we left home early just in case there were surprises.  Good thing we did!  I drove US 20 to I35 with a stop in Storm Lake for a late lunch.  Not long after that stop we hit the first snag and found I35 closed, in both directions, just south of the Iowa-Minnesota border.  The stop and detour there set us back about a half hour or so&amp;hellip;no problem.&lt;/p&gt;
&lt;p&gt;We booked and found off-site parking near the airport in Minneapolis, and got dropped off at the correct terminal for &lt;em&gt;Iceland Air&lt;/em&gt;, which will forever be known in this household as &lt;code&gt;Iceland Error&lt;/code&gt;.  That&amp;rsquo;s when things really go interesting.  &lt;code&gt;Iceland Error&lt;/code&gt; had changed our flight, and itinerary, without notice (they have no mobile app).  We would be leaving the US about an hour later, good thing, and arriving in Kirkenes about 16 hours ahead of our original schedule! We weren&amp;rsquo;t even booked on &lt;code&gt;Iceland Error&lt;/code&gt; for our departure, instead we were flying &lt;em&gt;Air France&lt;/em&gt; to Paris, then to Oslo, and connecting directly to Kirkenes.&lt;/p&gt;
&lt;p&gt;The change meant we had to change terminals, back to the terminal we&amp;rsquo;d just come from with luggage in tow. Not fun.&lt;/p&gt;
&lt;p&gt;Ok, so &lt;em&gt;Air France&lt;/em&gt; was GREAT!  They fed us, we had comfortable seats, they dimmed the lights, had nice entertainment, and provided whatever we needed at no extra charge. For the record, &lt;code&gt;Iceland Error&lt;/code&gt; did NONE of that on our return to the U.S.&lt;/p&gt;
&lt;p&gt;But I digress&amp;hellip; We got to Paris without a hitch and in good spirits, found our connecting flight to Oslo and made that leg in good shape.  Then on to Kirkenes rather than staying a night in Oslo, and that was OK, except that Kirkenes isn&amp;rsquo;t a big city, and when we arrived ahead of schedule there was no shuttle waiting for us (the one that did arrive was full), but the good folks there dispatched one especially for us.&lt;/p&gt;
&lt;p&gt;We arrived at our hotel around 11 PM local time, I think.  Of course, it was difficult to tell the time because the sun was still up, and would remain &amp;ldquo;up&amp;rdquo; for pretty much the next 4 days!&lt;/p&gt;
&lt;p&gt;The hotel had only one spare room for the night, so Chris and I took that one, and they arranged for Mark, Deb and Doug to taxi about 30 minutes outside of town to a &amp;ldquo;cabin&amp;rdquo; near the Russian border.  Lucky for them&amp;hellip;they got to set foot, or at least a big toe, in Russia, at about 2 AM, I think.  Silly Americans.  &amp;#x1f601;&lt;/p&gt;
&lt;p&gt;To be honest, I loved the &amp;ldquo;midnight sun&amp;rdquo;, it was great for geocaching, but really put a dent in my already damaged sleep schedule. &amp;#x1f609;&lt;/p&gt;</description>
      </item>
      
    
  </channel>
</rss>
