<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tim&#39;s Blog</title>
    <link>https://www.timatlee.com/</link>
    <description>Recent content on Tim&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>Copyright © 2025, Tim AtLee; all rights reserved.</copyright>
    <lastBuildDate>Sun, 13 Apr 2025 16:56:42 +0000</lastBuildDate><atom:link href="https://www.timatlee.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pihole 6 and HTTPS</title>
      <link>https://www.timatlee.com/post/pihole-6-https/</link>
      <pubDate>Sun, 13 Apr 2025 16:56:42 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/pihole-6-https/</guid>
      <description>
        
          
            &lt;p&gt;I run two PiHole&#39;s in my home network - one as a container on my NAS, the other also as a container on it&#39;s own dedicated VM.&lt;/p&gt;
&lt;p&gt;The idea, in theory, is that as long as the NAS is up, I should have some sort of DNS services around. It&#39;s kinda one of the staples of the network. Switching, routing is up first..  then the NAS.&lt;/p&gt;
&lt;p&gt;PiHole 6 came out recently, so it was time to revisit the container configuration across the board.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Oh AI.</title>
      <link>https://www.timatlee.com/post/oh-ai/</link>
      <pubDate>Sun, 23 Mar 2025 14:58:44 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/oh-ai/</guid>
      <description>
        
          
            &lt;p&gt;Nothing too big here.&lt;/p&gt;
&lt;p&gt;I asked Perplexity for a random 32 characters string for use as a salt for a cookie:&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;The query in question&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;779&#34;
        height=&#34;352&#34;
        src=&#34;https://www.timatlee.com/post/oh-ai/image.png&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;So, neat, copy/paste..  and my app complains that the string is too long.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;4aG7eJ9dLpM8nBcF5tRgYhK6oIuZ1xWvE3cD2sN&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;39&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;I didn&#39;t think it was that hard of an ask...&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Extending Lubelogger</title>
      <link>https://www.timatlee.com/post/lubelogger/</link>
      <pubDate>Sun, 09 Mar 2025 19:35:57 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/lubelogger/</guid>
      <description>
        
          
            &lt;p&gt;I recently found a neat little self-hosted projcet called &lt;a href=&#34;https://lubelogger.com/&#34;&gt;LubeLogger&lt;/a&gt;, which is sorta like a vehicle management tool. This does some neat things like recording my fuel usage (which I&#39;ve been doing for years in a spreadsheet), tracking maintenance and repairs, and scheduling reminders based on milage and/or time.&lt;/p&gt;
&lt;p&gt;The only thing it didn&#39;t do out of the box was handle tire wear. I have summer and winter tires for my vehicles, and I like keeping track of how much distance they&#39;ve travelled.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Access Sharepoint Online With Entra Registration</title>
      <link>https://www.timatlee.com/post/access-sharepoint-online-with-entra-registration/</link>
      <pubDate>Thu, 27 Feb 2025 18:51:40 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/access-sharepoint-online-with-entra-registration/</guid>
      <description>
        
          
            &lt;p&gt;At work, I was recently asked to allow an on-premise Python application access to SharePoint Online (SPO).&lt;/p&gt;
&lt;p&gt;The now-depreciated way would be to go to your SPO site, append &lt;code&gt;/_layouts/15/appregnew.aspx&lt;/code&gt; to the site&#39;s name (so it would look something like &lt;code&gt;https://tenant.sharepoint.com/sites/TestSiteforPythonAPIAccess/_layouts/15/appregnew.aspx&lt;/code&gt;). This is creating an app registration on the specified SPO site, but this method is being depricated: &lt;a href=&#34;https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/retirement-announcement-for-add-ins&#34;&gt;https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/retirement-announcement-for-add-ins&lt;/a&gt;.  It works in my production tenant, but fails in my developer space.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Updates for Debian 12 - Dealing with Pip changes</title>
      <link>https://www.timatlee.com/post/updates-debian-12-dealing-with-pip/</link>
      <pubDate>Mon, 26 Jun 2023 22:18:21 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/updates-debian-12-dealing-with-pip/</guid>
      <description>
        
          
            &lt;h2 id=&#34;stuff&#34;&gt;Stuff&lt;/h2&gt;
&lt;p&gt;So it&#39;s been a little while since I&#39;ve tinkered with this stuff, so I&#39;ve been self-refreshing myself as I go along here.&lt;/p&gt;
&lt;p&gt;The big catalyst for this work was the release of &lt;a href=&#34;https://www.proxmox.com/en/news/press-releases/proxmox-virtual-environment-8-0&#34;&gt;Proxmox 8&lt;/a&gt;. The key takeaway during the upgrade is that it&#39;s a typical Debian upgrade, and so it went more or less without incident. Great!&lt;/p&gt;
&lt;h2 id=&#34;the-things-that-hang-off-proxmox&#34;&gt;The things that hang off Proxmox&lt;/h2&gt;
&lt;p&gt;While the upgrade to Proxmox went fine, there&#39;s a bunch of stuff that &amp;quot;hangs off&amp;quot; Proxmox: A load balancer, a playbook to create cloud images, a backup system, and so on.  Some of these are one-off application installs, or single-purpose VMs that do a specific thing, but in other cases, they&#39;re stuff that I&#39;ve written.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Certbot DNS challenge with Apache and Cloudflare</title>
      <link>https://www.timatlee.com/post/certbot_dns_challenge_with_apache_and_cloudflare/</link>
      <pubDate>Mon, 13 Feb 2023 04:39:43 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/certbot_dns_challenge_with_apache_and_cloudflare/</guid>
      <description>
        
          
            &lt;p&gt;A short post while I am thinking about this - because I sorta figured it out.&lt;/p&gt;
&lt;p&gt;I am still working on sunsetting my monolithic server (well, it&#39;s a glorified desktop with relatively more storage than other hosts on my network), and was working on setting up CheckMK on a newly minted VM.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://checkmk.com/&#34;&gt;CheckMK&lt;/a&gt; is an open-source monitoring solution that I have used at home for some time, and wound up implementing it at work. It&#39;s ..  almost a LAMP stack app, but without the M part.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Proxmox Cloud-init image using Ansible</title>
      <link>https://www.timatlee.com/post/proxmox-cloudinit-image-ansible/</link>
      <pubDate>Fri, 13 Jan 2023 02:45:07 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/proxmox-cloudinit-image-ansible/</guid>
      <description>
        
          
            &lt;p&gt;Whelp, I&#39;m not really certain how I got here..  but at some point, I wound up with a pair of computers running Proxmox with the intent of running Kubernetes. It started out pretty innocently: I watched a TechnoTim video:&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/CbkEWcUZ7zM&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;And it looked neat enough, so sure..  why not, let&#39;s try that out.&lt;/p&gt;
&lt;p&gt;In the video, around the 6:00 minute mark, he makes reference to another video of his - using cloud-init images to make Ubuntu machines:&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Gotcha Day</title>
      <link>https://www.timatlee.com/post/gotcha-day/</link>
      <pubDate>Wed, 11 Jan 2023 15:54:15 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/gotcha-day/</guid>
      <description>
        
          
            &lt;p&gt;One year ago, we welcomed this idiot into our home.&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;563&#34;
        height=&#34;1000&#34;
        src=&#34;https://www.timatlee.com/post/gotcha-day/Image-1.jpg&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;563&#34;
        height=&#34;1000&#34;
        src=&#34;https://www.timatlee.com/post/gotcha-day/Image-2.jpg&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;1000&#34;
        height=&#34;563&#34;
        src=&#34;https://www.timatlee.com/post/gotcha-day/Image-3.jpg&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;563&#34;
        height=&#34;1000&#34;
        src=&#34;https://www.timatlee.com/post/gotcha-day/Image-4.jpg&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;563&#34;
        height=&#34;1000&#34;
        src=&#34;https://www.timatlee.com/post/gotcha-day/Image-5.jpg&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Hopefully he&#39;ll stick around for several years more, taking us on his adventures.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Tinkering With My Home Network</title>
      <link>https://www.timatlee.com/post/tinkering-with-home-network/</link>
      <pubDate>Mon, 26 Dec 2022 23:35:39 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/tinkering-with-home-network/</guid>
      <description>
        
          
            &lt;p&gt;I am not very good at networking stuff together.  I mean, if it&#39;s a simple network, I can usually manage. When it comes to thinking about VLANs and similar topics, I start to get a bit hazy..  but when it gets into configuring devices to carry VLAN traffic, I really need to get back to basics and do a lot of &amp;quot;Ok, make sure X, Y and Z work here. Done..  now, make sure X, Y and Z work &lt;em&gt;there&lt;/em&gt;..&amp;quot;  and so on.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Powershell Set-Acl: an exception of type system.security.principal.identitynotmappedexception was thrown</title>
      <link>https://www.timatlee.com/post/powershell-set-acl-issue/</link>
      <pubDate>Fri, 04 Nov 2022 20:42:18 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/powershell-set-acl-issue/</guid>
      <description>
        
          
            &lt;p&gt;I have this short little PowerShell function that I use all over the place. It simply adds an ACL entry to an object, usually a network folder:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;AddNTFSPermissions($path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$permission&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$FileSystemRights&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Security.AccessControl.FileSystemRights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$permission&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$InheritanceFlag&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Security.AccessControl.InheritanceFlags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;ContainerInherit, ObjectInherit&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$PropagationFlag&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Security.AccessControl.PropagationFlags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;None&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$AccessControlType&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Security.AccessControl.AccessControlType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Allow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$Account&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-TypeName&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Security&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Principal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;NTAccount&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ArgumentList&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$FileSystemAccessRule&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-TypeName&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Security&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;AccessControl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;FileSystemAccessRule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ArgumentList&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Account&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$FileSystemRights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$InheritanceFlag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PropagationFlag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$AccessControlType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$DirectorySecurity&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Acl&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$DirectorySecurity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;AddAccessRule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$FileSystemAccessRule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;Set-Acl&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-AclObject&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$DirectorySecurity&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I didn&#39;t write this function ..  it came from the depths of the internet early on as I was learning PowerShell and using it for all my bits of automation.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Uploading PDF&#39;s to SharePoint Online</title>
      <link>https://www.timatlee.com/post/uploading-pdfs-to-sharepoint-online/</link>
      <pubDate>Fri, 28 Oct 2022 20:49:32 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/uploading-pdfs-to-sharepoint-online/</guid>
      <description>
        
          
            &lt;h2 id=&#34;the-problem&#34;&gt;The problem...&lt;/h2&gt;
&lt;p&gt;I have something like 1200 PDfs, and the list is growing, of deliverables that we own the copywrite to that we want to put in a central place called SharePoint Online. This library will then get the benefit of being searchable, have associated metadata, and &lt;em&gt;should&lt;/em&gt; free up time from a bunch of people for having to search for this information manually.&lt;/p&gt;
&lt;h2 id=&#34;the-solution&#34;&gt;The solution...&lt;/h2&gt;
&lt;p&gt;This took a little while to get to, and some of the iterative steps that transpired between inception and solution are long since gone. That&#39;s OK, that&#39;s how the process worked.  I had to laugh at myself a bit when I started searching for some solutions to the problems I ran into, and found my &lt;a href=&#34;../powershell-itext&#34;&gt;own posts&lt;/a&gt; on the &lt;a href=&#34;../nuget-in-powershell&#34;&gt;topic&lt;/a&gt;...&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Employee Directory in SharePoint Online</title>
      <link>https://www.timatlee.com/post/employee-directory-spo/</link>
      <pubDate>Wed, 19 Oct 2022 01:10:13 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/employee-directory-spo/</guid>
      <description>
        
          
            &lt;h2 id=&#34;the-issue&#34;&gt;The Issue&lt;/h2&gt;
&lt;p&gt;We have been working on a long, slow project to bring some new services online for our staff. One is our &amp;quot;Knowledge Hub&amp;quot;, the other is our &amp;quot;Connect&amp;quot; site - a SharePoint Hub site, linking various functional group&#39;s SharePoint sites together.&lt;/p&gt;
&lt;p&gt;This post is about &amp;quot;Connect&amp;quot;.&lt;/p&gt;
&lt;p&gt;One feature that is seemingly missing in SharePoint online is a straight up employee list. There are a few alternatives - people finders, org chart visualizers, etc..  but we&#39;re a small enough operation, that a list of people is sufficient for our needs. Additionally, another page showing all the staff&#39;s photos has been valuable to help figure who&#39;s who.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Windows Firewall</title>
      <link>https://www.timatlee.com/post/windows-firewall/</link>
      <pubDate>Sat, 02 Apr 2022 03:13:33 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/windows-firewall/</guid>
      <description>
        
          
            &lt;p&gt;Another post with notes from my former to my future self.&lt;/p&gt;
&lt;h2 id=&#34;what-was-i-trying-to-do&#34;&gt;What was I trying to do?&lt;/h2&gt;
&lt;p&gt;We had to wire up a firewall configuration policy for a group of computers so that they&#39;d be prevented from accessing the internet.  Ok, no problem, except that our email comes from Office 365 which happens to be on the internet.&lt;/p&gt;
&lt;p&gt;Microsoft is nice enough to &lt;a href=&#34;https://docs.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide&#34;&gt;publish a list of IP addresses&lt;/a&gt; that are used by Office 365 services and bonus - it looks like its updated pretty frequently!&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Azure Automation</title>
      <link>https://www.timatlee.com/post/azure-automation/</link>
      <pubDate>Thu, 10 Feb 2022 16:00:29 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/azure-automation/</guid>
      <description>
        
          
            &lt;h2 id=&#34;the-problem-to-solve&#34;&gt;The problem to solve...&lt;/h2&gt;
&lt;p&gt;Every so often, I need to automate something. Duh. Today, I would like to manage the group memberships of some Azure AD users. This doesn&#39;t require any local resources so there&#39;s no reason to run this on-premise. There&#39;s also no need to store credentials in the script - that&#39;s what managed identities are for.&lt;/p&gt;
&lt;p&gt;The problem is that every time I do this, I feel like I&#39;m just flailing around in the dark trying to get a working solution to my problem :P&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>&#34;HA&#34; Pihole between Debian, Synology and Docker</title>
      <link>https://www.timatlee.com/post/ha-pihole/</link>
      <pubDate>Mon, 29 Nov 2021 20:52:13 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/ha-pihole/</guid>
      <description>
        
          
            &lt;p&gt;A while back, scrolling through YouTube, I stumbled across a video titled &amp;quot;&lt;a href=&#34;https://https://www.youtube.com/watch?v=IFVYe3riDRA&#34;&gt;High Availability Pi-Hole?  Yes Please!&lt;/a&gt;&amp;quot;, which I thought was interesting - it seemed to address a problem that I didn&#39;t really think I had..  but why not poke around at it?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://pi-hole.net/&#34;&gt;Pi-Hole&lt;/a&gt; is a network-wide ad blocking DNS server. It can function as a DHCP server too, but I figure my router is mighty fine at that.  It&#39;s not very good at custom DNS entries, local CNAMEs and other DNS functionality that I would like.  Since PiHole is basically running DNSMasq under the hood (or, was?  I&#39;m not really clear TBH), this seemed like a bit of a fun project.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Haproxy for Active Directory LDAPS</title>
      <link>https://www.timatlee.com/post/haproxy-ad-ldaps/</link>
      <pubDate>Thu, 25 Nov 2021 04:00:53 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/haproxy-ad-ldaps/</guid>
      <description>
        
          
            &lt;h2 id=&#34;one-more-issue-to-solve&#34;&gt;One more issue to solve...&lt;/h2&gt;
&lt;p&gt;We have one domain controller at work that is kinda critical to the entire operation. I mean, not like this particular server is the only AD server on the site, but it somehow became &lt;em&gt;only&lt;/em&gt; LDAPS server responsible for authentication for non-AD enabled services.&lt;/p&gt;
&lt;p&gt;Like VPN. Like our ERP.&lt;/p&gt;
&lt;p&gt;So when it&#39;s down, it&#39;s a bit of a problem.  We tend to avoid making it go down during operational hours, but nothing is 100% infallible.  Plus with trying to be more hands-off with hosts (I prefer &lt;a href=&#34;http://cloudscaling.com/blog/cloud-computing/the-history-of-pets-vs-cattle/&#34;&gt;cattle instead of pets&lt;/a&gt;), more and more Active Directory specific CVE&#39;s coming out, this one machine is being a bit of a pain in the ass.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Ansible and LetsEncrypt</title>
      <link>https://www.timatlee.com/post/ansible_lets_encrypt/</link>
      <pubDate>Mon, 25 Oct 2021 02:41:04 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/ansible_lets_encrypt/</guid>
      <description>
        
          
            &lt;h2 id=&#34;more-on-the-host-configuration&#34;&gt;More on the host configuration&lt;/h2&gt;
&lt;p&gt;In my last post on this topic, I had left a to-do to get LetsEncrypt setup and running on the host.&lt;/p&gt;
&lt;p&gt;After spending quite a bit of time on the effort and learning what tools were at my disposal, I figured out (pretty late in the process) that.. my initial approach had a considerable flaw:&lt;/p&gt;
&lt;p&gt;No automatic renewals.&lt;/p&gt;
&lt;p&gt;I think I&#39;ve read about running Ansible in more of a &amp;quot;continuous&amp;quot; mode on the endpoint, and in this scenario, I can see my initial method working - the playbook could run on a scheduled task and re-acquire and install the certificates on a periodic basis...  but that&#39;s generally not how I run my stuff, and not how I intend to use this playbook.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Ansible and Host Configuration</title>
      <link>https://www.timatlee.com/post/ansible_host_configuration/</link>
      <pubDate>Sat, 23 Oct 2021 20:29:39 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/ansible_host_configuration/</guid>
      <description>
        
          
            &lt;h2 id=&#34;backstory&#34;&gt;Backstory&lt;/h2&gt;
&lt;p&gt;I think just about everyone of my posts I start with some sort of justification why I&#39;m writing the post.  I don&#39;t really know why ..  other than I think it serves as a good reminder of what I was doing when I wrote the darned post ...&lt;/p&gt;
&lt;p&gt;As usual, these things start off at work.&lt;/p&gt;
&lt;p&gt;We had a bit of a security audit on one of our 3rd party hosts (hosted off-domain in Azure), and it yielded some basic misconfigurations that should get fixed: Some old TLS settings that were no longer supported, updating PHP version, updates to the application to remove unsupported dependencies and so on.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Covid and MS PowerApps</title>
      <link>https://www.timatlee.com/post/covid_powerapps/</link>
      <pubDate>Tue, 19 Oct 2021 02:25:17 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/covid_powerapps/</guid>
      <description>
        
          
            &lt;h2 id=&#34;some-of-my-notes-on-how-we-used-powerapps-to-solve-some-covid-problems-at-work&#34;&gt;Some of my notes on how we used PowerApps to solve some COVID problems at work&lt;/h2&gt;
&lt;p&gt;I should have done this sooner, because I&#39;m not likely to remember all the details too much. This won&#39;t be a &amp;quot;technology post&amp;quot; so much, or even a how-to - maybe more a reminder of the tools we used to solve the problems we ran into when COVID came to town.&lt;/p&gt;
&lt;h2 id=&#34;the-visitor-screening-app&#34;&gt;The Visitor Screening App&lt;/h2&gt;
&lt;p&gt;Out of the gate, we all went home, and for a brief period, it was fine. One location outright closed up, the other location practised what were considered good practices at the time - distancing, cleaning, no sharing, masks and most importantly: No visitors. As we all collectively learned more about the pandemic and looked to re-open, visitors (as in, non-company employees) were being welcomed back into the building.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Cloudflare</title>
      <link>https://www.timatlee.com/post/cloudflare/</link>
      <pubDate>Sun, 12 Sep 2021 21:29:19 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/cloudflare/</guid>
      <description>
        
          
            &lt;h2 id=&#34;and-just-like-that-all-my-base-are-belong-to-cloudflare&#34;&gt;And just like that, all my base are belong to Cloudflare.&lt;/h2&gt;
&lt;h3 id=&#34;it-started-with-dns-&#34;&gt;It started with DNS ...&lt;/h3&gt;
&lt;p&gt;It started out pretty simply: Cloudflare offered front-end caching for your website, provided you ran your DNS through them. They would proxy the connections for me, provide SSL (through Lets Encrypt), and I could still update DNS through an API calls from a handy &lt;a href=&#34;https://github.com/cloudflare/python-cloudflare&#34;&gt;Python library&lt;/a&gt; that enables me to keep a DNS record pointing to my home IP address all the time (I need this for an IPSec tunnel I have to work).&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Maps for Garmin Devices</title>
      <link>https://www.timatlee.com/post/maps-for-garmin-devices/</link>
      <pubDate>Sun, 25 Jul 2021 19:12:51 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/maps-for-garmin-devices/</guid>
      <description>
        
          
            &lt;h2 id=&#34;maps-on-portable-devices&#34;&gt;Maps on portable devices&lt;/h2&gt;
&lt;p&gt;Getting working maps on a mobile device is reasonably straightforward, especially if you&#39;re able to be connected to a cellular service.&lt;/p&gt;
&lt;p&gt;The challenge starts to increase when you may not have connectivity, or have limited bandwidth or speed on your device. Offline maps within tools like Google Maps generally work well enough, but start to become feature limited in terms of POIs.&lt;/p&gt;
&lt;p&gt;And while cellular coverage is obviously great in most parts of civilized Canada, there are still many close destinations that lack connectivity (specifically highway 93 in Alberta).&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Microsoft Defender &amp; Virustotal</title>
      <link>https://www.timatlee.com/post/microsoft-defender-virustotal/</link>
      <pubDate>Wed, 02 Jun 2021 14:20:20 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/microsoft-defender-virustotal/</guid>
      <description>
        
          
            &lt;p&gt;&lt;strong&gt;Say what now?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sure, MS, VirusTotal really is a nefarious site that you should prevent me from going to.&lt;/p&gt;
&lt;p&gt;
  &lt;figure&gt;
  &lt;picture&gt;

    
      
        
        
        
        
        
        
    &lt;img
      loading=&#34;lazy&#34;
      decoding=&#34;async&#34;
      alt=&#34;Microsoft classifying Virustotal as malicious&#34;
      
        class=&#34;image_figure image_internal image_processed&#34;
        width=&#34;1424&#34;
        height=&#34;1164&#34;
        src=&#34;https://www.timatlee.com/post/microsoft-defender-virustotal/Capture.PNG&#34;
      
      
    /&gt;

    &lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Bathroom</title>
      <link>https://www.timatlee.com/post/bathroom/</link>
      <pubDate>Fri, 19 Feb 2021 05:04:53 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/bathroom/</guid>
      <description>
        
          
            &lt;p&gt;We started back in May 6, 2015 - we deconstructed the old bathtub, cut it up, and threw it out.&lt;/p&gt;
&lt;p&gt;The tub had a good crack in the bottom of it, and as it turned out, it had been leaking on to the subfloor below it. Nothing major in terms of damage - most of the water had been soaked up by the wood in the bathtub construction. We bought a replacement tub, installed it, had a plumbing leak, had help fixing it, installed tile, realised we installed tile incorrectly, took it all down...  and there it sat for a while.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Manipulating PDFs with iText in powershell</title>
      <link>https://www.timatlee.com/post/powershell-itext/</link>
      <pubDate>Sun, 07 Feb 2021 16:36:05 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/powershell-itext/</guid>
      <description>
        
          
            &lt;h2 id=&#34;so-i-can-write-a-pdf&#34;&gt;So, I can write a PDF...&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.timatlee.com/post/nuget-in-powershell/&#34;&gt;Last post&lt;/a&gt; I managed to generate an empty PDF with Powershell using iText, after working through dependencies and order of inclusion for running some .NET libraries in powershell. It&#39;s made me wonder if there&#39;s a better way to handle the inclusion of libraries in a Powershell script, and if there&#39;s a better way to &lt;code&gt;Install-Package&lt;/code&gt; that actually handles dependencies correctly..&lt;/p&gt;
&lt;p&gt;However. The point of this whole thing was to automate the processing of some large collections of PDFs.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Nuget in Powershell</title>
      <link>https://www.timatlee.com/post/nuget-in-powershell/</link>
      <pubDate>Thu, 04 Feb 2021 16:36:05 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/nuget-in-powershell/</guid>
      <description>
        
          
            &lt;h2 id=&#34;using-nuget-stuff-in-powershell&#34;&gt;Using nuget stuff in Powershell&lt;/h2&gt;
&lt;p&gt;I was asked to write some automation to deal with several thousand pages of PDF work..  Cool, sounds like something new, and not quite in my wheelhouse, so a good reason to get to some learning. After a bit of searching (and searching through old work), I find that iText7 seems to be the current favourite for working with PDF files in .NET and Java. Since I can use .NET stuff in Powershell, seemed like a good start.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>PnP Powershell - for Sharepoint</title>
      <link>https://www.timatlee.com/post/pnp-powershell/</link>
      <pubDate>Sun, 31 Jan 2021 01:16:14 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/pnp-powershell/</guid>
      <description>
        
          
            &lt;p&gt;Work is &lt;em&gt;finally&lt;/em&gt; getting around to enabling OneDrive for Business (ODFB) for all our users. This is cool, because finally we&#39;ll be able to legit be able to collaborate on stuff - instead of this song and dance of save files to the network, wait for a lock to close and so on.&lt;/p&gt;
&lt;p&gt;One of the things we ran up against is that when you share a file to someone through MS Teams, a copy is uploaded to your ODFB folder &lt;code&gt;Microsoft Teams Chat Files&lt;/code&gt;. That&#39;s fine, except we have a legitimate concern that work will be done in this space, and not be captured in the correct locations for data.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>VSCode, Hugo and developing in Docker</title>
      <link>https://www.timatlee.com/post/vscode-docker/</link>
      <pubDate>Wed, 27 Jan 2021 23:41:10 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/vscode-docker/</guid>
      <description>
        
          
            &lt;p&gt;I attended the &amp;quot;&lt;a href=&#34;https://code.visualstudio.com/vscode-day&#34;&gt;VS Code Day&lt;/a&gt;&amp;quot; event through Meetup, and learned about a neat new function of the IDE for developing in a container. The session was neat and interesting, and opened my eyes up a bit as to what Microsoft intends you to use VSCode for.&lt;/p&gt;
&lt;p&gt;When thinking about the session afterwards, I was trying to apply it to how I work. I have two primary workspaces that I use: Powershell and C++ (for Arduino/ESP type devices). These are defined as a workspace, with specific extensions configured for each. Out of the box, I get to thinking:&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Synology, Docker, Pihole and Cloudflare</title>
      <link>https://www.timatlee.com/post/synology-docker-pihole/</link>
      <pubDate>Sun, 17 Jan 2021 20:56:45 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/synology-docker-pihole/</guid>
      <description>
        
          
            &lt;p&gt;A while ago, I got really sick and tired of dealing with the hardware that Telus shipped me for my residential gateway, and so a new &amp;quot;internal&amp;quot; router was added. Things were good, but then I wanted to do network-wide ad blocking (to deal with ads on streaming devices...), but found that even if I specified an additional DNS server, the router would still advertise itself as a DNS server, as well as any additional DNS server I added.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Gitea and Drone</title>
      <link>https://www.timatlee.com/post/gitea-and-drone/</link>
      <pubDate>Wed, 13 Jan 2021 23:54:46 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/gitea-and-drone/</guid>
      <description>
        
          
            &lt;h1 id=&#34;how-i-got-here&#34;&gt;How I got here...&lt;/h1&gt;
&lt;p&gt;Part of the whole effort to mess around with Docker was to get a better understanding of what people do for continuous integration and continuous deployment - CICD. There are no shortage of services online that do this for you - Github, Azure Devops, Bitbucket..  are all names that are familiar in terms of being able to do CICD.&lt;/p&gt;
&lt;p&gt;I wanted to wire it up on my own, and least understand what the moving parts are.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>More Docker</title>
      <link>https://www.timatlee.com/post/more-docker/</link>
      <pubDate>Sun, 22 Nov 2020 01:30:36 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/more-docker/</guid>
      <description>
        
          
            &lt;p&gt;So, as it turns out, solving the ToDo&#39;s from my last posting was pretty easy. &lt;a href=&#34;https://traefik.io/&#34;&gt;Traefik&lt;/a&gt; solved most of the todo&#39;s / desired outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internal ports 80 and 443 were already occupied by other services, such as my wiki, Git repo, etc. Putting these in a container, and letting Traefik handle the path mapping addressed this.&lt;/li&gt;
&lt;li&gt;Internal addressing is wonky.. I am running PiHole (as a container) on my Synology. This enables DHCP and DNS to be served from something other than my ISP supplied router, which gives me more control.&lt;/li&gt;
&lt;li&gt;Docker Registry proxy was moved to a separate DNS name, which I did configure with my external DNS. Since I want this to be internal only, I then set Traefik to whitelist traffic from my internal network. This will almost for certain break the Lets Encrypt certificate renewal..  we&#39;ll see in 90 days.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I didn&#39;t need to explore DNS Validation for Lets Encrypt - simply creating the DNS record (and then letting Taefik handle it) was sufficient. It&#39;s magic!&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Docker Registry</title>
      <link>https://www.timatlee.com/post/docker-registry/</link>
      <pubDate>Wed, 11 Nov 2020 04:51:26 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/docker-registry/</guid>
      <description>
        
          
            &lt;h2 id=&#34;learning-docker&#34;&gt;Learning Docker&lt;/h2&gt;
&lt;p&gt;I&#39;m still getting my feet wet with Docker, and using it to post my blog page, as well as a few other services that I run for my own usage..  but it didn&#39;t take me long to find out about the &lt;a href=&#34;https://www.docker.com/blog/what-you-need-to-know-about-upcoming-docker-hub-rate-limiting/&#34;&gt;rate limit&lt;/a&gt; that was implemented in early November this year.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Collaboration!</title>
      <link>https://www.timatlee.com/post/collaboration/</link>
      <pubDate>Sun, 18 Oct 2020 21:26:55 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/collaboration/</guid>
      <description>
        
          
            &lt;p&gt;When I started looking at a static site, I first poked at Jekyll. I found a basic theme that I like. It had a bit of a failing though - there was an issue if I had the site in a subdirectory (like timatlee.com/blog/), the navigation links at the top of the header wouldn&#39;t work.&lt;/p&gt;
&lt;p&gt;It seemed like there was an assumption that the site would always be at the domain root, which in my case, turns out isn&#39;t the case.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>Playing with Hugo</title>
      <link>https://www.timatlee.com/post/playing-with-hugo/</link>
      <pubDate>Sat, 17 Oct 2020 04:15:07 +0000</pubDate>
      
      <guid>https://www.timatlee.com/post/playing-with-hugo/</guid>
      <description>
        
          
            &lt;p&gt;I had this bit of a weird thought the other day.&lt;/p&gt;
&lt;p&gt;I&#39;d switched my blog to Wordpress a little while back. The site had been running Drupal, and since we switched from Drupal to Wordpress at work, it&#39;s a great opportunity to mess around with the same platform and do some learning as I went.&lt;/p&gt;
&lt;p&gt;The problem is, is that I&#39;m just not motivated to be a Wordpress developer or site builder. I&#39;m much more enjoying the sysadmin/netadmin thing than being a PHP developer.&lt;/p&gt;
          
          
        
      </description>
    </item>
    
  </channel>
</rss>
